2015-08-14 79 views
9

我最近得到了一個任務,添加一個特定的功能,我正在工作的項目。由於該功能依賴於舊代碼,這是殘酷的使用,我決定在2步拆分任務:Git重用分支或刪除並再次創建

  • 重構舊代碼應該更適合
  • 創建功能使用重構的代碼

我創建了一個分支專長/ foo,重構完成後,我將它合併到我們的主設備中,以便我們可以直接使用這些更改。現在,我留下了以下提交歷史:

A ---> B ---> C --> E ---> F <master B: created branch feat/foo 
     |   ^    D: refactoring finished 
     D -----------|     C: changes in master in between 
    ^       E: merge commit 
    feat/foo       F: master is now here 

壯舉/富仍然指向d,和我掌握先進要在提交F.我會怎麼做,現在繼續在分支這個任務我的工作壯舉/富?我看到兩種可能性:

  • 要麼刪除壯舉/ foo和再次checkout -b,所以我有一個具有相同的名稱作爲我的老枝新枝,
  • 或以某種方式「再利用」的壯舉/ foo,它我不知道該怎麼辦

第一個解決方案對我來說感覺不太合適,刪除分支只是爲了再次創建它似乎是「錯誤的」。但我不知道如何重複使用它。

我該怎麼辦?刪除並重新創建分支,或者如果正確的答案將重新使用它,如何?

回答

5

在許多工作流程中,一旦功能分支合併回master,它就被刪除。 GitHub可能就是這方面的最好例子。如果你遵循這個思想流派,你會刪除feat/foo併爲你的下一個衝刺創建一個新的功能分支。

如果您確實想繼續使用該分支,那麼您必須在master上重設feat/foo或將master合併爲feat/foo。我認爲沒有任何優勢來重組,這可能很麻煩,所以我們考慮合併。您在承諾E處合併feat/foomaster。因此master已經全部從feat/foo的功能,但反之則不然,即feat/foo很可能是失蹤已引入master因爲犯D幾個特點。做合併,你會使用這個命令:

git checkout feat/foo 
git merge master 

您可能必須解決合併在master於新的功能出現,其尚未在feat/foo分支衝突。

現在feat/foo分支是最新的主人,你可以繼續使用它,如果你願意。就個人而言,我只想離開feat/foo,並創建一個全新的功能分支。你可以保留它幾次衝刺,直到你確定刪除它安全。

+0

謝謝,我真的沒有想到將主人合併回feat/foo,但現在看起來如此明顯。儘管我會考慮按照你的說法行事,並且只留下feat/foo,並開始在新的分支上工作,因爲這可能會更乾淨。 – Alex

5

,因爲你需要繼續支feat/foo工作,要做的第一件事情就是籤吧:

git checkout feat/foo 

因爲你沒完成你繼續工作,並承諾在對新功能的工作直到你完成工作,並準備將它合併回主。

不時從分支機構調入最新的變化是很好的。你通過運行:

git merge master 

而你在feat/foo分支。

刪除分支只是爲了重新創建分支沒​​有什麼意義。 git checkout feat/foo然後git merge master產生相同的結果。