2017-07-31 74 views
1

我們有一個git倉庫,用於從GitHub上的項目收集公共倉庫中的所有公司私人分支機構。我們實現了我們不想推向上游的功能,而這些分支通常基於公共存儲庫中的某些標籤發佈。保留私人倉庫中的分支機構

到目前爲止這麼好。當我想從公共倉庫拉的後續版本,我用的是

git fetch 

命令,然後我們可以使用這些更高版本衍合我們的代碼或實施其他新的分支機構。但是,如果有人不小心類型的命令:

git -p fetch 

那麼我們的倉庫被清除,不會出現在遠程/產地所有分支。當然,沒有一個是私人的東西,所以我們可能會失去所有或大部分我們的工作,而這些工作並不會保存在我們的存儲庫克隆或文件系統備份中。

這似乎是一個我想防止的非常脆弱的情況。我們是否以一種不應該使用git工具的方式,或者有沒有更好的方法來做到這一點?

+0

取指和修剪只會刪除跟蹤分支,無論如何你都不能編輯。如果你真的檢出了分支,那麼你仍然會有一個指向提交的本地分支。即使他們是公共回購中的私人分支,如果您對遠程擁有適當的權限,修剪也不會將其移除。確保你已經過身份驗證,最好使用ssh url。 –

+0

@JeffPuckett我正在討論的存儲庫沒有結帳 - 它是一個非工作區存儲庫,旨在被克隆並保存我們的私人分支。所以修剪刪除那些,那就是我所關心的。 – AlanObject

回答

1

通過使用git fetch -p標誌,你告訴GIT修剪。我不知道該說什麼,你實際上是在指導它做一些破壞性的事情。當然,使用git,你總是可以使用git reflog來回頭。只需使用哈希簽出分支。

+0

reflog在分支移除時也被刪除。 – max630

1

git並不意味着是備用替代品。但是,您準確地使用fetch它不會爲存儲失敗節省成本。

無論如何,你可以做兩件事情:

  • 備份.git/refs.git/logs目錄和文件.git/packed-refs。遺憾的是,刪除分支時會刪除Reflog,所以您不能依賴它們。
  • "precious objects" extension,按此處所述啓用它。然後,對象永遠不會被收集,如果你從備份中恢復分支,你可以確定它們是有效的。
+0

當然我們不希望git做一個備份功能。此外,我們定期對整個存儲庫進行備份,而不僅僅是選定其中的一部分。問題是,如果有人不小心執行清除操作,可能無法檢測到多個備份週期,並且可能導致恢復困難。無論如何,我寧願有一個更大的障礙來破壞數據庫。 – AlanObject