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


当前回答

如果要修复最近的提交,可以通过以下操作撤消提交并取消其中的文件:

git reset HEAD~1

这将使存储库返回到暂存文件的gitadd命令之前的状态。您的更改将在您的工作目录中。HEAD~1指的是分支当前尖端以下的提交。

如果要取消提交N个提交,但将代码更改保留在工作目录中:

git reset HEAD~N

如果您想摆脱最新的提交,并且不想保留代码更改,可以进行“硬”重置。

git reset --hard HEAD~1

同样,如果您想放弃最后N次提交,并且不想保留代码更改:

git reset --hard HEAD~N

其他回答

为了我,rebase做了这个把戏

$ git rebase -i HEAD~98

# Delete everything except for the most recent commit on the shown editor caused by "rebase"

$ git push origin -f production-static

注:在强制推送以减少我的评论之后。然后我推送了另一组文件,然后在另一台计算机上尝试使用相同的“存储库和分支”。令人惊讶的是,没有冲突。这成为了我减少存储库大小的方法,同时避免了对使用相同git的其他本地用户的拉取冲突

// 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、本地和远程中删除提交

在本地分支上重置

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

强制推至原点

git push -f origin

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

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

$ git reset --hard HEAD^

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

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

$ git revert HEAD