我创建了一个 git 标签,但随后我做了一些其他的提交,其中一个需要在标签中,其他的则不需要。
例如:
git commit 123
git commit 456
git commit 789
git commit 1011
git commit 1213
我在 point 处做了一个标签1011
,但现在我想添加提交123
,而不是介于两者之间的任何一个。有什么办法吗?
我创建了一个 git 标签,但随后我做了一些其他的提交,其中一个需要在标签中,其他的则不需要。
例如:
git commit 123
git commit 456
git commit 789
git commit 1011
git commit 1213
我在 point 处做了一个标签1011
,但现在我想添加提交123
,而不是介于两者之间的任何一个。有什么办法吗?
从您的标签开始,您需要挑选要包含的单个提交。然后,您将移动标签以指向新状态。
git checkout my_tag
git cherry-pick commit_123
git tag -f my_tag
将标签视为分支可能会有所帮助。就像分支一样,标签是指提交历史中的特定点。所以你想要做的是有效地创建一个具有不同提交历史的新分支,然后标记该新状态。检查你当前的标签会让你回到原来的点,cherrypicking 拉入你想要添加的单个提交,然后重新标记保存新的分支状态。您需要-f
“移动”标签的选项,否则您会收到tag 'my_tag' already exists
错误消息。
我认为您的术语混淆了。
git commit
时会将提交添加到当前分支。目前尚不清楚您是否只是指分支而不是标签,或者您是否在问为什么 eg 的输出git log mytag
显示自 1011 年以来的所有提交。
git log mytag
将记录标记为的提交mytag
及其所有父项。
如果您的意思是分支并且您创建的分支在其历史记录中尚未包含提交 123,那么您可以git cherry-pick
。
写这篇文章,我意识到您可能还意味着如何将提交 123 添加到由git log mytag
. 为此,您需要在该点创建一个新分支git checkout -b mybranch mytag
,然后樱桃选择提交 123,然后将标签移动到新提交,使用git tag -f
. 然后你可以回到你以前的分支(例如git checkout master
)。然后,您以前的分支将有不同的历史,分支已经分道扬镳。
如果所有更改仍然是本地的,您应该能够压缩1213
提交1011
并重新标记压缩的提交。