在使用 Git 作为版本控制的时候,我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commit 拼接起来才是完整的任务。那么我们为了避免太多的 commit 而造成版本控制的混乱,通常我们推荐将这些 commit 合并成一个。
使用git工具我们需要将 d9e82c811e461a0d4f93c7294c378c13b4b6c22b
和 2140e71cde911f58c0f99dc811b99cfbcf7c8a35
合并成一个 commit,那么我们输入如下命令
git rebase -i 合并到哪一个commit上的commit编号
其中,-i
的参数是不需要合并的 commit 的 hash 值,这里指的是第一条 commit, 接着我们就进入到 vi
的编辑模式
可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成。
当前我们只要知道 pick
和 squash
这两个命令即可。
pick 的意思是要会执行这个 commit
squash 的意思是这个 commit 会被合并到前一个commit
我们将 a4e2734
这个 commit 前方的命令改成 squash
或 s
,然后输入:wq
以保存并退出
我们这边需要将"this is three"这个commit合并前前一个commit,也就是合并到“this is two”的commit中,那就需要修改成如下的:
修改完成后,按esc键,冒号,输入wq进行保存。之后会继续跳转到commit message 的编辑界面:
注释中有写第一个commit信息和第二个commit信息,现在需要你合并这两个信息成一个commit信息。我这边合并成如下信息:
从图中就看到已经将this is two和this is three的commit合并成了this is combination of 2 commit。
IDEA中有在自己的分支上commit