设置每个裸仓库的工作树

时间:2012-08-08 02:04:52

标签: git

如下所示,我必须设置一个裸仓库的工作树:

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

3 个答案:

答案 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 fada767Jeff King (peff)(2015年5月29日) Junio C Hamano -- gitster --commit 103b6f9合并,2015年6月16日)

  

setup_git_directory:延迟core.bare / core.worktree错误

     

如果设置了core.barecore.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