1

我刚刚学会了如何恢复分支。这很好用。问题是,我标记了 master 的提交,并且我计划使用该git describe命令来创建基于最新标记的部署。恢复提交会创建一个新的提交,因此该git describe命令会输出带有提交修改的标签,如下所示:

前:

git describe
1-2-0

恢复“返回”到此提交后:

git describe
1-2-0-1ga99ae04

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

4

1 回答 1

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

假设来源是您的遥控器。

于 2013-04-25T16:04:42.973 回答