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

zac*_*618 74 tags git tagging revert

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

git revert -bytag "Version 1.0 Revision 1.5"
Run Code Online (Sandbox Code Playgroud)

这可能吗?

jur*_*lic 112

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

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

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

    git reset --hard tagname
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在顶部生成恢复提交以使您进入标记的状态:

    git revert tag
    
    Run Code Online (Sandbox Code Playgroud)

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

  • 我认为"git revert <tag>"会恢复标记提交中的更改,而不是将工作副本还原到该版本. (18认同)
  • 就像@Matt所说,接受的答案根本不正确,因为它只恢复标记提交中的更改。你最好的选择是使用提交哈希,并遵循这个答案:/sf/answers/287988571/ (5认同)
  • 你好,你能解释一下“在顶部生成恢复提交以使你进入标签的状态:”吗?不幸的是,我不知道这意味着什么。 (2认同)

dev*_*ull 10

使用git reset:

git reset --hard "Version 1.0 Revision 1.5"
Run Code Online (Sandbox Code Playgroud)

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


ZZZ*_*ZZZ 6

如果你是:

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

    git reset --hard reset-to-here
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将您的更改推送到远程强制+

    git push origin +master
    
    Run Code Online (Sandbox Code Playgroud)