Git修改最后提交的commit注释和历史commit注释,删除远程分支上的某次提交

本文详细介绍了如何在Git中修改commit注释,包括修改最后一次提交和多次提交的注释,以及如何将修改提交到远程仓库。此外,还讲解了删除远程分支上某次提交的方法,包括删除最后一次提交、删除历史某次提交以及修改历史某次提交的步骤,涉及到revert和reset命令的使用。

有时候在提交代码到远程仓库的时候,手速一快,commit注释没改就提交了,这样会引起不必要的沟通成本。所以,修改commit注释就能很好的解决这个问题。

1、修改commit注释

1.1、修改最后一次commit注释

通过git log查看提交历史信息:
在这里插入图片描述
输入命令:

 git commit --amend

进入修改注释界面:
在这里插入图片描述

第一行就是最后一次commit的注释信息,按i键进行编辑状态,修改注释信息后按Esc后再按:wq保存并退出

再次通过git log查看,注释信息由add test.txt修改为新增test.txt
在这里插入图片描述

1.2、修改多次commit注释

命令:

n:需要修改的最近n次commit
git rebase -i HEAD~n

比如我想要修改最近3次注释信息就使用git rebase -i HEAD~3,显示下面内容:
在这里插入图片描述

这上面一行就是一次commit历史,按照提交的顺序进行排序,最下面的一行为最后一次commit

i进行编辑,需要修改那个注释,就将其前面的pick修改为edit
在这里插入图片描述

上面为修改第1行和第3行的注释信息

然后按Esc后再按:wq保存并退出
此时输入一下命令编辑第1条commit注释:

git commit --amend

编辑注释信息(按i进入编辑状态,按Esc:wq保存并退出),此时分支变为master|REBASE-i 1/3;再输入下面信息进行保存:

git rebase --continue

此时分支变为master|REBASE-i 3/3,现在只修改完第1条commit
再通过git commit --amendgit rebase --continue修改第3条后分支状态变回master并提示Successfully rebased and updated refs/heads/master.说明已修改完成

2、提交到远程仓库

 强制更新到远程仓库(remote branch:远程分支名)
git push -f remote branch

----------------------------------------------华丽的分割线-------------------------------------------------------
在开发中可能会遇到这种情况:某次提交的代码已经push到远程仓库了。但是,这个push并不是自己想要提交的代码,所以需要将某次的commit删除。

3、删除远程分支上的某次提交

3.1删除最后一次提交

这种情况是最简单的了,只需要以下两步就可以了

git revert HEAD
#master:适用于所有需要删除commit的分支
git push origin master

注意,revertreset的区别:

revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在,
reset 是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。

假设我们有三条commit记录。
commit 3,
commit 2,
commit 1.

现在我们使用revert放弃最后一次提交,之后执行git log:

git revert HEAD
git log

commit 4,(多出的commitId,这个commitId的内容为commit 2 的内容)
commit 3,
commit 2,
commit 1.

历史记录中还有第三次提交的记录,并且多了一次的提交,但是仓库内容已经回到了第二次提交之后的状态。 现在我们使用reset回到第三次提交,之后执行git log:

git reset --hard HEAD^
git log

commit 3,
commit 2,
commit 1.

历史记录中已经没有之前revert生成的提交记录了。
如果删除远程仓库的最后一次提交的时候不需要保留历史记录的话,可以使用reset,命令如下:

git reset --hard HEAD^
#master:适用于所有需要删除修改的远程分支名
git push origin master -f

-f 参数是强制提交,因为reset之后本地库落后于远程库一个版本,因此需要强制提交。

3.2、删除历史某次提交

这种情况需要先用git log命令在历史记录中查找到想要删除的某次提交的commit id

然后执行以下命令(”commit id”替换为想要删除的提交的”commit id”,需要注意最后的^号,意思是commit id的前一次提交):

git rebase -i "commit id"^

执行该条命令之后会打开一个编辑框,列出了包含该次提交在内之后的所有提交。

然后在编辑框中删除你想要删除的提交所在行,然后保存退出就好啦,如果有冲突的需要解决冲突。接下来,执行以下命令,将本地仓库提交到远程库就完成了:

git push origin master -f

3.3、修改历史某次提交

这种情况的解决方法类似于第二种情况,只需要在第二条打开编辑框之后,将你想要修改的提交所在行的pick替换成edit然后保存退出,这个时候rebase会停在你要修改的提交,然后做你需要的修改,修改完毕之后,执行以下命令:

git add .
git commit --amend
git rebase --continue

如果你在之前的编辑框修改了n行,也就是说要对n次提交做修改,则需要重复执行以上步骤n次。

需要注意的是,在执行rebase命令对指定提交修改或删除之后,该次提交之后的所有提交的”commit id”都会改变。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值