如何在 Git 中恢复到特定的标记?

我知道如何在 Git 分支中恢复到较早的提交,但是如何恢复到由标记指定的分支状态?我设想的事情是这样的:

git revert -bytag "Version 1.0 Revision 1.5"

这可能吗?

141726 次浏览

使用 基特复位:

git reset --hard "Version 1.0 Revision 1.5"

(假设指定的字符串是标记)。

Git 标记只是指向提交的指针。因此,您使用它们的方式与使用 HEAD、分支名称或提交 sha 散列的方式相同。您可以将标记与任何接受提交/修订参数的 git 命令一起使用。您可以尝试使用 git rev-parse tagname来显示它所指向的提交。

在你的情况下,你至少有两种选择:

  1. 将当前分支重置为特定的标记:

    git reset --hard tagname
    
  2. Generate revert commit on top to get you to the state of the tag:

    git revert tag
    

This might introduce some conflicts if you have merge commits though.

你可以使用 git checkout。

我尝试了接受的解决方案,但得到了一个错误,warning: refname '<tagname>' is ambiguous'

But as the answer states, tags do behave like a pointer to a commit, so as you would with a commit hash, you can just checkout the tag. The only difference is you preface it with tags/:

git checkout tags/<tagname>

如果你是:

  • 确定你想回到哪个承诺
  • 在那之后就可以删除所有的提交了
  • 对遥控器应用更改
  1. 重置为名为 reset-to-here的标记

    git reset --hard reset-to-here
    
  2. 通过 +将更改推到远程强制

    git push origin +master