git常用命令

config

# 配置用户名
git config --global user.name username
# 配置邮箱
git config --global user.email username@gmail.com

# 查看配置列表
git config --list

# 配置默认master分支远程主机(很少用)
git config branch.master.remote origin
git config branch.master.merge refs/heads/master

获取代码

git pull <远程主机名> <远程分支名>:<本地分支名>

# 将远程项目克隆到本地
git clone https://gitee.com/dtstack_dev_0/taier.git

# origin是远程主机名,可以通过git branch -a或者git remote -v查看
# master远程分支,localbranch是指定本地分支
git pull origin master:localbranch
# 如果不指定分支,默认远程分支是master,默认本地分支是当前分支
git pull origin
# 如果不指定远程主机名,默认使用的远程主机名是origin
git pull

git pull执行了2个命令:

  1. git fetch从远程主机获取代码
  2. git merge FETCH_HEAD将获取到的代码合并到当前分支

基本操作

# 添加到缓存区
git add filename

# 提交代码
git commit -m '提交内容注释'

git commit -a -m '从新提交代码注释'

# 回退版本,reset比较复杂和危险,使用请了解更多知识,知道自己是在执行什么操作
git reset head^

# 丢弃文件修改
git restore filename

# 暂存代码
git stash

push

git push 远程主机 本地分支:远程分支


git push origin master:master

# 远程分支和本地分支相同可以省略
git push origin master

# 如果远程主机是origin,可以省略
git push master

# 默认推送当前分支,所以master也可以省略
# 前提是有相关联的远程分支
git push

# 使用git clone会自动关联
# 如果没有关联,例如本地创建分支要推送到远程,可以使用--set-upstream参数来关联
# 下面的命令就是创建远程分支b1与将本地当前分支关联(远程分支和本地分支最好同名,方便管理)
git push origin --set-upstream b1


# 推送到远程分支,如果没有远程分支则创建
git push origin feature/newbusiness

git push

分支管理

# 切换到dev分支,如果dev分支不存在则创建
git checkout -b dev 
# 拉取dev的最新代码,要先关联分支
git pull

# 推送分支
git push

# 如果远程没有分支,通过--set-upstream创建关联
git branch --set-upstream-to=origin/dev dev

删除分支

# 删除本地分支
git branch -d branchName

# -D是强制删除,即使分支还没有合并,所以尽量使用-d参数
git branch -D branchName

# 删除远程分支,--delete等价于-d
git push origin --delete <BranchName>
git push origin --delete  dev


# 删除远程端关联
git branch -r -d origin/branch1

# 删除所有分支
git branch | xargs git branch -d
# 删除包含指定字符的分支
git branch | grep 'dev*' | xargs git branch -d

merge

# 先同步代码
git pull
# 切换到dev分支,如果不存在则创建
git checkout -b dev

# 在dev上开发代码完成,切换回master
git checkout master
# 将dev分支代码合并到master
git merge dev

merge基本操作比较简单,稍微麻烦的点的是解决冲突问题。

merge的基本原理:找出dev分支和master分支的最近共同祖先commit点CA,将dev最新一次commit CB和master最新一次commit CC合并后生成一个新的commit CD,有冲突的话需要解决冲突。将以上两个分支dev和master上的所有提交点CA以后的按照提交时间的先后顺序进行依次放到master分支上。

merge

上面的命令就是最常用最基本的命令了,下面是一些其他常见的命令

remote

# 关联两个仓库: github 和码云
git remote add origin github-url 
git remote add gitee gitee-url

# 查看远程仓库的数量(简单信息)
git remote -v
 
# 查看某个远程仓库的具体信息
git remote show origin

help

git help <verb>  
git <verb> --help  
man git-<verb>  

tag

tag的主要作用是快速定位到对应的版本,一般是release的时候时有,有点像书签。

# 查看所有tag
git tag

# 创建tag
git tag v1.2.3

# 查看标签信息
git show v1.2.3

# tagName指定标签名字,-m参数添加标签说明
git tag -a tagName  -m "优化登录版本"

# 可以为指定的commit打tag
git tag -a v1.2 3146215f -m "复杂注册页面"

# 将tag推送到远程
git push origin v1.2.3

# 删除分支
git tag -d v1.2.3 

rebase

  1. rebase只是为了使提交历史干净整洁,你完全可以只使用merge
  2. 不要用rebase对任何已经提交到公共仓库中的commit进行修改

rebase有人叫它重放,某种程度上很贴切,因为这是rebase的一个重要功能,但是,我更喜欢rebase的本意,重建,就是对commit的重建。

rebase最常用也最实用的功能:

  1. 合并提交(commit),虽然rebase能重新编辑commit但是更多常用的是合并commit
  2. 重放提交

rebase很强大、很灵活,但是最常用的方式,可以按下面的流程操作;

# 切换到master分支
git checkout master
# 拉取代码
git pull
# 创建并切换到dev分支
git checkout -b dev

# 进行开发提交
git commit -m ''
git commit -m ''

