Git结帐失败,分离的工作树

时间:2012-12-12 17:34:09

标签: git config

我有一个带有独立工作树的存储库。通常,如果我需要处理repo,我可以按如下方式更改配置文件,并使用git statusgit checkout等命令:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        worktree = /var/www/mysite.net/httpd/

#       TO PUSH REPO TO STAGE: change bare=false and uncomment the worktree

现在,我收到错误fatal: This operation must be run in a work tree。我有一堆网站设置这样,所以我确定我刚忘记了什么,但我无法弄清楚是什么。任何人都可以想到会导致这种情况的原因吗?

3 个答案:

答案 0 :(得分:2)

愚蠢的错误。该工作树应该是.com而不是.net。

所以我想我的答案是通常的 - 仔细检查你的拼写。

答案 1 :(得分:2)

通常我使用git level选项让git像这样工作:

git --work-tree=some/dir --git-dir=some/other/dir push

或者,您可以设置具有相同效果的环境变量。在过去的git版本中,这样定义的有效活动路径适用于某些命令,而不适用于其他命令。

目前我正在使用git级别选项,因为它们似乎适用于所有命令。

还有一件事,如果你覆盖工作树,你还需要指定git文件夹。即,你不能指定一个没有另一个。

答案 2 :(得分:0)

如果我是正确的,基本问题是由shell脚本实现的Git命令不能通过cd'ing到存储库目录与分离的工作树一起工作。 (二进制文件实现的命令在这种情况下可以正常工作。)要使脚本命令与分离的工作树一起工作,请cd到工作树并使用GIT_DIR环境告诉Git在哪里查找存储库。