106

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

git revert -bytag "Version 1.0 Revision 1.5"

这可能吗?

4

4 回答 4

152

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

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

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

    git reset --hard tagname
    
  2. 在顶部生成还原提交以使您进入标记状态:

    git revert tag
    

如果您有合并提交,这可能会引入一些冲突。

于 2013-08-21T09:49:46.133 回答
14

使用git 重置

git reset --hard "Version 1.0 Revision 1.5"

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

于 2013-08-20T21:21:25.690 回答
3

您可以使用 git checkout。

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

但是正如答案所述,标签的行为就像指向提交的指针,因此就像使用提交哈希一样,您只需签出标签即可。唯一的区别是你在它前面加上tags/

git checkout tags/<tagname>

于 2020-10-04T09:46:41.307 回答
1

如果你是:

  • 确定要返回哪个提交
  • 在那之后摆脱所有的提交
  • 将更改应用到您的遥控器
  1. 重置为名为的标签reset-to-here

    git reset --hard reset-to-here
    
  2. 将您的更改推送到远程强制+

    git push origin +master
    
于 2021-05-27T18:17:07.307 回答