为什么说“再次”呢,因为之前有发过一篇 git rebase 的文章,如今刚好又要用到,发现不会使用了,而且当时的也理解不太对~
git rebase
是基准基变的意思,在原来的提交记录上可以变成任何你想要的的模样!(确实很强大)
我的使用场景 是将多个提交记录合并成一个提交记录
首先 理解几个git rebase时会用到的关于提交记录将变成怎样的参数
pick:按原样应用所选的提交。
edit:选择在应用此提交之前编辑受此提交影响的文件。
drop:忽略所选的commit,因此不会应用这些更改
squash:选择以将所选的提交与前一个相结合,两个提交的提交消息将被合并
reword:选择此选项以在应用提交消息之前编辑它。
fixup:选择此选项以将所选的提交与前一个提交相结合,修复提交的提交消息将被丢弃
值得注意的是
:
不能全部选择 drop commit,不然就没有需要改变的了
squash 和 fixup 不能在第一个commit,因为他们需要与前一个commit配合
语法
git rebase -i HEAD~n #表示从最近一个提交开始数到第n个提交,n指数字
git rebase -i n m #表示从第n个提交到m个提交,nm指commit id
例子
假设觉得这个5个提交很多余,需要合并成1个
看操作
git rebase -i HEAD~5
其实一个控制台我们在这里不好编辑,其实这个文件是在
代码跟目录xxx/.git/rebase-merge/git-rebase-todo
里的所以我们可以用编辑器打开更方便
保存后在命令台执行退出 :q
提交1 和提交2 冲突了需要解决一下
然后提交,继续
最后的结果