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


当前回答

正如您在上图中看到的,我想删除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中删除最后一次提交

删除后:

其他回答

git重置--硬

git推原点HEAD—力

如果一个或多个提交被标记,请首先删除标记。否则,标记的提交不会被删除。

我附上这个答案是因为我不明白为什么任何刚刚尝试提交工作的人都会因为使用Git时出错而想要删除所有工作!

如果您想保留您的工作,只需“撤消”提交命令(在推送到repo之前捕获):

git reset --soft HEAD~1

不要使用--hard标志,除非您希望销毁自上次提交以来正在进行的工作。

git rebase -i HEAD~2

这里“2”是您要重新设置基准的提交次数。

'git rebase -i HEAD`

如果您想重新设置所有提交的基础。

然后,您可以选择其中一个选项。

p、 pick=使用提交

r, reword = use commit, but edit the commit message
e, edit = use commit, but stop for amending
s, squash = use commit, but meld into previous commit
f, fixup = like "squash", but discard this commit's log message
x, exec = run command (the rest of the line) using shell
d, drop = remove commit

这些线路可以重新订购;它们是从上到下执行的。如果您删除此处的一行,则承诺将丢失。但是,如果您删除了所有内容,则重新启动将被中止。注意,空提交被注释掉

您只需使用选项“d”或删除包含您提交的行即可删除该提交。

git reset --hard commitId

git push <origin> <branch> --force

PS:CommitId指的是要还原回的那个

在本地分支上重置

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

强制推至原点

git push -f origin