rebase
2024年04月27日
一、git rebase
说明: git rebase
的最大作用是它可以重写历史。我们通常会通过 git rebase -i
使用 git rebase
命令,-i
参数表示交互(interactive
),该命令会进入到一个交互界面中,其实就是 Vim
编辑器。在该界面中,我们可以对里面的 commit
做一些操作,交互界面如图所示:
Preview
这个交互界面会首先列出给定之前(不包括,越下面越新)的所有 commit
,每个 commit
前面有一个操作命令,默认是 pick
。我们可以选择不同的 commit
,并修改 commit
前面的命令,来对该 commit
执行不同的变更操作。git rebase
支持的变更操作如下:
-
pick,p
: 使用这个提交,即保留这个提交在新的历史记录中。 -
reword,r
: 使用这个提交,但会提示你修改提交信息。 -
edit,e
: 使用这个提交,但会暂停并进入编辑模式,让你可以通过git commit --amend
修改提交内容或提交信息。 -
squash,s
: 将这个提交与前一个提交合并,并允许你编辑合并后的提交信息。 -
fixup,f
: 将这个提交与前一个提交合并,但会丢弃这个提交的信息,直接使用前一个提交的信息。 -
exec,x
: 在暂停的时候执行一个指定的shell
命令。 -
drop,d
: 丢弃这个提交,即从历史中删除这个提交。
在上面的 7
个命令中,squash
和 fixup
可以用来合并 commit
。例如用 squash
来合并,我们只需要把要合并的 commit
前面的动词,改成 squash
(或者 s)即可。