0

假设我正在一个分支上工作,比如 B,并对 GIT 中的远程存储库进行一些推送。在某个时间点说 T1,我创建了一个名为 T 的新标签,然后再次在分支 B 中进行了一些更改。所以在时间 T2(即现在),该分支领先于标签几个提交。我想将那些选定的新文件从分支(时间 T1 和 T2 之间的修改文件)再次移动到远程存储库中的标记 T。

我知道我可以远程删除标记 T 并从分支 B 再次创建一个新标记。但我不希望所有文件都从分支标记。相反,我想将某些文件(在 T1 和 T2 之间修改)从最新分支移动到现有标签。

有什么办法我可以这样做吗?

4

1 回答 1

0

“我不希望所有从分支标记的文件”?

在 git 中,标签指向特定的提交(在 .git/refs/tags 中查看您拥有的标签列表,每个标签都是一个包含标签所属的 SHA-1 的文件)。

在您的示例中,您在 T1 时间进行了提交(我们称之为 C1),我假设在 T2 时间进行了提交(C2)。您已将 C1 标记为“T”。

现在您想将 C2 推送到您的远程存储库,但将远程存储库上的标签移动到 C2 ...但将您的本地标签 T 保留在 C1?

我想说你应该避免这种情况(如果有一个同名的标签,但在本地和远程指向不同的提交,会让人感到困惑)。

因此,我建议您将本地标签移动到 C2(假设这是分支 B 的当前提示):git checkout B; git tag -f T然后将这些更改推送到您的远程仓库:git push --tags <remote>

当然最好不要移动标签,只需创建一个新标签。或者在你确定你已经拥有你想要的存储库之前不要推送到远程存储库。

另请参阅如何将 git 分支上的标签移动到不同的提交?

于 2013-02-26T14:51:32.040 回答