裸存储库和非裸存储库之间的另一个区别是裸存储库没有默认的远程源存储库:
~/Projects$ git clone --bare test bare
Initialized 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-bare
Initialized 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 push
fatal: No destination configured to push to.
~/Projects/bare$ git pull
fatal: /usr/lib/git-core/git-pull cannot be used without a working tree.
~/Projects/bare$