一,关于git rebase -i head~n的命令,可以修改某个提交的提交履历
1,git log 查看提交log,确认需要修改的commit
2,git rebase -i head~2(以修改最后的两次提交的履历为例)
3,进入git vim编辑页面,按键盘i进入编辑模式,将需要修改履历的两条提交的 “pick ”改为 “r” (此时不需要改履历信息)
4,按esc键,然后输入:“:wq”在回车
5,进入倒数第二条履历编辑画面(我的例子是要改最后两条),按键盘i进入编辑模式,修改提交的履历信息
6,按esc键,然后输入:“:wq”在回车,退出第二条履历编辑,进入第一条履历编辑
7,按键盘i进入编辑模式,修改提交的履历信息
8,按esc键,然后输入:“:wq”在回车,修改履历完毕,退出编辑模式
9,git push -f origin 分支名,此时新的履历信息覆盖了原有的2条履历信息
补充:关于git rebase -i commit id的命令,也可以修改某个提交的提交履历,会相当于这从这个id开始之后所有的提交都会被列出来
比如:git rebase -i bf08abd5 ,bf08abd5是往前数8次的提交commit id,相当于git rebase -i head~8
注意:
①在使用rebase -i修改履历提交到master分支时被拒绝提交,提示下面的信息,
! [remote rejected] master -> master (pre-receive hook declined)
因为master分支带有默认的Protected权限,所以不允许(实际原则上也禁止这么操作)
②非master分支可以使用rebase -i修改提交履历,但是履历修改提交后,gitlab上的commit id号会被修改成新的,
提MR被merge后再使用rebase -i修改提交履历,会导致commit id对不上,同一开发分支多人使用时也不要使用rebase -i修改提交履历
二,--amend修改提交的履历
--amend也可以修改提交的履历信息,但是只能修改最后一次提交的履历信息
--amend 实质会把本次修改将要的提交和前一次的提交合并到同一个提交里面
标签:git,rebase,履历,修改,master,提交 From: https://www.cnblogs.com/l-liu/p/18432868