git branch分支的相关操作

这里记录一下常见的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 分支 – 分支管理

Git详解之分支使用

标题:git branch分支的相关操作

原文链接:https://beltxman.com/2271.html

若无特殊说明本站内容为 行星带 原创,未经同意请勿转载。

Scroll to top