有一个Git存储库proj.git
,克隆到proj1
和proj2
。 proj1
没有工作树,proj2
有工作树。
目标:更新a.txt
中的proj1
,将更改更新为proj2
中的工作树。
问题:git pull
在proj2
上失败并显示错误消息:
fatal: Not a git repository (or any of the parent directories): .git
重现问题:
创建proj.git
和proj1
:
$ git init --bare proj.git
$ git clone proj.git proj1
$ cd proj1
- edit a.txt: v1
$ git add .
$ git commit -m "v1"
$ git push -u origin master
使用worktree创建proj2
:
$ cd ..
$ git clone -n proj.git proj2
$ mkdir proj2_worktree
$ cd proj2
- edit .git/config:
[core]
...
worktree = /path/to/workarea/proj2_worktree
$ git checkout
proj2_worktree
包含a.txt
,按预期工作。
检查proj2
中的原始状态:
$ git remote show origin
* remote origin
Fetch URL: /path/to/workarea/proj.git
Push URL: /path/to/workarea/proj.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
尝试在proj2
中进行更改(确实有.git
):
$ git pull
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
$ git init
Reinitialized existing Git repository in /path/to/workarea/proj2/.git/
$ git pull
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
我做错了什么?我的Git版本在Cygwin上的Debian / 2.1.1上是1.7.10.4。
修改
另一个发现:在proj2
中,通常fetch
/ merge
将作为问题的解决方法:
$ git fetch
$ git merge origin master
但是,为什么pull
不起作用?
答案 0 :(得分:0)
在core.worktree
中设置.git/config
通常是一个坏主意,因为除非您确切知道发生了什么,否则会造成很多混淆。
如果您的计划是在/path/to/workarea/proj2_worktree
部署存储库的修订版而内部没有.git
文件夹(这对部署有意义),那么我建议您使用更明确的结帐,直接来自裸存储库:
git --git-dir=/path/to/proj.git --worktree=/path/to/worktree checkout master
(或从proj.git
内执行命令,因此您无需指定--git-dir
)
至于你的实际问题,这可能是早期版本的Git的一个错误。我发现some other questions引用了这个,所以如果我上面的建议不符合你的需要,我建议你更新你的Git版本。毕竟,1.7.10.4几乎三年。