Git - 如何回到初始提交?

3

我有一个只有一个提交的git存储库。在我的本地主分支中,我意外地执行了 git commit --amend ,所以现在我收到一条消息:

On branch master 

Your branch and 'origin/master' have diverged,
and have 1 and 1 different commits each, respectively. 

我如何丢弃修订的提交并返回原始提交? 我想让我的本地主分支和远程主分支保持最新,没有要提交的内容。


2
这个回答解决了你的问题吗?如何撤销初始的git提交? - Thirumal
3个回答

4
你可以使用 reflog 来将 master 重置到它引用的上一个提交:
git reset --hard master@{1}

在像这样的情况下,reflog是一个真正的救命稻草。在Git Book中对它进行了详细介绍:

在您的Git之旅中的某个时刻,您可能会意外丢失一个提交。通常,这是因为您强制删除了一个有工作的分支,并且事实证明您仍然需要该分支;或者您硬重置了一个分支,从而放弃了您需要的提交。假设出现了这种情况,您如何找回提交记录?[...]

通常,最快捷的方法是使用一个叫做git reflog的工具。


1
你可以通过以下方式将当前的master分支重置为与原始分支相同:
git reset --hard origin/master

请注意,这将删除您当前分支master上与origin/master不同的任何更改。

1
虽然这种方法可能在 OP 的情况下能够完成任务,但我不建议将其作为“撤销”本地提交的通用方式,因为您可能会得到来自远程分支的新提交,而您可能还没有兴趣。 - Enrico Campidoglio

1

既然你在'origin/master'分支上,想要重置,请使用以下git reset命令。

git reset --hard origin/master

解释: 来自git文档

git-reset - 将当前HEAD重置为指定状态

--hard - 这是模式选项(可选)。hard 重置索引和工作树。自从上次提交以来在工作树中跟踪文件的任何更改都将被丢弃。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接