gpt4 book ai didi

Git pull 在工作树 : Not a git repository (or any of the parent directories) 上失败

转载 作者:行者123 更新时间:2023-12-04 13:08:57 27 4
gpt4 key购买 nike

有一个 Git 存储库 proj.git ,克隆到 proj1proj2 . proj1没有工作树,proj2有一个工作树。

目标:更新a.txtproj1 ,在 proj2 中将更改更新到工作树.

问题:git pull失败 proj2带有错误消息:

fatal: Not a git repository (or any of the parent directories): .git

重现问题:

创建 proj.gitproj1 :
$ 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

创建 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 版本是 Debian 上的 1.7.10.4/Cygwin 上的 2.1.1。

编辑:

另一个发现:在 proj2 ,通常的 fetch/ merge将作为问题的解决方法:
$ git fetch
$ git merge origin master

但是:仍然,为什么 pull不行?

最佳答案

设置 core.worktree.git/config通常是一个坏主意,因为除非您确切地知道发生了什么,否则它会引起很多困惑。

如果您的计划是在 /path/to/workarea/proj2_worktree 部署存储库的修订版没有 .git文件夹(这对部署有意义),那么我建议您直接从裸存储库中使用更明确的 check out :

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快三年了。

关于Git pull 在工作树 : Not a git repository (or any of the parent directories) 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28524515/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com