2 回答

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

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