摘要

在使用 Git 作为版本控制的时候,我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commit 拼接起来才是完整的任务。那么我们为了避免太多的 commit 而造成版本控制的混乱,通常我们推荐将这些 commit 合并成一个。

使用git工具

Git——git commit合并实战_Git

我们需要将 ​​d9e82c811e461a0d4f93c7294c378c13b4b6c22b​​​和 ​​2140e71cde911f58c0f99dc811b99cfbcf7c8a35​​ 合并成一个 commit,那么我们输入如下命令

git rebase -i 合并到哪一个commit上的commit编号

Git——git commit合并实战_Git_02

其中,​​-i​​​ 的参数是不需要合并的 commit 的 hash 值,这里指的是第一条 commit, 接着我们就进入到 ​​vi​​ 的编辑模式

Git——git commit合并实战_Git_03

 可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、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中,那就需要修改成如下的:

Git——git commit合并实战_bc_04

 修改完成后,按esc键,冒号,输入wq进行保存。之后会继续跳转到commit message 的编辑界面:

Git——git commit合并实战_Git_05

 注释中有写第一个commit信息和第二个commit信息,现在需要你合并这两个信息成一个commit信息。我这边合并成如下信息: 

Git——git commit合并实战_Git_06

Git——git commit合并实战_bc_07

从图中就看到已经将this is two和this is three的commit合并成了this is combination of 2 commit。 

Git——git commit合并实战_bc_08

使用IDEA的可视化

 IDEA中有在自己的分支上commit

Git——git commit合并实战_bc_09

Git——git commit合并实战_版本控制_10

Git——git commit合并实战_bc_11

Git——git commit合并实战_Git_12

Git——git commit合并实战_git工具_13

 Pycharm中操作Git rebase命令

Git——git commit合并实战_Git_14

Git——git commit合并实战_git工具_15

Git——git commit合并实战_版本控制_16

Git——git commit合并实战_git工具_17

博文参考