你如何恢复到Git中的特定标签?

时间:2013-08-20 21:17:28

标签: git tags tagging revert

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

git revert -bytag "Version 1.0 Revision 1.5"

这可能吗?

4 个答案:

答案 0 :(得分:94)

Git标签只是提交的指针。因此,您可以像使用HEAD,分支名称或提交sha哈希一样使用它们。您可以在任何接受commit / revision参数的git命令中使用标记。您可以使用git rev-parse tagname进行尝试以显示它指向的提交。

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

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

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

    git revert tag
    
  3. 如果你有合并提交,这可能会引入一些冲突。

答案 1 :(得分:10)

使用git reset

git reset --hard "Version 1.0 Revision 1.5"

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

答案 2 :(得分:1)

您可以使用git checkout。

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

但是,正如答案所指出的那样,标签的行为确实类似于指向提交的指针,因此,就像处理提交哈希一样,您只需签出标签即可。唯一的不同是您以tags/开头:

git checkout tags/<tagname>

答案 3 :(得分:0)

如果您是:

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

    的标签
    git reset --hard reset-to-here
    
  2. 通过 +

    将您的更改推送到远程强制
    git push origin +master