2011-08-24 81 views
1

我的使用情況是這樣的:我可以將分支合併到舊的提交併保留標記嗎?

  1. 標記主V1.0
  2. 並在掌握一些變化
  3. 活蟲意味着我需要打補丁V1.0
  4. 我從V1創建一個分支0.0承諾進行更改,並承諾
  5. 我然後標記分支V1.0.1

那麼我想分支合併回主。如果我這樣做,v1.0.1標籤最終會在第2點的master上發生更改(正如您所期望的)。

我猜的答案是否定的,但反正是有分支合併到提交讓我1.0.1標籤附在提交V1.0之後和之前掌握的其他變化。實際上,我認爲我的改變能夠及時推進。

或者是問題真的是我的工作流程,我應該在一個分支使我在2的變化,只有合併他們掌握時,他們住。

回答

1

標籤是不變的,所以您的問題更多的是提交的順序。

你可以做什麼是分支1.0.1版的頂底墊master

git checkout master 
git rebase v1.0.1 

這樣一來,在master兩個新的變化重播上V1.0.1頂部。
如果您尚未發佈master,rebase是將修復集成到當前分支的便捷方式。

請參閱 「git rebase vs git merge」 爲多。


由於Graham指出的意見,如果你對master變化已經推,重訂他們可以拼寫爲有你的同事的麻煩已經退出master
請參閱「Rebasing and what does one mean by rebasing pushed commits」。

在這種情況下,它是韌皮到:

  • 作出了「next」分支
  • 合併V1.0.1的變化master(當時反映什麼在生產中運行的所有次)
  • master準備

(但如果next需要時合併next補丁,那麼是的,你將被迫應用之後你的變化,因爲上述變更已經發布,即推送到遠程回購)

+0

太棒了。 Git越發現我越瞭解它。 – Ian1971

+0

您需要小心的一件事是在您已經推送代碼後更改歷史記錄。如果你推動了,那麼改變歷史就意味着你必須強制推動 - 然後任何開發者都必須強制推動。強制它會導致人們失去工作,所以要小心。我會說是的,你的工作流程被打破了,你需要更多的分支。 –

+0

@格拉漢姆:沒錯,這就是爲什麼我在回答中提到「如果你還沒有發佈高手」。欲瞭解更多,請參閱http://stackoverflow.com/questions/2715085/rebasing-and-what-does-one-mean-by-rebasing-pushed-commits – VonC

相關問題