如果我將git功能分支合併回主控,最好是刪除分支?合併後的git分支恢復
比方說,6個月後,我想復活那個被刪除的分支(假設一個新克隆的回購)。有沒有一種方法可以輕鬆地重新創建它,或者假設它被合併回到主文件中,從而找到它的歷史記錄?做這個的最好方式是什麼?
從閱讀其他問題,我發現如果我能找到那個分支的負責人,我可以輕鬆地重新創建它,但我該如何去做呢?某些其他答案引用「reflog」命令,但如果我剛剛克隆了回購,這不會返回任何有用的內容。
如果我將git功能分支合併回主控,最好是刪除分支?合併後的git分支恢復
比方說,6個月後,我想復活那個被刪除的分支(假設一個新克隆的回購)。有沒有一種方法可以輕鬆地重新創建它,或者假設它被合併回到主文件中,從而找到它的歷史記錄?做這個的最好方式是什麼?
從閱讀其他問題,我發現如果我能找到那個分支的負責人,我可以輕鬆地重新創建它,但我該如何去做呢?某些其他答案引用「reflog」命令,但如果我剛剛克隆了回購,這不會返回任何有用的內容。
合併後是否最好刪除分支取決於分支對您的工作流程意味着什麼。如果它是一個用於準備新版本的分支,一旦發佈準備就會合併到主版本中,那麼您就需要保留它。如果它是開發單個功能的一次性分支,那麼通常最好將其刪除,以免使用幾十個已完成的分支混亂輸出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"
我假設從合併的分支開始以來沒有對主設備進行更改,只會發生快進合併? – KyleL
正確。您會在「合併」的輸出中看到關於它的註釋。以下是更多解釋:http://ariya.ofilabs.com/2013/09/fast-forward-git-merge.html –