2014-11-20 47 views
1

我有一個標籤(v1,v2等)的主分支。客戶端仍然從構建服務器下載不同版本。我們需要爲每個版本提供一個熱修復(安全問題)。現在我可以從每個標籤上應用熱修復,但不知道如何再次推回到同一個標籤?我不想再將舊版本推到主分支的前面..我不知道什麼是正確的方法來做到這一點?我可以推動修補程序到git中的標籤

回答

5

假設master包含的修補程序提交和已經領先於v1v2的:

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.1v2.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 
+0

這看起來不錯! - 讓我測試一下..謝謝:) – user3784080 2014-11-21 19:26:55

+1

很好的答案。 太糟糕OP沒有標記它 – estoy 2017-02-09 09:54:05

相關問題