我有一个带有独立工作树的存储库。通常,如果我需要处理repo,我可以按如下方式更改配置文件,并使用git status
和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
。我有一堆网站设置这样,所以我确定我刚忘记了什么,但我无法弄清楚是什么。任何人都可以想到会导致这种情况的原因吗?
答案 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在哪里查找存储库。