我有一个带有两个分支的git存储库;一个用于制造/测试的代码,一个是实际的生产固件(它们几乎相同)。现在是时候将一个版本发送给制造商了,所以我自然想在两个分支上放下一些合适的标签。
但是,似乎git不允许我在两个分支上放置相同的标记名称。如果我尝试单独标记分支,它会告诉我当我去标记秒分支时标记已经存在。我尝试将两个提交传递给git标签,但它也不喜欢这样。我不一定总是以锁步方式标记两个分支,但我不想在标记中添加随机字符以避免名称冲突。
有没有办法做我想做的事,或者我想做错事?
一个分支是制造商在设备上测试它是否正确组装的代码。另一个分支是产品中附带的代码。每个版本实际上并不是两个分支。这是该产品的第一个版本,因此是两个分支的第一个版本,因此我尝试使用'release-1.0'标记两个分支。
答案 0 :(得分:14)
你想做错事。标记的目的是明确地标识特定修订。如果我是你,我只会标记生产分支并让测试分支无标记。
然而,每次发布你有两个独立的分支是很奇怪的。为什么是这样?答案可能有助于描述更好的解决方案。
由于标签不是真的应该指向相同的修订版,而是(可能)不同的修订版,标签应该是这样的:
appname-1.0-manufacturing
appname-1.0-production
这样,您就会知道每个标签属于哪个版本,以及代码最终的位置。
答案 1 :(得分:5)
标签只是为单个提交命名,所以不,可能没有办法做你想做的事。
我很好奇期望的结果是什么。我的意思是,标签的一个目的是成为一个您可以稍后结账的名称。所以,如果你在引用两个分支的标签上git checkout
,会发生什么?
答案 2 :(得分:2)
迟到了,但另一种选择是合并两个分支,所以在任何时候提交都包含测试代码和生产代码的状态,假设它们可以共存而不会发生冲突(在这种情况下它归结为合并将是多么困难,是否值得尝试这一点)。这也有助于避免意外标记错误分支的情况,这可能会在您标记测试分支和生产分支时保持同步。