如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?


当前回答

在本地分支上重置

git reset --hard HEAD~<Number of commit> So git reset --hard HEAD~3

强制推至原点

git push -f origin

其他回答

正如您在上图中看到的,我想删除revert“test change 2”提交(SHA1 ID:015b5220c50e3dfbb1063f23789d92ae1d3481a2(您可以使用gitbash中的gitk命令获取SHA1 ID))。

为此,我可以使用(以下所有命令仅适用于本地。删除后需要推送):

git reset--hard 515b5220c50e3dfbb1063f23789d92ae1d3481a2//将您备份到该提交(测试更改4提交的SHA1 ID为515b5220C50e3dfbb 1063f23799d92ae 1d3481A2)gitreset-hardHEAD~1//它在一次提交之前备份您。git reset--hard HEAD ^//从git中删除最后一次提交

删除后:

如果您还没有将提交推到任何位置,可以使用gitrebase-i删除该提交。首先,找出提交的时间(大约)有多远。然后执行以下操作:

git rebase -i HEAD~N

~N表示对最后N个提交进行重新基化(N必须是一个数字,例如HEAD~10)。然后,您可以编辑Git提供给您的文件,以删除违规提交。保存该文件后,Git将重写以下所有提交,就像您删除的提交不存在一样。

GitBook中有一个很好的部分,用图片和示例来改变基础。

但是要小心,因为如果你改变了你在其他地方推动的东西,除非你计划进行强制推动,否则需要另一种方法。

如果你是IntelliJ用户,界面简直太棒了。只需单击一次,即可立即看到效果。这个地方的快捷方式:MacOS上的Cmd+9。

要在本地分支中删除,请使用

git reset --hard HEAD~1

要在远程分支中删除,请使用

git push origin HEAD --force

git重置--硬HEAD~1你现在将处于前一个位置。拉动树枝。推送新代码。提交将从git中删除