浅谈git rebase命令 -- git修改历史提交信息

浅谈git rebase命令

如果你只想修改git log命令打印到终端上的最后一个提交信息,那么使用git commit --amend命令直接修改就好。

如果你还想合并最近的某几个提交为一个提交,并重新为这个化多为一的新的提交信息的话,那么就要考虑使用git rebase -i HEAD~n命令,注意其中n是一个具体的数字,即你一共想合并的提交的个数。

例如如果n3,则你会得到这样一个界面
在这里插入图片描述
根据下面的提示,修改上面那三个pick,注意如果是squash的话,第一个pick是不可以被修改为sqush的,因为第一个指的是,剩下两个提交是要合并到第一个提交里的,把第一pick也改为squash的话,那么git就不知道该把这三个往哪合并了。
注意上面这个界面只是用来让你修改pick的,其他的东西不需要动。

pick,指啥也不变(我的理解)
reword,指不合并,但是可以直接修改后面的提交信息,这里的直接修改不是在这个界面修改,这个界面只用来让你修改pick的,其他的不要动。将第三行的pick修改为reword之后,保存并退出,git会直接创建一个vim会话窗口,此时你就可以修改提交信息了。
在这里插入图片描述
这里直接修改第一行的提交信息就行,其他的也不用动,然后保存并推出就完成了reword的功能。
edit,这个命令看似跟reword差不多,但是不能随便用,因为如果你把第二行的pick改为edit,那么这里的意思就是丢弃第三行的提交,直接修改第二行的提交信息,保存并退出后,需要手动使用git commit --amend去把修改窗口调用出来,然后才能修改提交信息;如果你后悔了,那么可以使用git rebase --abort放弃本次修改。这里的git rebase --continue的意思是,如果你不使用git commit --amend修改提交信息,也不用git rebase --abort放弃本次操作,那就默认不修改提交信息并完成本次操作。

所以这个命令有一定危险性,没想清楚不要随便用。

在这里插入图片描述
squash,指的是将当前提交合并至上一个提交,注意因为是合并至上一个提交(范围在出现在这个界面的),所以第一行是没有上一个提交的,所以无法将第一行的pick改为squash。修改完pick后就可以保存并退出,git会自动弹出修改提交信息的窗口,把本来的多个提交信息修改为一个就可以了。(可以同时修改多个picksquash,除了第一个pick不能被修改以外,都可以修改为squash

fixupfixup是仅仅丢弃提交记录,但是该次提交的已修改的文件不会变动,这个适用于合并两个分支时,两个分支都有变动,那么在合并的时候git会自动创建一个提交记录,记录本次合并。如果没什么冲突,为了简洁,可以把这个自动创建的提交记录丢弃掉。

drop, 顾名思义,丢弃,不仅丢弃提价记录还丢弃添加或者文件内被修改的内容。

注意,倘若你已经git push到上游了,那就不要修改提交记录了,会造成混乱。这只适用于本地修改完,但还未push的时候。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值