我做了一个git提交,但我还没有把它推到存储库。 所以当我做git状态时,我得到“#你的分支领先于'master' 1提交。

如果我想回滚顶层提交,我可以这样做吗

git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316

考虑到当我使用git log时,我得到:

commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
Date:   Tue Sep 29 11:21:41 2009 -0700


commit db0c078d5286b837532ff5e276dcf91885df2296
Date:   Tue Sep 22 10:31:37 2009 -0700

实际上,当你使用git reset时,你应该引用你要重置的提交;您可能需要db0c078提交。

一个更简单的版本是git reset -hard HEAD^,重置到当前HEAD之前的上一次提交;这样你就不用到处复制提交id了。

当你做任何git重置时都要小心——很难,因为你可能会丢失任何未提交的更改。你可能想要检查git状态,以确保你的工作副本是干净的,或者你确实想要吹走那里的任何更改。

此外,你可以使用origin/master作为参考,而不是HEAD,就像@bdonlan在评论中的建议:git reset——hard origin/master


如果您还没有将更改推送到远程

git reset HEAD~1

通过git状态检查工作副本是否干净。

否则,您已将更改推至远程

git revert HEAD

这个命令将恢复/删除本地提交/更改,然后您可以推送


git reset --hard origin/main

它适用于其他分支:

git reset --hard origin/master
git reset --hard origin/staging

把它重置到原点。

这是@bdonlan在评论中发布的。我为那些不看评论的人添加了这个答案。


我也经历过同样的情况,我做了下面这个更容易。 通过传递commit- id,你可以到达你想要的特定提交:

git reset --hard {commit-id}

当你想要删除上次提交时,你需要传递commit- id,你需要移动指针:

git reset --hard db0c078d5286b837532ff5e276dcf91885df2296

一种方法是删除本地分支并从服务器签出该分支,如果您的本地分支比远程分支多提交了多次,并且您需要取消提交所有这些分支。


这就是我所做的:

首先签出你的分支(对于我的案例主分支):

git checkout master

然后重置到远程HEAD^(它会删除所有的本地更改),强制清洁和拉:

git reset HEAD^ --hard && git clean -df && git pull

删除推送前的最后一次提交

git重置-软头~1

1表示最后一次提交,如果你想删除两次最后使用2,以此类推*


只需在控制台输入:

$ git reset HEAD~

该命令在远程HEAD之前丢弃所有本地提交


这个问题有两个分支(回滚提交并不意味着我想失去所有的本地更改):

1. 要恢复最近提交的文件并丢弃已提交文件中的更改,请执行以下操作:

git重置-硬头~1

2. 要恢复最近的提交,但保留本地更改(在磁盘上),请执行以下操作:

git重置-软头~1

这个命令(后面的命令)将把您带到使用git add时所处的状态。

如果您想在此之后取消文件,请执行

去重置

现在您可以在添加和再次提交之前进行更多更改。


我也遇到了同样的问题,最后我这样做了:

git rebase -i HEAD~N

(N是git会显示给你的提交数)

这将提示您的文本编辑器,然后您可以通过删除与其关联的行来删除所需的提交。


我相信其中有一个能满足你的需要

1 -撤销提交并保持所有文件暂存: git重置-软头~

2 -撤销提交和取消所有文件: git重置头~

3 -撤销提交并完全删除所有更改: git重置-硬头~

这就是我找到答案的地方