2013-03-06 96 views
3

我對Git非常陌生,但對它提供的輕量級分支/合併印象非常深刻。Git合併修補程序分支到功能分支,然後刪除修補程序分支?

我有三個分支在我的倉庫:

master 
1.1.0 
1.0.x 

我已在1.0.x分公司速戰速決,但我不知道我是否應該立即合併這些更改回1.1.0?或者是否建議等到1.1.0分支準備好作爲次要版本發佈以合併修補程序?

而且也,此圖像中:

git-scm branching

我假裝iss53 = 1.0.xmaster = 1.1.0的這個例子。一旦我的1.0.x修補程序分支中的更改合併回1.1.0功能分支,我可以繼續在1.0.x分支上工作嗎?

如果我犯了變化,而工作的1.0.x分公司,上述合併後,將它只是從一個假設C7創建一個新的水平鏈路(以圖片在視覺)承諾,與單親C5,還是會有兩個父母,C5C6

git-book(Git - Basic Branching and Merging)的這一部分也提到在完成分支後刪除分支,但不幸的是並沒有顯示圖表之後的樣子。當然提交仍然存在 - 標籤是否被刪除? (在上面的例子中爲iss53)。一旦該分支被移除,如果您發現問題53未完全修復,可以繼續從C5工作,創建另一個iss53分支,或者您是否必須給它一個不同的分支名稱,如iss53_2

回答

1

只要你確定改變是好的並且需要進入該分支,我會立即合併它。先前合併更有可能在沒有手動操作的情況下成功:)

如果您刪除分支,樹將保持完全相同,只有分支的標籤消失。如果您有任何不再可從任何標籤訪問的提交,那麼它們最終可能會被垃圾收集刪除,但它會將它們保留幾周,而且這不是這種情況,因爲您的所有提交在某個分支中仍然可以訪問。

您可以再次輕鬆地創建分支,只需執行「git checkout -b iss53 xxxxxx」,其中xxxxx是您希望基於其提交的提交十六進制代碼。 git reflog可以幫助您找到所需的提交,因爲它顯示了所有最近的歷史記錄。

+0

謝謝! 「如果您有任何不再可從任何標籤訪問的提交,那麼它們最終可能會被垃圾收集刪除......」您可以擴展它嗎?我何時可以有一個無法訪問的分支?在我發現有兩個父母的合併提交(如C6)之後,我是否仍然能夠跟蹤父母的方式? – 2013-03-06 17:27:40

+1

@CraigOtis我認爲@jcoder意味着提交應該在某些時候被垃圾回收,而不會被其他提交或標籤引用。當你刪除一個分支時,該分支不見了,它的reflog也不見了。在你的圖中,刪除'iss53'但所有提交都是安全的;但刪除主人,C4和C6是不安全的。 – 2013-03-07 06:04:24

相關問題