我有一个带标签的主分支(v1,v2等)..客户端仍然从构建服务器下载不同的版本。我们需要对每个版本进行热修复(安全问题)。现在我可以从每个标签中提取应用热修复但不知道如何再次推回到相同的标签?我不想再将旧版本推到主分支的前面..我不知道这是一种正确的方法吗?
答案 0 :(得分:8)
假设master
包含修补程序提交,并且已经领先于v1
和v2
:
git checkout v1
git cherry-pick <commit-with-hotfix>
git tag v1.1
git checkout v2
git cherry-pick <commit-with-hotfix>
git tag v2.1
git push --tags origin
git checkout master
签出代码时,您会收到有关detached HEAD
的警告。不用担心。
将标签从一个版本移动到另一个版本是非常邪恶和粗鲁的,就像在野外一样,每个人都指标签的软件版本。如果你这样做,在引用v1
时你永远不会知道某人是否有hotfixed版本。因此v1.1
和v2.1
。
git help tag
有很长一段关于重拍的内容。一般建议:不要。
如果您绝对坚持在同一标签下更新软件,那么它们可以被删除。 v1
的示例:
git checkout v1
git cherry-pick <commit-with-hotfix>
git tag -d v1
git tag v1
git push --force --tags origin