当前位置:   article > 正文

git rebase与可视化工具(sourceTree)提效_mac 设置sourtree 用git rebase 提交

mac 设置sourtree 用git rebase 提交

git rebase在官方文档中解释为:“Reapply commits on top of another base tip”,中文意思为“在另一个基本提示之上重新提交”,简言之变基。

本文先介绍git rebase能做什么,然后如何操做,最后可以使用sourceTree工具提效这些操作。

一、git rebase(变基)能做什么

优点一:合并分支线性化

在git中,如何将两个分支合并到一起,除了git merge命令,git rebase命令也能够做到分支合并。而rebase相比于merge,可以创造更线性的提交历史:

如分支bugfix、main为两个并行开发的分支:C2、C3为bugfix的commit节点,C4为main的commit节点,bugfix为当前分支:

merge与rebase分支合并的效果对比:

git merge main

合并后保留了各个分支的提交路径,并且自动新增了个额外节点(C5),最新引用指向此节点

git rebase main

合并成一个提交路径,并且无新增额外节点

优点二:提交记录明确化

除了分支合并,git rebase也可以把提交记录明确化,将提交进行合并、剔除、修改提交记录内容等操作,代码库的提交历史将会变得明确易懂。比如现在这么多相同提交信息的提交:

先不说这些commit的提交规范,就凭这些很多的重复描述提交,一是不利于团队内的代码review,二是不利于代码回滚:紧急修复情况下,能一眼就知道应该回滚到哪个提交上吗

而git rebase可以把这些重复的合并变成一个,将提交记录清晰化,方便自己与他人

二、git rebase如何操做

这里介绍使用命令行形式,如何来git rebase

1、分支合并:

命令行:

git rebase [<branch>]

一般我们代码开发过程中都会合并下master分支代码,使用 git rebase master 即可

2、交互式合并提交记录

命令行:

git rebase [--interactive | -i] HEAD~[n]
  • --interactive,简写-i,代表交互
  • HEAD~[n],代表从合并最近的 n 次提交纪录

此命令执行后,Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。在实际使用时,所谓的 UI 窗口一般会在文本编辑器——如 Vim 中打开一个文件。

通过举例提交内容,如何将commit_5到commit_1融合成1个提交,进行示意:

1、命令执行

执行

git rebase -i HEAD~5

(等效于 git rebase -i bc1d884 85be143 )其中bc1d884为commit_1的前一个提交(即init节点),85be143为commit_5;提交后,出现vim编辑界面:

介绍下常用命令:

  • p, pick = 保留本次提交记录,不做改变
  • r, reword = 保留代码变更范围,提交说明使用新编辑的内容
  • s, squash = 保留代码变更范围,合并到前一个提交中
  • f, fixup = 保留代码变更范围,丢弃提交说明
  • d, drop = 丢弃本次提交

2、vim编辑

将vim编辑结果如下,可以将5个提交合并成1个,(其中这里也可以调整commit顺序或选取部分commit记录,灵活度大)

  1. pick f73a559 commit_1
  2. s 1d36781 commit_2
  3. s a337fe0 commit_3
  4. s 98c5551 commit_4
  5. s 85be143 commit_5
3、保存执行

保存后,自动执行,出现执行结果交互界面:

这里会把5个提交的提交的内容合并在一起,这里可以重新编辑,简洁提交内容,如简洁为:

4、再次保存执行,变基完成

可以看到5个合并变成了1个合并,并且内容为我们自己自定义的:

5、冲突处理

出现冲突时,git rebase会停止:

1、此时需要解决冲突:当我们冲突处理好后,执行

git add <filename>

可以把冲突文件标记为已解决,冲突文件都解决完毕后执行:

git rebase --continue

继续变基执行,完成变基

2、或者不解决冲突,直接放弃变基:

git rebase --abort

6、提交生效

若变基的是已在远程仓库的提交记录,本地变基完后,需要执行强制推送,进行远程仓库生效:

git push origin [<local_branch>]:[remote_branch] -f

如本地、远程的分支名都为bugfix,则命令为

git push origin bugfix:bugfix -f

三、可视化工具(sourceTree)提效

工欲善其事,必先利其器。

由于命令行的操作有记忆成本、理解成本,这里可以使用可视化工具sourceTree:Sourcetree | Free Git GUI for Mac and Windows

进行变基提效:

1、分支合并:

sourceTree拉取时,勾选“用变基代替合并”即可

2、交互式合并提交记录:

1、在需要合并的提交前一个提交,右键点击交互式变基

2、点击squash

这里可以移动提交顺序、删除、及编辑提交内容

3、编辑最终的提交内容

4、变基完成

蓝色分支为当前分支,提交记录可以看到合并成1个了

git log下也只有1条:

可以看出,用工具的变基操作会更加有效率。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/637936
推荐阅读
相关标签
  

闽ICP备14008679号