2014-01-06 311 views
1

如果我將git功能分支合併回主控,最好是刪除分支?合併後的git分支恢復

比方說,6個月後,我想復活那個被刪除的分支(假設一個新克隆的回購)。有沒有一種方法可以輕鬆地重新創建它,或者假設它被合併回到主文件中,從而找到它的歷史記錄?做這個的最好方式是什麼?

從閱讀其他問題,我發現如果我能找到那個分支的負責人,我可以輕鬆地重新創建它,但我該如何去做呢?某些其他答案引用「reflog」命令,但如果我剛剛克隆了回購,這不會返回任何有用的內容。

回答

2

合併後是否最好刪除分支取決於分支對您的工作流程意味着什麼。如果它是一個用於準備新版本的分支,一旦發佈準備就會合併到主版本中,那麼您就需要保留它。如果它是開發單個功能的一次性分支,那麼通常最好將其刪除,以免使用幾十個已完成的分支混亂輸出git branch

如果您希望稍後重新創建已刪除的分支,您只需找到與其上次提交相對應的SHA即可。如果您沒有方便使用reflog,則必須嘗試使用​​git log來查找。要做到這一點,最簡單的方法是將搜索與合併類似承諾:

# This should match the message of the merge commit, if you kept the default. 
git log --grep=branch-name 

一旦你找到了合併提交,你會看到列出了兩個家長:

commit 38bf1d168e73f9fa708c334e50f256578d5c2d8f 
Merge: a08b280 d7725b0 

的第一個親合併前的狀態爲master;第二個是合併的分支的狀態,這是你想要的。重新創建分支那裏與檢查出來:

git checkout -b branch-name d7725b0 

一點題外話,如果合併不是快進合併這隻會工作。快進合併只需將HEAD拉到正在合併的引用,所以它不會創建合併提交。您可以強制git的總是作出新的承諾,當您合併使用:

git merge --no-ff branch-name 

如果你總是希望這是你可以設置它在你的配置情況:

git config branch.master.mergeoptions "--no-ff" 
+0

我假設從合併的分支開始以來沒有對主設備進行更改,只會發生快進合併? – KyleL

+1

正確。您會在「合併」的輸出中看到關於它的註釋。以下是更多解釋:http://ariya.ofilabs.com/2013/09/fast-forward-git-merge.html –