将分支中的最新选定文件标记为GIT中的现有标记

时间:2013-02-26 14:37:56

标签: git

假设我在一个分支上说B并且在GIT中做一些推送到远程存储库。在某个时间点说T1,我创建了一个名为T的新标签,然后再在分支B中做了一些更改。因此,在时间T2(即现在),分支在标签之前几次提交。我想将这些选定的新文件从分支(时间T1和T2之间的修改文件)再次移动到远程存储库中的标记T.

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

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

1 个答案:

答案 0 :(得分:0)

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

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

在你的例子中,你有一个提交(让我们称之为C1)在时间T1,并且我假设,提交(C2)在时间T2。 您已将C1标记为“T”。

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

我会说你应该避免这种情况(如果标签具有相同的名称,但指向本地与远程的不同提交,则会令人困惑。)

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

当然最好不要移动标签,只需创建一个新标签。或者,在确定按照自己的方式获得存储库之前,不要推送到远程存储库。

另见How can I move a tag on a git branch to a different commit?