【问题标题】:How to know which tag was checked out previously如何知道之前签出的标签
【发布时间】:2014-03-23 00:20:09
【问题描述】:

在标签列表中

v001
v002
v003
v004
v005

我通过git fetch --tagsgit checkout v006 提取了新标签,比如说v006

错误地,我没有注意到在新结帐之前签出了哪个版本 (git describe --tags)。似乎有错误,我必须恢复到旧标签。我怎么知道使用了哪个标签?

【问题讨论】:

    标签: git revert git-revert


    【解决方案1】:

    HEAD reflog 会记录每次成功的结帐以及“从(A 点)移动到(B 点)”的文字,例如:

    $ git reflog
    676699a HEAD@{0}: checkout: moving from
            695326c489285ed5678ac04d58289bcb24019bb9 to tag2
    695326c HEAD@{1}: checkout: moving from master to tag1
    

    在这种情况下,我从master 开始,然后是git checkout tag,然后是git checkout tag2。 (注意:我稍微编辑了输出以使其更适合发布。如果您将 git 设置为通过“less”管道,您可能需要在窗口中向左/向右滚动才能查看所有内容。)

    第一个输出行(我将其包装成第三行引用的行)具有原始 SHA-1,因为当您签出不是分支的引用时(或者,当您将 --detach 与分支一起使用时)您会得到一个“分离的 HEAD”,其中 HEAD 文件记录了原始提交 SHA-1。但是,我们可以从下一行看到695326c489285ed5678ac04d58289bcb24019bb9 是标签tag1 的SHA-1。


    注意:你说“似乎有错误,我必须恢复到旧标签”,然后(通过 Stack Overflow 标签)参考 git-revert。但是,这些类型的git checkout(通过标签或 SHA-1)是关于查看其他版本(即,将特定版本放入您的工作目录)。 git revert 命令是关于添加一个 new 提交,其效果是撤消一些 old 提交。

    一般来说,如果您“在一个分支上”(如git checkout mastergit checkout develop 或其他分支名称),并且您发现有人向该分支提交了不正确的代码,您通常只想git revert,并且需要“反向应用”他们之前的更改并进行新的提交(然后您可能会发布,git push 或提出拉取请求)。所以当你一直在做的是查看旧版本时,恢复到“还原”似乎很奇怪。

    【讨论】:

    • git reflog 向我展示了我需要知道的一切......非常感谢您
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多