我不想82 feature branches hanging around結束了,所以我想知道什麼是潛在的缺點是簡單的,只要我把它合併到主刪除特性分支。何時適合刪除git功能分支?
工作流程:
git co -b feat-xyz
hack hack
git ci
hack some more
git ci
git co master
git merge feat-xyz
smoke test
git br -d feat-xyz
任何問題嗎?
我不想82 feature branches hanging around結束了,所以我想知道什麼是潛在的缺點是簡單的,只要我把它合併到主刪除特性分支。何時適合刪除git功能分支?
工作流程:
git co -b feat-xyz
hack hack
git ci
hack some more
git ci
git co master
git merge feat-xyz
smoke test
git br -d feat-xyz
任何問題嗎?
合併後刪除是通常的方式。這就是爲什麼git branch -d
檢查以確保分支在刪除之前完全合併的原因。
有幾個原因可以讓我想到分支:你可能想要堅持下去,以防一旦有bug返回生產,或者你可能需要一個歷史記錄。
在這兩種情況下,你必須標記分支的頭部刪除之前的選項。標籤就像一個分支,它是一個指向提交的指針,除了一些細微差別:1)瓷器通常不會在探索性命令中顯示標籤,例如git show-branch或tab-auto在結帳時完成,2)檢查一個出你把你放在一個分離(非參考)頭3)你可以留下一個「tagging message」,這導致標籤被保存爲對象存儲中的對象,如提交。
這樣你保存的歷史,如果你確實需要bug修復,我建議只創建一個新的分支關老爺的修復。
我認爲這是(合併後刪除)
編輯 因此,而不是合併,至少在短暫的分支機構的典型工作流程,我認爲這個想法是衍合他們的主人。那麼你最終會得到一個線性變化歷史,並且整個分支變成主幹的一部分。在這種情況下,你有所有的變化,所以你顯然不需要副本。
所以,保持分支真的沒有意義,對吧? – bstpierre 2010-08-02 23:06:55
我強烈建議避免「rebase」。重新啓動通常是有害的,只在某些情況下才有用。 – 2010-08-03 01:16:10
重整是一個完美合理的工作流程,爲您的本地,私人分支機構。通過重新綁定實例(「rebasing * down *」)來保持與上游工作同步是非常常見的。這種情況通常很不常見,並且通常是有害的,因此無法重新分配*。 第二個答案沒有意義,因爲無論您是在上游變更中重新組合還是合併,您都必須以某種方式將這些內容「推」出來。即使在您的本地分支上,您也必須在某些時候將您的功能合併到主控中。保持基於你的特性的優點是這種合併變得快速。 – masonk 2010-08-03 04:05:23
我能想到的兩個原因,你可能要圍繞保持一個特性分支了一點:
在實踐中,大部分的時間合併之後刪除就好了。
我合併後刪除,但我總是做一個git merge --no-ff
,以避免快速轉發,這樣分支歷史圖表上可見。我喜歡的特性分支從開發分支離開那裏的歷史和它加入了回來:
這是從A successful Git branching model採取文森特Driessen的,一個非常漂亮的工作流程的Git使用哪個我申請我的大部分項目。
這是保存歷史的另一種不錯方式,因爲您可以選擇可從功能但不能從主設備訪問的提交:rev^1..rev^2。不利的一面是,它會阻止你想要從主分支中完成的任何重新分配(例如,如果你想讓主重新分配到上游遠程分支,這很常見)。 – masonk 2010-08-03 12:27:03
我沒有這個問題。我們的團隊通過github進行同步,而且我通常不需要重新綁定,但我認爲這不是一個缺點。即使您將開發和功能分支重新綁定,分支仍保持可見,並且重要的是功能分支相對於開發的內容,而不是創建該分支時最初離開的提交。 – lkraider 2010-08-03 21:27:32
@Ikraider,謝謝你的提醒。當我第一次學習git時,我看到了那篇文章,現在對我來說更有意義。我重新綁定了我的功能分支,但是我把'--no-ff'合併回主,因爲就像你說的那樣,你可以看到歷史。 – bstpierre 2010-08-04 04:19:32
典型的工作流程將
// Create new branch
$ git checkout -b myfeature
// and then do some changes and commit them
// Switch to master branch
$ git checkout master
// Merge myfeature to master. --no-ff will always keep branch information.
$ git merge --no-ff myfeature
// Delete myfeature branch
$ git branch -d myfeature
// Push the changes
$ git push origin master
我會說沒有問題,因爲如果你真的需要它們以後可以隨時復活刪除分支。 – slebetman 2010-08-02 23:09:49
@slebetman據我所知,被刪除的分支不能復活。 但是,如果分支在刪除之前完全合併到主分區中,則不再需要該分支。 – Simeon 2017-04-18 10:25:20
@Simeon是的,你可以。 Git從不刪除提交,所以當你刪除你的分支時,你只是刪除它的名字。要復活已刪除的分支,您只需記住您提交給該分支的最後一件事,並且可以搜索'git reflog'。然後結賬散列 – slebetman 2017-04-18 15:13:42