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

将分支中最新选定的文件标记为GIT中的现有标记,git,Git,假设我正在处理一个分支,比如说B,并在GIT中推送到远程存储库。在某个时间点,比如T1,我创建了一个名为T的新标记,然后再次在分支B中进行一些更改。因此,在时间T2(即现在),分支比标记早几次提交。我想将这些选定的新文件从分支(时间T1和T2之间的修改文件)再次移动到远程存储库中的标记T 我知道我可以远程删除标记T并从分支B再次创建新标记。但我不希望所有文件都从分支标记。相反,我希望将某些文件(在T1和T2之间修改)从最新分支移动到现有标记 有什么办法可以这样做吗?“我不希望所有文件都从分支中标

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

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

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

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

在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
然后将这些更改推送到远程repo:
git push--tags

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


另请参见

对不起,我想我没有解释清楚。我将提交C1时创建的标记T推送到远程repo。所以T不是本地标记。之后,C2在分支中发生。我想将所选文件(C1和C2之间)移动到现有标记T(本地和远程均可使用)。“T不是本地标记”。。。你是说它不存在于你的本地存储库中?要使用标记T将C2放到远程回购中,您应该在本地存储库中使用T标记C2。然后将其(使用git push--tags)推送到远程。现在我很清楚,GIT不可能做到这一点,因为它将每个提交都维护为快照。感谢您提供的信息。仅供参考与
git标记一起使用的-f标志将覆盖现有标记(它是--force的缩写)。