场景1
有时候我们发现 commit 写的不好,想要更改当前分支最近一次的 commit 的内容,我们可以使用:
git commit --amend
场景二
既然可以更改最近一次的 commit,那可能有些人就想要在当前分支下前几次的 commit 内容进行更改或者进行 commit 合并,那我们需要怎么做呢?方法如下:(注意此操作最好是在自己维护的分支上弄,多人开发的分支就不太适合)
使用git rebase -i xxxx
,这里的 i 指的是交互的意思
现在项目 commit 如下
我现在想要更改第二个 commit 的内容,那我需要知道当前要修改的 commit 的父亲的 id,也就是 init game 的 commit id 1801cf5,然后
git rebase -i 1801cf5
:
当前是 pick,我们需要使用 reword 来更改第二个 commit 的内容
保存退出,出现
修改 commit 内容,然后退出,出现
git log —oneline
查看
成功添加.号
场景3
现在我们想要把第二个 commit 和第一个 commit 这两个连续的 commit 进行合并,我们可以这样:
同样使用git rebase -i 1801cf5
,将第二个 pick 改为 s(squash),这样可以合并到上一个commit
保存退出
修改成
保存退出
git log —oneline
查看
成功合并。
场景4
现在有人又有个疑惑,如果我是相隔的 commit,但是我想将相隔的 commit 的内容进行合并,那又需怎么做呢?
还是以下面这个为例子
现在我们想将第一个 commit 的内容和第三个内容进行合并,这里你可能你比较疑惑,第三个 commit 的上一个 commit 是没有的,那怎么用 rebase 呢?我们需要记下第三个 commit 的 id,输入git rebase -i 1801cf5
目前只有两个,没有 init game 的 commit id,我们需要将这个 commit id 添加上去(我们可以不用写commit 的内容):
将相关要合并的 commit 写在一起:
保存退出。按照之前的步骤即可。