1
我有一個標籤(v1,v2等)的主分支。客戶端仍然從構建服務器下載不同版本。我們需要爲每個版本提供一個熱修復(安全問題)。現在我可以從每個標籤上應用熱修復,但不知道如何再次推回到同一個標籤?我不想再將舊版本推到主分支的前面..我不知道什麼是正確的方法來做到這一點?我可以推動修補程序到git中的標籤
我有一個標籤(v1,v2等)的主分支。客戶端仍然從構建服務器下載不同版本。我們需要爲每個版本提供一個熱修復(安全問題)。現在我可以從每個標籤上應用熱修復,但不知道如何再次推回到同一個標籤?我不想再將舊版本推到主分支的前面..我不知道什麼是正確的方法來做到這一點?我可以推動修補程序到git中的標籤
假設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
這看起來不錯! - 讓我測試一下..謝謝:) – user3784080 2014-11-21 19:26:55
很好的答案。 太糟糕OP沒有標記它 – estoy 2017-02-09 09:54:05