2011-06-13 82 views
1

在我的項目中,我爲一個新功能創建了一個新分支,完成了該功能並將分支合併回了我的開發分支。然後我按照說明在本地和我的github源代碼倉庫中刪除分支。如何查看或保護遠程分支刪除?

然後我注意到,我的分支的所有提及,包括本地和遠程,都完全沒有了。我看不到任何跡象表明該分支甚至在某個時間點存在。這很可怕,因爲如果我帶上另一個開發人員(或者如果我甚至這樣做),而不是在GitHub上刪除一個功能分支,他會刪除開發分支。我將會看到的唯一跡象是一個沒有出現原因的分支。

使用源代碼控制的一個主要原因是要對源代碼發生的所有事情有完整的歷史記錄,這似乎與其相反,除非我錯過了某些東西。我更喜歡的是將分支標記爲已關閉的某種方式,因此它不接受任何更改,但您仍然擁有分支進程的日誌,關閉分支以及爲什麼關閉分支(該功能是否無效正確地出來,它必須重做,完成了,等等。)和誰關閉它。

因爲我找不到任何方法來做到這一點,有什麼辦法可以至少確保誰可以刪除分支,誰不能訪問它?或者有沒有辦法查看刪除的分支?

+0

類似於http://stackoverflow.com/questions/2471340/is-there-a-way-to-lock-a-branch-in-git。 – ssapkota 2011-06-13 15:34:56

+0

嘗試創建分支,進行測試提交,刪除分支,然後執行'git reflog'。很確定它會有特殊的哈希值。沒有一個完整的答案,所以當然是一個很好的問題。 – Kzqai 2011-06-13 15:38:56

+0

不幸的是,gitolite(鏈接問題中的解決方案)似乎需要我提供我自己的服務器,我可以在其中託管和運行git存儲庫。由於我沒有這方面的經驗,並且無法與github的可靠性相匹配,所以直到我的操作變得更大以前,我才真正看不到它的實用性。 – KallDrexx 2011-06-13 15:39:19

回答

2

在git中刪除分支確實會刪除分支。如果這不是您想要的,請不要刪除該分支。但是,刪除分支本身不會刪除任何項目歷史記錄;它只是刪除對分支結束的引用。分支上的所有提交仍然存在;沒有明顯的方法可以找到它們。

您無法阻止有權訪問您存儲庫的人刪除分支。這就是爲什麼在github中每個人都有自己的倉庫可以工作的原因。如果一個分支被刪除,你就是那個人。

如果您錯誤地刪除了一個分支,如果您知道分支的提示的提交ID(它將記錄在您將其合併到主開發線的提交中,或者在reflog)。使用已刪除分支的名稱創建並簽出新分支,然後使用git reset將分支名稱與提示再次綁定。

從你的問題來看,你似乎想要永遠跟蹤分支的狀態。正確的方法是在分支的末尾創建一個標籤。然後,您可以刪除分支,但提示(及其所有歷史記錄)的引用將位於標籤中。

+0

重新創建分支的更好的指示發佈在上面的註釋中,git分支 antlersoft 2011-06-13 16:07:43

2

如果其他開發人員在Github上刪除了一個分支,那麼您仍然可以在您的本地倉庫中擁有自己的副本,並且可以將其重新推送到Github。

+1

這不一定是真的,例如,如果我在兩次之間更換了機器,或者我正在清理本地的東西。 – KallDrexx 2011-06-13 15:36:03

+0

好吧,如果你擔心安全問題,但仍想使用Github並讓其他人訪問,那麼這就是你的主要選擇。 – Amber 2011-06-13 15:40:50

+1

(當然,您可以不給別人訪問,並要求他們有自己的公開回購協議,以合併他們的工作。) – Amber 2011-06-13 15:41:18