我刚刚学会了如何恢复分支。这很好用。问题是,我标记了 master 的提交,并且我计划使用该git describe
命令来创建基于最新标记的部署。恢复提交会创建一个新的提交,因此该git describe
命令会输出带有提交修改的标签,如下所示:
前:
git describe
1-2-0
恢复“返回”到此提交后:
git describe
1-2-0-1ga99ae04
有没有办法克服这个问题?还是我应该以不同的方式获取最新标签?
我刚刚学会了如何恢复分支。这很好用。问题是,我标记了 master 的提交,并且我计划使用该git describe
命令来创建基于最新标记的部署。恢复提交会创建一个新的提交,因此该git describe
命令会输出带有提交修改的标签,如下所示:
前:
git describe
1-2-0
恢复“返回”到此提交后:
git describe
1-2-0-1ga99ae04
有没有办法克服这个问题?还是我应该以不同的方式获取最新标签?
只是要清楚。你并没有真正恢复“回来”。假设您有以下历史记录。
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
假设来源是您的遥控器。