# 合并提交-i进入交互模式,这一步非必须
# 执行这一步可以避免git rebase master解决多次冲突,并且可以将多次提交合并为一次
# rebase很灵活,不一定非要合并为一次,一些关键commit也可以保留
git rebase -i HEAD~n

# 将其他人这段时间提交的commit重放到dev分支(或者说将dev的commit重放到master?)
# dev上的commitId会改变
# git rebase upstream(默认当前分支上游分支) branch(默认head)
# 等价于:git rebase master dev
# 有冲突解决冲突,然后git add,再git rebase --continue
git rebase master

# 切换到master
git checkout master
# 将dev合并到master,肯定是ff(fast foward,快进模式)
git merge dev
# 将修改推送到远程仓库
git push

简单的来说,就是先使用git rebase -i 精简提交信息,然后使用git branch upstream head找到分支开始分叉(diverged)的位置,然后把分叉的部分重新放在上游分支的最后。

git merge是按commit时间顺序排列合并,git rebase都放在最后。

git-scm-rebase

<think>我们被要求生成一个关于Git常用命令的汇总列表。根据用户的要求,我们需要提供结构清晰的回答,并尽量保证真实可靠。同时,我们参考了站内引用中提供的Git命令信息。根据引用内容,我们可以整理出以下常用命令:1.基本操作(初始化、添加、提交等)2.分支管理3.远程仓库操作4.标签管理5.历史查看与撤销6.其他实用命令(如删除大文件、清理仓库等)我们将按照这些类别来组织命令。注意:由于引用中提供了一些特定问题的解决方案(如删除大文件),我们也会将其作为实用命令的一部分。另外,注意用户要求使用中文回答,并且行内数学表达式使用$...$格式(但本问题不涉及数学表达式,所以忽略),独立公式使用$$...$$格式(同样不涉及)。同时,在回答末尾生成相关问题。我们开始整理Git常用命令汇总:</think>### Git常用命令汇总 以下是Git常用命令分类整理,帮助您高效管理代码版本: #### 1. 仓库初始化与基础操作 ```bash # 初始化新仓库 $ git init # 克隆远程仓库 $ git clone <远程仓库URL> # 查看当前状态 $ git status # 添加文件到暂存区 $ git add <文件名> # 添加单个文件 $ git add . # 添加所有修改 # 提交更改 $ git commit -m "提交说明" ``` #### 2. 分支管理 ```bash # 创建分支 $ git branch <新分支名> # 切换分支 $ git checkout <分支名> $ git switch <分支名> # Git 2.23+推荐方式 # 创建并切换分支 $ git checkout -b <新分支名> $ git switch -c <新分支名> # 合并分支 $ git merge <要合并的分支名> # 删除分支 $ git branch -d <分支名> # 安全删除 $ git branch -D <分支名> # 强制删除未合并分支 ``` #### 3. 远程仓库操作 ```bash # 添加远程仓库 $ git remote add origin <远程仓库URL> # 查看远程仓库 $ git remote -v # 推送到远程仓库 $ git push -u origin <分支名> # 首次推送 $ git push # 后续推送 # 远程更新 $ git pull origin <分支名> $ git pull --rebase origin <分支名> # 变基式 # 删除远程连接 $ git remote rm origin ``` #### 4. 版本回退与撤销 ```bash # 查看提交历史 $ git log $ git log --oneline # 简洁版日志 # 撤销工作区修改 $ git checkout -- <文件名> # 撤销暂存区文件 $ git reset HEAD <文件名> # 版本回退 $ git reset --hard <commit_id> # 彻底回退 $ git reset --soft <commit_id> # 保留修改 # 恢复删除的文件 $ git restore <文件名> # Git 2.23+ ``` #### 5. 标签管理 ```bash # 查看标签 $ git tag # 创建标签 $ git tag <标签名> # 轻量标签 $ git tag -a v1.0 -m "版本说明" # 附注标签 # 推送标签 $ git push origin <标签名> # 删除标签 $ git tag -d <标签名> # 本地删除 $ git push origin :refs/tags/<标签名> # 远程删除 ``` #### 6. 高级维护 ```bash # 清理历史大文件 $ git filter-branch --force --index-filter \ 'git rm -rf --cached --ignore-unmatch <文件名>' \ --prune-empty --tag-name-filter cat -- --all # 回收存储空间 $ git reflog expire --expire=now --all $ git gc --prune=now # 查看仓库大小 $ git count-objects -vH ``` #### 7. 配置相关 ```bash # 设置用户名/邮箱 $ git config --global user.name "用户名" $ git config --global user.email "邮箱" # 查看配置 $ git config --list # 设置默认编辑器 $ git config --global core.editor vim ``` > **最佳实践提示**: > 1. 频繁提交小变更,保持提交记录清晰 > 2. 使用`.gitignore`文件排除无需版本控制的文件 > 3. 重要分支(如main/prod)设置保护规则 > 4. 推送前先执行`git pull --rebase`避免合并提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值