如何将主分支恢复为git中的标记?

Man*_*ran 76 git

我们有分支机构的起源和发展.主人的初始状态被标记为tag_ABC.

我们对开发分支进行了很少的更改并推向了原点.然后我们不小心将发展合并到了主人并推向了原点.

现在我们想将master恢复到检查点tag_ABC.我们怎么做?

Paw*_*rok 150

你可以做

git checkout master
git reset --hard tag_ABC
git push --force origin master
Run Code Online (Sandbox Code Playgroud)

请注意,这将覆盖上游仓库中的现有历史记录,并可能导致其他已签出此仓库的开发人员出现问题.

  • 这样所有的分支都会被强行推动.你可能想尝试`git push --force origin master` (5认同)

小智 63

这不是问题的直接答案,但在搜索将分支代码恢复为标记版本的方法时会返回此页面.

另一种方法是在分支的当前状态和要恢复的标记之间创建差异,然后将其应用于分支.这样可以保持版本历史记录的正确性并显示正在进行的更改然后再次返回.

假设您的分支被称为master,而您想要返回的标记称为1.1.1

git checkout 1.1.1
git diff master > ~/diff.patch
git checkout master
cat ~/diff.patch | git apply
git commit -am 'Rolled back to version 1.1.1'
git push origin master
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,因为它保持历史完整,并且不会给已经签出回购的其他人带来问题. (15认同)