3

我有一个带有分离工作树的存储库。通常,如果我需要在 repo 上工作,我可以按如下方式更改配置文件并使用类似git statusand的命令git 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。我有很多网站都是这样设置的,所以我确定我只是忘记了一些东西,但我不知道是什么。谁能想到会导致这种情况的原因是什么?

4

3 回答 3

2

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

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

于 2012-12-12T17:41:28.077 回答
2

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

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

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

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

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

于 2012-12-12T17:41:50.463 回答
0

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

于 2013-10-09T19:56:39.180 回答