我刚学会如何还原分支。这工作正常。事情是,我标记了主人的提交,并且我打算使用git describe
命令来创建基于最新标记的部署。还原提交创建一个新的提交,所以git describe
命令输出与提交ammend标签,就像这样:还原分支更改git的标记名称描述
前:
git describe
1-2-0
恢复“回”到在此之后提交:
git describe
1-2-0-1ga99ae04
有没有办法解决这个问题?或者我应该得到不同的最新标签?
我刚学会如何还原分支。这工作正常。事情是,我标记了主人的提交,并且我打算使用git describe
命令来创建基于最新标记的部署。还原提交创建一个新的提交,所以git describe
命令输出与提交ammend标签,就像这样:还原分支更改git的标记名称描述
前:
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
假设原产地是您的遥远。
你想要什么样的行为?看起来你不希望Git告诉你,如果在此之后提交了1-2-0标记,并且没有任何更改,即使某些提交反转了其他一些提交。如果你想回到1-2-0标签,只需'git checkout 1-2-0'。 – 2013-04-25 14:08:30
是的,我明白你的意思。我不能只检出1-2-0标签,因为我想将分支实际恢复到该状态。我希望它完全恢复的行为并使主分支处于1-2-0状态。 – Kriem 2013-04-25 14:22:17