git标签将文件添加到以前的标签

时间:2015-09-23 01:33:29

标签: git git-tag

我想知道您在Git中的输入或推荐的工作流程,了解如何将单个文件添加到Git中的修订版本的先前标记。 当一个新的固件版本和固件文件需要可用于所有发行版本(标记为)时,就会出现这种情况。

在CVS中,我只需要cvs add该文件,并将其标记为V1.2,V1.3,依此类推。但是在Git中,当主人已经向前移动时,如何将这些特定文件或文件提供给标签呢?

目标是在repo中提供这些文件,以便任何想要生成发行版本的人都可以获取这些文件并将它们包含在发行版本中。

非常感谢!

2 个答案:

答案 0 :(得分:2)

CVS会标记单个文件,因此这有意义。

Git没有:标签只是特定提交的另一个名称。 1 提交是不可变的:您无法添加任何内容,删除任何内容或更改任何内容。 (这是因为提交"真实名称"是它的SHA-1,它是提交的每一位的密码校验和。改变一位,你改变校验和,改为获得一个新的,不同的提交。)

您可以做的是删除(或强制更改)标记,以便具有相同拼写的新标记引用新的不同提交。这会使已经复制旧标签的任何人感到困惑,因为他们认为他们已经拥有了正确的标签。所以,只有当你(a)不太关心他们,(b)确定他们不存在,和/或(c)要告诉他们必须删除他们的错误时才这样做标签

1 在git中,分支名称(如master只是一个特定提交的名称,除了每个人都同意特殊属性分支名称:它们随着时间的推移而变化,最好是在快速前进的情况下。方式,即master的未来版本可能指向新的提交,但无论新的提交是什么,它将 - 或者至少应该,在正常条件下 - 具有历史上的当前提交。

标签与分支不同,不会移动(或者不应该移动)。

答案 1 :(得分:2)

  

目标是在repo中提供这些文件,以便任何想要生成发行版本的人都可以获取这些文件并将它们包含在发行版本中。

有一种更好的方法可以实现更改发布标记的内容。它的发布后更改版本通常是不好的形式;当用户查看V1.2时,他们希望获得版本1.2。

请考虑单独保留发布代码,而是保留更新的stablemaintenanceV1.x分支。考虑遵循Semantic Versioning并将错误修正作为带有新标签的新版本发布:V1.2.1和V1.2.2等等。

如果您愿意,可以提供latest标记以指向最新版本。或者,如果您维护软件的多个版本,则可以使用V1-latest来指向版本1分支的最新版本。

# Move the V1-latest tag to the same commit as V1.2.2
git tag -f V1-latest V1.2.2

现在你怎么做你所要求的......

  

当主人员已向前移动时,如何使标签可以使用此特定文件?

Git中的标签只是一个指向提交的标签。你可以移动它们。通常git tag不允许你这样做,标签不应该移动,所以你必须用-f强制它。

因此,您需要对更改进行新的提交并将标记移动到那里。

  1. 查看代码:git checkout <name of the tag>
  2. 做出你喜欢的任何改变。
  3. 提交他们。
  4. 将代码移至新提交:git tag -f <name of the tag>
  5. Git会告诉你,你已经找到了一个独立的HEAD&#34;。这意味着没有分支指向此提交。没关系,你可以工作并做出提交。只是不要结帐另一个分支,直到你完成并移动了你的标签,否则你将失去你的位置。

    在视觉上思考它,你有类似的东西。

    F [master]
    |
    E
    |
    D
    |
    C {v1.2}
    |
    

    结帐v1.2后,进行更改并提交即可。

    F [master]
    |
    E
    |
    D G DETACHED-HEAD
    |/
    C {v1.2}
    |
    

    G包含您对v1.2的新更改。一旦git tag -f V1.2得到了这个。

    F [master]
    |
    E
    |
    D G {v1.2}
    |/
    C
    |