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


当前回答

如果您刚刚弄糟了上一次提交(错误的消息,忘记添加一些更改),并想在将其推送到公共回购之前修复它,为什么不使用:

git commit --amend -m "New message here"

如果您有新暂存的更改,它们将与上一次提交(您正在尝试删除)合并,并将替换该提交。

当然,如果你在推送之后修改了一个承诺,你就是在改写历史,所以如果你这样做,一定要理解其中的含义。

如果您希望使用上一次提交的消息,也可以传递“--no edit”选项而不是“-m”。

文件:http://git-scm.com/docs/git-commit.html

其他回答

如果您没有发布更改,为了删除最新提交,您可以

$ git reset --hard HEAD^

(注意,这也会删除所有未提交的更改;请小心使用)。

如果您已经发布要删除的提交,请使用git-restore

$ git revert HEAD

资料来源:https://gist.github.com/sagarjethi/c07723b2f4fa74ad8bdf229166cf79d8

删除上次提交

例如,您最后一次提交

git推送原点+aa61ab32^:主

现在您要删除此提交,然后使用以下简单方法

步骤

首先将分支重置为当前提交的父级用力将其推至遥控器。

git reset HEAD^--硬git推送原点-f

对于特定的提交,您希望重置如下

git reset bb676878^ --hard

git push origin -f

在我的情况下,我对这只小狗的魔法代码是这样的:

git reset --hard @{u}

测试一下,告诉我。我试过几种不同的方法,但只有这一种对我有帮助。

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

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

git reset --soft HEAD~1

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

// display git commit log    
$ git log --pretty=oneline --abbrev-commit

// show last two commit and open in your default editor
// then delete second commit line and save it
$ git rebase -i HEAD~2

参考:如何在git、本地和远程中删除提交