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


当前回答

我已经推了。需要远程返回一些提交。尝试了许多变化,但只有Justin via git bush的这句话对我来说很好:

git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force

其他回答

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

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

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

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

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

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

使用git还原https://git-scm.com/docs/git-revert。它将还原所有代码,然后您可以进行下一次提交。然后head将指向上一次提交的代码。还原的提交不会删除,但不会影响您上次提交。

这里有30多个回答者,我将简单介绍适合我的答案

删除.git文件夹可能会导致git存储库出现问题。如果您希望删除所有提交历史记录,但将代码保持在当前状态,则可以按照以下方式进行操作:

结账

git checkout --orphan latest_branch

添加所有文件

git add -A

提交更改

git commit -m "commit message"

删除分支

git branch -D master

将当前分支重命名为主分支

git branch -m master

最后,强制更新存储库

git push -f origin master

PS:这不会保留您以前的提交历史。

在本地分支上重置

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

强制推至原点

git push -f origin

强制更改历史记录

假设您不仅希望删除最后一次提交,而且希望删除最后n次提交中的特定提交,请执行以下操作:

gitrebase-i HEAD~<要返回的提交数>,所以如果您想查看最后五次提交,请使用gitrebase-iHEAD~5。

然后在文本编辑器中,将单词pick更改为放置在要删除的每个提交旁边。保存并退出编辑器。瞧!

附加更改历史记录

尝试git-restore<commit hash>。Revert将创建一个新的提交,以撤消指定的提交。