目录
经常碰到git commit后感觉不合适,需要修改commit 的情况,网络上一顿搜索,然后修改。
今天趁着有时间,总结一下,方便以后查阅。
一:准备工作
建立一个本地仓库,修改多次,提交多次
1:新建文件夹并初始化 coding_demo
mkdir coding_demo && cd coding_demo && git init
2:添加记录
(1)文件夹添加文件,并提交,循环4次,然后git log看日志
touch txt1.txt && git add . && git commit -m 'add txt1'
touch txt2.txt && git add . && git commit -m 'add txt2'
touch txt3.txt && git add . && git commit -m 'add txt3'
touch txt4.txt && git add . && git commit -m 'add txt4'
git log
如下图所示
二:开始干正事
1:将最后一次提交的记录改为 fix a bug
git commit --amend
弹出类似VIM界面后,键盘按下“i”进入编辑模式,将“add txt4”修改为“fix a bug”,键盘按下ESC退出编辑模式,然后键盘按下":wq"即保存退出。跟VIM界面一样,然后再次
git log
如无意外,日志修改成功了。
2:将第二次的日志改为 init
(本来想把第一次的commit修改为init,可是尝试多次都不行,再者说这需求自己也用不上,舍弃)。
采用 git rebase -i ,常看log,注意:改第二次的commit,那么就要定位到第一次提交的HEAD。如下操作:
git rebase -i a6be63fc0a203cce8e6fdd94731507721a561a70
弹出以下窗口:
(
选项注释如下:
pick:保留该commit
reword:保留该commit,但修改该commit的注释
edit:保留该commit, 但停下来修改该提交(不仅仅修改注释)
squash:将该commit和前一个commit合并
fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息
exec:执行shell命令
drop:丢弃该commit
)
修改如下(不需要修改commit,因为一会还要弹出修改界面),然后保存退出
然后,弹出修改界面:
修改如下,保存退出
再通过git log查看信息,已经改过来了
3:将前三次的commit合并,保留注释信息
git rebase -i HEAD~3
修改如下,即把第三次、第四次的commit合并到第二次合并
弹出以下界面
修改如下:
最后git log查看,修改成功(log内容也可以修改也可以删除):
4:恢复
rebase错误了,可以采用以下指令:
git reset --hard HEAD
HEAD就是以下红色指向