如何将本地分支回滚到与 Github 上的分支相同状态?

24

我在本地代码库中错误地对一个分支进行了一些开发。我进行了git branch操作,但是没有接着执行git checkout。命令大致如下:

#On branch development
git branch release-v0.2.0b
# changes and several commits
git push origin release-v0.2.0b

后来我才意识到我在错误的分支上工作了。 我的Github仓库状态正确,但我的本地仓库不正确。 我已将从开发中的更改合并到了release-v0.2.0b中,但我希望将开发重置回到与Github仓库相同的状态。 如何最好地解决这个问题?

4个回答

78

更快的方法是将本地分支重置为特定的远程分支:

git reset --hard remote/branch

“remote”是您的远程名称,
“branch”是远程分支的名称。


2
谢谢。这个答案正是我在寻找的,应该是正确的。 - Jonathan Arkell
对于那些可能有另一个指向最新更改的本地分支的人来说,这样做也是可以的。只有您当前的本地分支将被重置为指向与远程/分支匹配的较早提交。 - auspicious99

16

只是为了确保我理解情况:你创建了发布分支但没有检查它,因此你的提交位于本地存储库中的开发分支上。你说你将更改合并到了release-v0.2.0b分支。

如果是这种情况,并且你不需要保留开发分支上的其他提交,只需删除本地开发分支的副本,然后从源代码库再次检出即可。

首先,请验证你拥有哪些分支以及你当前所在的分支:

git branch -av

然后切换到其他分支,以便您可以删除该开发分支:

git checkout origin/development
git branch -D development

实际上,这让你没有在任何分支上,但当你再次从远程库检出时,你将回到一个分支上:

git checkout origin/development -b development

我建议检查origin/development分支,以避免在您的快照中出现不必要的文件变动。


2

回到你想要进行更改的本地发布分支,在github上从那里拉取。

git checkout local-branch-that-refers-public-v0.2.0b
git pull origin release-v0.2.0b

接下来,将你提交到之前想要回退的提交的本地分支指针重置。

git checkout release-v0.2.0b
git reset HEAD^

-3

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