Bare和非Bare存儲庫之間的實際區別是什么?我一直在閱讀Git中的裸機和非裸機/默認存儲庫。我無法理解(理論上)它們之間的差異,以及為什么我應該“推”到一個裸存儲庫。這是交易:目前,我是唯一一個在3臺不同計算機上工作的人,但是后來會有更多人參與其中,所以我使用Git進行版本控制。我在所有計算機上克隆了裸倉庫,當我在其中一臺計算機上完成修改后,我提交并將更改推送到裸倉庫。從我所讀到的,裸存儲庫沒有“工作樹”,所以如果我克隆裸倉庫,我將沒有“工作樹”。我猜測工作樹存儲項目中的提交信息,分支等。這不會出現在裸倉庫中。因此,對于我來說,使用工作樹將提交“推送”到repo似乎更好。那么,為什么我應該使用裸存儲庫,為什么不呢?有什么實際區別?我認為,這對于從事項目的更多人來說沒有好處。你做這種工作的方法是什么?建議?
3 回答

慕村225694
TA貢獻1880條經驗 獲得超4個贊
裸存儲庫和非裸存儲庫之間的另一個區別是裸存儲庫沒有默認的遠程源存儲庫:
~/Projects$ git clone --bare test bareInitialized empty Git repository in /home/derek/Projects/bare/~/Projects$ cd bare~/Projects/bare$ git branch -a* master~/Projects/bare$ cd ..~/Projects$ git clone test non-bareInitialized empty Git repository in /home/derek/Projects/non-bare/.git/~/Projects$ cd non-bare~/Projects/non-bare$ git branch -a* master remotes/origin/HEAD -> origin/master remotes/origin/master
從手冊頁git clone --bare
:
遠程處的分支頭也直接復制到相應的本地分支頭,而不將它們映射到refs / remotes / origin /。使用此選項時,既不會創建遠程跟蹤分支,也不會創建相關的配置變量。
據推測,當它創建一個裸存儲庫時,Git假定裸存儲庫將作為幾個遠程用戶的源存儲庫,因此它不會創建默認的遠程源。這意味著基本git pull
和git push
操作將無法工作,因為Git假設沒有工作空間,您不打算對裸存儲庫進行任何更改:
~/Projects/bare$ git pushfatal: No destination configured to push to.~/Projects/bare$ git pullfatal: /usr/lib/git-core/git-pull cannot be used without a working tree.~/Projects/bare$

炎炎設計
TA貢獻1808條經驗 獲得超4個贊
裸存儲庫只是.git文件夾本身,即裸存儲庫的內容與本地工作存儲庫中.git文件夾的內容相同。
在遠程服務器上使用裸存儲庫以允許多個貢獻者推動他們的工作。
非裸 - 具有工作樹的那個在您項目的每個貢獻者的本地機器上是有意義的。
- 3 回答
- 0 關注
- 852 瀏覽
添加回答
舉報
0/150
提交
取消