恢复分支会更改git describe的标记名称

时间:2013-04-25 13:54:54

标签: git git-tag git-revert

我刚学会了如何恢复分支。这很好。问题是,我标记了主提交,我计划使用git describe命令根据最新标记创建部署。还原提交会创建一个新提交,因此git describe命令会使用提交修改输出标记,如下所示:

在:

git describe
1-2-0

将'back'恢复为此提交后:

git describe
1-2-0-1ga99ae04

有没有办法克服这个问题?或者我应该以不同的方式获得最新的标签?

1 个答案:

答案 0 :(得分:1)

要清楚。你真的不会“回归”。假设您有以下历史记录。

A<--B<--C<--D
            |
        (tag:1-2-0)

现在说你还原C。这就是发生的事情。

A<--B<--C<--D<--E
            |
        (tag:1-2-0)

正如你所看到的,你已经在历史上前进了。如果此标记已经发布,那么您可能希望将其视为“修补程序”,并再次标记为1-2-0-1,或者沿着这些行标记。不确定你的版本号方案是什么,所以很明显只是在你的过程中使用修补程序。

考虑到此更改,修补程序将导致此更新。

           (tag:1-2-0-1)
                | 
A<--B<--C<--D<--E
            |
        (tag:1-2-0)

但是,如果您尚未释放或甚至将此标记推送到遥控器,并且只想将标记移动到指向E,那么您可以通过两种方式执行此操作。容易记住的方法是删除标签并重新创建它。

git tag -d 1-2-0
git tag 1-2-0 E

更改标记而不删除标记的更短,更快,但无限友好的方法是使用update-ref

git update-ref refs/tags/1-2-0 E

在奇怪的情况下,您已将标签向上推,并希望将其从遥控器中删除,请使用以下语法。

git push <remote> :1-2-0

假设原点是你的遥控器。