Git“存储库独立于工作树”解决方案在Windows下无法运行

时间:2013-11-01 22:58:13

标签: windows git

请参阅我与此问题相关的答案:

https://stackoverflow.com/a/8603156/1445967

我无法在最新的Git for Windows下使用它。 (Windows 7 x64)

我用git bash:

<my username> /d/<worktree>
$ git --git-dir=/c/dev/gitrepo/repo.git --work-tree=. init && echo "gitdir: /c/dev/gitrepo/repo.git" > .git
Initialized empty Git repository in c:/dev/gitrepo/repo.git/

然后我尝试了:

<my username> /d/<worktree>
$ git status
fatal: Not a git repository: /c/dev/gitrepo/repo.git

所以我尝试了一些稍微不同的东西,这要归功于windows路径的存储方式......

<my username> /d/<worktree>
$ git --git-dir=/c/dev/gitrepo/repo.git --work-tree=/d/<worktree> init && echo "gitdir: /c/dev/gitrepo/repo.git" > .git
Initialized empty Git repository in c:/dev/gitrepo/repo.git/

这是复制粘贴,除了我将用户名和单个目录名更改为<worktree>以获取SO。

然后我尝试了以下内容:

<my username> /d/<worktree>
$ git status
fatal: Not a git repository: /c/dev/gitrepo/repo.git

然后我查看了/c/dev/gitrepo/repo.git/config里面,我看到了这个:

worktree = d:/<worktree>

也许这不适用于windows路径表示法。所以我改变了它:

worktree = /d/<worktree>

仍然没有运气。我想在Windows的git下做什么呢?

1 个答案:

答案 0 :(得分:1)

我在这个问题上取得的唯一进展是发现在我使用的工作站上,SUBST命令用于创建驱动器D.也就是说,C和D实际上是相同的物理驱动器。

SUBST似乎并没有彻底打破Git。我在驱动器D和git repo上的项目在驱动器D上的一个完全不同的目录上,一切正常。

username@host /d/ProjectName (branch)
$ cat .git
gitdir: d:\gitrepo\ProjectName.git

所以我得到的最佳答案是解决方法,我建议:在Windows中可能存在问题:

1.  If the repo and working dir are on different drives
2.  If (1) is true and you use SUBST

但无论哪种情况如此,解决方法都是以下一种或两种:

1.  put everything on the same drive letter.  It works even if that drive is a 'subst' drive.
2.  Use the windows "d:\" notation in the .git file