我希望你能够将git分支转换为git标签的最佳且安全的方法。在手动移植svn存储库时,我基本上复制了所有的分支,并且我们每个小版本(1.1、1.2、1.3)都有一个分支,老实说这可能不是最好的做法,但出于速度考虑,当时我更喜欢使用分支而不是标签。现在,我有1.5、1.6、1.7、1.8等分支,但由于我们始终只有一个版本的代码部署在任何给定时间,我可能只需要将最后一个版本作为分支,以防需要对已部署的版本进行任何热修复。因此,我正在寻找将git分支转换为git标签的最佳方法。我认为我有一种方法,但不确定它有多好。
到目前为止,我所做的是针对我想要转换为标签的每个分支,我已经检查确保这些分支中没有提交不在主分支中的提交,所以我执行了:
所有这些都没有返回任何结果,我相信这意味着这些分支中的所有提交都存在于主分支中。我这样做是因为我假设如果这些分支中有提交不在主分支中,那么当将分支转换为标签时,我会失去它们,因为标签只是指向一个提交而不是开发线。看起来很好,我的假设是我只需要执行以下操作:
到目前为止,我所做的是针对我想要转换为标签的每个分支,我已经检查确保这些分支中没有提交不在主分支中的提交,所以我执行了:
git log 1.5 ^master
git log 1.6 ^master
git log 1.7 ^master
所有这些都没有返回任何结果,我相信这意味着这些分支中的所有提交都存在于主分支中。我这样做是因为我假设如果这些分支中有提交不在主分支中,那么当将分支转换为标签时,我会失去它们,因为标签只是指向一个提交而不是开发线。看起来很好,我的假设是我只需要执行以下操作:
git tag 1.5v 1.5
git tag 1.6v 1.6
git tag 1.7v 1.7
那么,我只需要在本地删除分支并将更改推送到远程存储库。这是将git分支转换为git标记的最佳方法吗?
还有一个问题是,如果有人从1.7创建了一个分支(不应该这样做),并且他们拉取删除该分支的更改,他们能否将这些更改合并到另一个分支(比如主分支)中,或者这会破坏他们创建的分支?这种情况不应该发生,因为没有人应该从版本1.8之外的任何版本创建分支,但人们并不总是正确地遵循程序,所以我想确保有一种方法可以解决这个问题。