2 回答

TA貢獻1898條經驗 獲得超8個贊
正如Junio C. Hamano(主要的Git維護者)所說:
不是規則或多或少像:
如果您的淺存儲庫的歷史記錄延伸時間不夠長而另一個存儲庫在截斷的歷史記錄之前分叉,那么您無法計算共同的祖先并且無法推出。
更新2014:請參閱“ git clone --depth 1(淺層克隆)是否比它更有用? ”:Git 1.9將解除限制!
2015年更新:使用Git 2.5+,您甚至可以獲取單個提交。請參閱“ 從遠程git存儲庫中提取特定提交 ”
原始答案(2011年8月):
實際上,想到它,它比“無法計算共同點”強大得多。
歷史可能如下所示:
R---R---R / --R---R---X---X---S---S---S
這里
S
是你在淺水庫有提交,R
是存在于接收推式資源庫中的提交。
由于您的歷史記錄很淺,因此兩個存儲庫都沒有“X
為了保持收件人存儲庫的歷史記錄完整而需要存在的提交”; 接收者并不淺薄,我們不想讓它變淺。如果你前一段時間淺克隆,沒有工作,而另一側的進展與對方溝通,及如果對方的進展包括:倒帶和歷史的重建,你會看到一個類似的拓撲結構。當您淺深地克隆深度為1時,上圖中
最左邊的'S
'可能是分支的尖端,從那時起,遠程端可能已經丟棄了最前面的三個提交,并重建了它導致最右邊'R
'的歷史。
在這種情況下,推送到遙控器HEAD
將失敗。
所以它可以在某些情況下工作,但它不受支持:
如果我要對此說些什么......
我認為“不支持”是提供足夠信息的簡潔方法,但它只適用于聰明人。
不是每個人都聰明; 有些人自己嘗試一下,看到這個操作似乎適用于他們有限數量的試驗,并且可以得出結論它大部分時間都可以工作。
他們祝賀自己的情報“大部分時間”,而非“永遠”。
當他們看到它不起作用時,他們會感到不安,即使他們已被警告過。
有關淺層克隆更新過程的更多信息,請參閱“ 如何更新git淺層克隆? ”。

TA貢獻1877條經驗 獲得超6個贊
是否有允許這樣的git工作流程?
是的,它是作為補丁發送補丁。 git format-patch
是專門為此而設計的。如果你想谷歌了解更多細節,它被稱為“看門人”工作流程。很難相信一個組織關注“安全和知識產權保護”,因為你的組織還沒有使用類似的東西,一個人或一個小組負責審查“不受信任”的變化,然后再進入真正的構建。
根據您的評論,我現在可以更好地了解您的要求。我建議你創建一個孤兒分支(參見git checkout --orphan),從你希望你的開發者開始。僅將該分支克隆到這些開發人員可訪問的不同存儲庫,并讓它們從該存儲庫正??寺?,推送和拉取。
然后,當你需要將他們的更改重新集成到官方受保護的存儲庫時,只需拉動他們的分支,制作它的副本,git branch
這樣你就不會覆蓋原來的孤兒(如果你想稍后重復這個過程),那么重新復制副本到您的原始分支點,并合并或正常的任何。歷史將看起來像他們直接從您的受保護倉庫工作。
它比平常更復雜,但這是額外隔離的代價。
- 2 回答
- 0 關注
- 616 瀏覽
添加回答
舉報