2013-07-10 34 views
2

「關閉」和「刪除」分支有什麼區別?「關閉」和「刪除」分支有什麼區別?

我看到不停地談論這兩個詞,但我不知道他們在Git中的上下文的意思準確。他們是否都有效地提到相同的事物(git branch -d)或者我應該注意哪些細微差別?

我可能是錯的,但到目前爲止,我的理解是,除非我刪除之前標記的分支,一旦分支被刪除沒有留下證據,它曾經存在過。正確?

+3

也許這會幫助你的事業引用一些例子。我從來沒有見過「關閉分支」這句話。 –

+0

除非你GC是你的倉庫,你的分支(或者說,它的所有提交)仍然在倉庫中,並且可以通過不同的方式找到。就像'git fsck --lost-found'我剛纔發現的。 'git reflog'記錄了在存儲庫中執行的操作的記錄,它還會顯示您在分支上進行了提交併將其留下。 – millimoose

+0

@StevenPenny http://stackoverflow.com/questions/6875572/git-branches-not-closing-after-merge http://stackoverflow.com/questions/8614112/how-to-close-offa-a-混帳分支 http://programmers.stackexchange.com/questions/200643/can-you-close-branches-in-git –

回答

0

在Git中的分支只是指出一些特別承諾的標籤。 Git本身並不知道「關閉」分支。也許你在談論GitHub.com的pull request功能?這實際上並不是git本身的一部分。您可以關閉github上的pull請求,以便它不再顯示在open pull requests列表中,但對存儲庫沒有任何影響。它不會改變任何分支。

4

在git中沒有明確的命令被稱爲close按照慣例,有些程序員有可能在將分支合併回工程並且不再維護時將分支引用爲「關閉」。有時候分支會被保留,其他時候會被刪除,但是這個想法就是它不再被使用。

要回答你的第二個問題,有一個你可以跟蹤一個分支刪除後的幾種方法。最常見的方式是通過遠程主機。運行git -d branch_name只會破壞您的本地副本。遠程主機將仍然有它的版本,以備日後需要時使用。您也可以隱藏您即將刪除的分支,然後再回來。這是你如何藏

git stash save "I'm saving this branch before I delete it because yolo" 

下面是關於如何使用藏匿實現您的最終鏈接,但你到底是一個不尋常的使用情況: https://www.kernel.org/pub/software/scm/git/docs/git-stash.html

基本上,如果你藏匿您的分支,那麼你在刪除它之後會有其存在的記錄。此外,如果您將該分支合併到其他分支中,那麼這些分支仍然知道已刪除分支的存在(大部分只是存在)。您可以再次看到給定分支知道自己的合併歷史記錄git log --graph

可能還有其他方式可以在刪除後以某種方式查看分支,但這對大多數工作流程來說不應該是問題。

+0

你不能存儲分支; 'git stash'只能用於工作目錄和索引中的更改。不過,對於刪除的分支的引用在Git的reflog中會保留一段時間。 – mipadi

+0

@mipadi:在刪除分支之前隱藏將通過存儲列表保存對舊分支HEAD的引用,但我不認爲它是一種明智的做法。 – siride

+0

@siride:怎麼樣? 'git stash'只對工作目錄和索引進行更改。它如何保存對分支的引用? – mipadi

相關問題