删除未推送的git提交

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

所以如果我想回滚我的顶部提交,我可以这样做:

git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316

假设当我做git log时,我得到:

commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316Date:   Tue Sep 29 11:21:41 2009 -0700

commit db0c078d5286b837532ff5e276dcf91885df2296Date:   Tue Sep 22 10:31:37 2009 -0700
1442805 次浏览

实际上,当你使用git reset时,你应该引用你正在重置的提交;所以你可能想要db0c078提交。

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

当您执行任何git reset --hard时要小心,因为您可能会丢失任何未提交的更改。您可能需要检查git status以确保您的工作副本是干净的,或者您确实想要吹走那里的任何更改。

此外,您可以使用origin/master作为参考,而不是HEAD,正如@bdonlan在评论中建议的那样:git reset --hard origin/master

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

git reset HEAD~1

检查工作副本是否在git status之前干净。

否则,您已将更改推送到远程

git revert HEAD

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

git reset --hard origin/main

它适用于其他分支:

git reset --hard origin/mastergit reset --hard origin/staging

将其重置为原点所在的位置。

这是@bdonlan在评论数中发布的。我为不阅读评论的人添加了这个答案。

我遇到了同样的情况,我做了下面的事情,因为这容易得多。通过传递commit-Id,您可以到达您想要去的特定提交:

git reset --hard {commit-id}

因为你想删除你的最后一次提交,所以你需要传递commit-Id来移动你的指针:

git reset --hard db0c078d5286b837532ff5e276dcf91885df2296

一种方法是删除本地分支并从服务器中签出该分支,如果您的本地分支在远程之前有多个提交并且您需要取消所有提交。

这就是我所做的:

首先检查您的分支(对于我的casemaster分支):

git checkout master

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

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

删除Push前最后一次提交

git reset --soft HEAD~1

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

只需在控制台中键入:

$ git reset HEAD~

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

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

1.要恢复最新的提交,放弃提交文件中的更改执行:

git reset --hard HEAD~1

2.恢复最新的提交,但保留本地更改(在磁盘上)这样做:

git reset --soft HEAD~1

这(后面的命令)将带您进入如果您执行git add的状态。

如果你想在那之后取消文件,做

git reset

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

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

git rebase -i HEAD~N

(N是git将向您显示的提交数量)

这会提示您的文本编辑器,然后您可以通过删除与之关联的行来删除您想要的提交。

我相信其中一个会符合你的需要

1-撤消提交并保持所有文件暂存:git reset --soft HEAD~

2-撤消提交并取消所有文件:git reset HEAD~

3-撤消提交并完全删除所有更改:git reset --hard HEAD~

我找到了答案