Git之使用命令行合并多次提交
2017-05-20 本文已影响358人
mrwangyong
如果有多次提交,可以用Git命令行合并,
1.先查看当前的提交和commit ID
git log
image.png
如果要退出 直接输入q
2. 复制要合并前一个的commitID
记住 这里是前一个 比如 上面的前一个为 避免污染友盟 commitID 为 fca027a42964d78988ec25f06d654114fe76224e
3. rebase当前的提交
git rebase -i commitID
比如 这里输入的是 git rebase -i fca027a42964d78988ec25f06d654114fe76224e
立即进入Vim编辑器界面
4. 然后会进入Vim编辑器,此处应该有vim编辑器速通教程
Vim分为两种模式,
命令模式
:输入一些控制指令 如撤销.退出.保存.等等
编辑模式
:可以编辑文本;
默认进入为命令模式,键入i,o,s,a
等即可进入编辑模式,按esc可退出编辑模式
删除
-
x
删除当前字符 -
dd
删除当前行 d(elete) -
dw
删除当前光标下的词 d(elete)w(ord)
修改
-
i
在光标当前位置向前插入 i(nsert) -
I
在本行第一个字符前插入 -
a
在光标当前位置向后插入 a(fter) -
A
在本行末尾插入 -
o
向下插入一行 -
O
向上插入一行 -
:w
保存
-:q
退出 -
:wq
保存并退出 -
u
撤销上一次修改 -
ctrl + r
重做
5. 修改commit
image.png可以见到
上方未注释的部分是填写要执行的指令
,
而下方注释的部分则是指令的提示说明
。
指令部分中由前方的命令名称、commit hash
和 commit message
组成。
当前我们只要知道 pick
和 squash
这两个命令即可。
pick 的意思是要会执行这个 commit
squash 的意思是这个 commit 会被合并到前一个commit
,注意是 前
一个
我们将 c4e858b5 这个 commit 前方的命令改成 squash 或 s,然后输入:wq以保存并退出
6.最后删除多余的commit记录就好了
image.png输入
dd
可以删除一行,输入 i.o.s.a
等切换到编辑模式(底部有个insert
标志),修改文字,完成后esc
输入:wq
保存即可重新
git log
一下 发现已经修改完毕了
注意事项:
如果这个过程中有操作错误,可以使用 git rebase --abort
来撤销修改,回到没有开始操作合并之前的状态。