如下所示,我必须设置一个裸仓库的工作树:
cd barerepo
git status
fatal: This operation must be run in a work tree
git --work-tree=/var/www/mywork/ status
# On branch master
nothing to commit (working directory clean)
如何为该回购设置工作树,以便我不必每次都指定它?
我尝试使用此修改barerepo/config
,但它不起作用。
[core]
repositoryformatversion = 0
filemode = true
bare = true
worktree = /var/www/mywork
答案 0 :(得分:11)
Bare repos不应该有工作树,所以git打印出“致命:core.bare和core.worktree没有意义”的错误信息。因此,您需要在repo的配置文件中设置bare = false
。
user@host:~$ cd barerepo
user@host:~/barerepo$ git config --bool core.bare false
user@host:~/barerepo$ git config --path core.worktree /var/www/mywork
但是,如果以前不存在barerepo,则应改为使用此命令:
git init --separate-git-dir=. /var/www/mywork
此命令还将在工作树中创建一个指向git目录的.git
文件:
gitdir: /home/user/barerepo
答案 1 :(得分:2)
请注意,问题和答案来自2012年,但自git 2.5起,即使使用裸仓库,您也可以使用以下方法创建单独的工作树:
tssSheet.Range("G" & count & ":I" & count).Value = _
backlogSheet.Range(Sample(1, 1), Sample(1, 3)).Value
请参见git-worktree(1)。
它不会更改$ git worktree add /var/www/mywork/ master
$ git worktree add /var/www/workdev/ devel
,但会在git存储库中创建一个core.worktree
目录。
如果您不希望所有工作树和裸存储库共享同一配置,则可能需要将配置选项worktrees
更改为true。
答案 2 :(得分:1)
请注意,建议的解决方案(2012年,将于2015年7月发布的Git 2.5之前的版本)将不直接使用git config
命令。
它将继续死于:
fatal: core.bare and core.worktree do not make sense.
这就是Git 2。5(2015年7月)将要解决的问题:
commit fada767见Jeff King (peff
)(2015年5月29日)
(Junio C Hamano -- gitster
--在commit 103b6f9合并,2015年6月16日)
setup_git_directory
:延迟core.bare
/core.worktree
错误如果设置了
core.bare
和core.worktree
,我们会抱怨 关于虚假的配置和死亡 死亡很好,因为它 避免命令运行并在可能的情况下造成损害 设置不正确。
但是死在那里是不好的,因为它意味着 那些甚至不关心工作树的命令 不能跑 这可以使情况更难修复:
[setup]
$ git config core.bare true
$ git config core.worktree /some/path
[OK, expected.]
$ git status
fatal: core.bare and core.worktree do not make sense
[Hrm...]
$ git config --unset core.worktree
fatal: core.bare and core.worktree do not make sense
[Nope...]
$ git config --edit
fatal: core.bare and core.worktree do not make sense
[Gaaah.]
$ git help config
fatal: core.bare and core.worktree do not make sense
相反,让我们发布关于伪造配置的警告 我们注意到它(即,对于所有命令),但只有在死亡时才会死亡 命令尝试使用工作树(通过调用setup_work_tree)。
所以我们现在得到:
$ git status
warning: core.bare and core.worktree do not make sense
fatal: unable to set up work tree using invalid config
$ git config --unset core.worktree
warning: core.bare and core.worktree do not make sense