这里记录一下常见的Git针对相关的操作,更多的分支操作和原理分析请看这里:Git 分支
基本操作
查看当前所有分支 *
表示当前检出分支
git branch -a
查看远端分支
git remote show origin
每个分支的最后一次提交
git branch -v
查看已经合并到当前分支的分支,可以安全删除不带 *
的分支
git branch --merged
尚未合并到当前分支的分支,无法删除
git branch --no-merged
创建分支test
git branch test
切换到test分支
git checkout test
创建分支test并切换过去
git checkout -b test
删除已合并的分支
git branch -d test
强制删除未合并的分支
git branch -D test
删除远程分支
git push origin --delete test
删除本地分支存在但远程分支已经不存在的分支
git remote prune origin
更新远程分支列表
git remote update origin --prune
创建并切换到分支serverfix,serverfix跟踪分支origin/serverfix
git checkout -b serverfix origin/serverfix
显示所有分支跟踪详情
git branch -vv
将当前本地分支跟踪指定远程分支
git branch --set-upstream-to=origin/test
高阶用法示例
将本次修改提交到新建分支
有时候出现我在某个分支上做了修改,但是这些修改需要一个新分支来存放。
需要这么操作:
在当前修改的分支上新建分支并切换过去,commit,push之后,修改就被提交到了新分支,并且当前分支不会保留在这些修改。
代码:
git status
# 正在修改的分支上新建分支dev并切换过去
git checkout -b dev
git add .
git commit -m '将修改存到新建分支dev'
# 由于远程没有dev分支,需要指定push分支,远程仓库会创建dev分支
git push origin dev
合并分支流程:
# 列出远程追踪及本地分支,* 表示当前分支
[root@localhost]# git branch -a
* interview
master
remotes/origin/interview
remotes/origin/master
# 切换到需要合并的分支
[root@localhost]# git checkout master
切换到分支 'master'
您的分支落后 'origin/master' 共 1 个提交,并且可以快进。
(使用 "git pull" 来更新您的本地分支)
# 更新到最新版本
[root@localhost]# git pull
更新 1aca3c3..83ffca8
Fast-forward
models/Call.php | 7 ++-----
1 files changed, 2 insertions(+), 5 deletions(-)
# 切换到当前分支
[root@localhost]# git checkout interview
切换到分支 'interview'
您的分支领先 'origin/interview' 共 134 个提交。
(使用 "git push" 来发布您的本地提交)
# 合并分支
[root@localhost]# git merge master
Merge made by the 'recursive' strategy.
models/Call.php | 7 ++-----
1 files changed, 2 insertions(+), 5 deletions(-)
至此, master
分支合并到 interview
分支完成。
将一个分支上的某次提交合并到另一个分支
这个场景很常见,比如正在开发分支 dev
上开发一个模块,目前还不能上线,但是突然提出要将模块中已经写完的一个小部分提交到 master
上去,已提前记录数据;我们就需要将这部分代码从 dev
中找出来,然后把这些提交合并到 master
上去。
# 查看当前dev分支提交记录
git log
commit cafef4004fc466db01093eb6f105beab01de4eba
Author: hasone <52722222@qq.com>
Date: Fri Mar 6 21:40:29 2020 +0800
新功能,处理数据
commit d55e4f89a8346e587181d301358531a7962fa6bf
Author: hasone <52722222@qq.com>
Date: Fri Mar 6 17:43:24 2020 +0800
新功能,自动分配
commit effec5046c2a39b67ba387f538d9f58bc17b5692
Author: xinxin <kaka888999@gmail.com>
Date: Fri Mar 6 17:39:24 2020 +0800
回调记录数据
# 复制需要的代码commitId,比如我需要回调记录数据这次提交
git checkout master
# 合并代码
git cherry-pick effec5046c2a39b67ba387f538d9f58bc17b5692
[master aef364f] 回调记录数据
Date: Mon Mar 9 20:17:18 2020 +0800
2 files changed, 41 insertions(+), 16 deletions(-)
# 推送代码
git push
这其中可能会出现冲突,需要跟正常合并一样解决冲突然后再提交。
参考:
Git 分支 – 分支管理