使用SourceTree的git和Cygwin路径

时间:2014-06-19 15:37:32

标签: windows git ssh cygwin atlassian-sourcetree

我在Windows服务器上安装了cygwin,仅用于ssh。

另外,我已经安装了Git for Windows,因为它不支持Windows扩展,因此打折了Cygwin git的使用。

我有一个git ssh用户,可以登录(通过ssh)并可以在该用户的主目录下创建存储库。这允许我从运行SourceTree的OSX推送到服务器。在这种情况下,存储库位于: -

git@GitServer:Repos/Project.git

cygwin下文件夹的实际路径是: -

/cygwin/home/git/Repos/Project.git       

但是,我希望能够将Repos目录直接放在cygwin文件夹的根目录下,而不是放在主文件夹下: -

/Repos/Project.git

执行此操作会导致SourceTree在尝试推送到repo时失败。我正在定义这样的路径: -

git@GitServer:/Repos/Project.git

我还检查了文件夹的权限,这不是问题。

失败导致此消息: -

  

致命:'/ Repos/Project.git'似乎不是git存储库

     

致命:无法从远程存储库读取。

     

请确保您拥有正确的访问权限   存储库存在。

我可以理解,如果将repo放在cygwin文件夹之外,我会遇到问题,但如果它不能放在root用户,并且任何人都可以解释我如何获取SourceTree访问的路径回购,如果它放在根,而不必创建符号链接?

1 个答案:

答案 0 :(得分:0)

所以你有一个Git存储库的目录放在Cygwin的根目录中。我希望您的Cygwin的根目录是c:\cygwin,因此Git存储库的目录是c:\cygwin\Repos\Project.git。 Cygwin的根目录以/的形式挂载在Cygwin中,因此您的Git存储库目录为/Repos/Project.git

SourceTree是本机Windows .NET应用程序,因此它使用Windows文件系统和Windows样式路径。因此,如果你说SourceTree在/Repos/Project.git中寻找Git存储库,它试图在c:\Repos\Project.git中找到它,这显然是错误的。 只需在SourceTree中将其设置为正确的Windows路径即可。

对于任何Windows应用程序都是一样的。只有Cygwin应用程序才能理解Cygwin的路径。您可以使用cygpath将Cygwin路径转换为Windows,反之亦然。例如,此命令在Windows资源管理器中打开Cygwin中的当前目录:

explorer `cygpath -wa .`

此外,您可以将存储库放在任何地方,它不必位于Cygwin的根目录下。它甚至可以在不同的驱动器上。 Cygwin默认自动将所有Windows驱动器安装为/cygdrive/<drive-letter>,例如,可以在Cygwin中以d:\Repos访问/cygdrive/d/Repos。您还可以创建一个指向Cygwin之外的任何目录的符号链接,这样您就可以获得例如/cygdrive/d/Repos链接为~/Repos,以便更快地从C​​ygwin访问。

只是一个简单的规则:在Cygwin下使用Cygwin样式路径,在Windows下使用Windows样式路径。