【问题标题】:git and Cygwin Paths with SourceTree带有 SourceTree 的 git 和 Cygwin 路径
【发布时间】:2014-08-10 05:30:36
【问题描述】:

我在windows服务器上安装了cygwin,仅供ssh使用。

另外,我已经安装了Git for Windows,因为 Cygwin git 不支持 windows 扩展,所以打折了。

我有一个 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 文件夹之外,我会遇到问题,但是如果不能将它放在根目录下,任何人都可以解释我如何获得 SourceTree 路径来访问如果将 repo 放在根目录下,则无需创建符号链接?

【问题讨论】:

标签: windows git ssh cygwin atlassian-sourcetree


【解决方案1】:

因此,您在 Cygwin 的根目录中有一个包含 Git 存储库的目录。我希望你的 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>,例如d:\Repos 在 Cygwin 中可作为 /cygdrive/d/Repos 访问。您还可以创建指向 Cygwin 之外的任何目录的符号链接,因此您可以拥有例如/cygdrive/d/Repos 链接为 ~/Repos 以便从 Cygwin 更快地访问。

只有一个简单的规则:在 Cygwin 下使用 Cygwin 风格的路径,在 Windows 下使用 Windows 风格的路径。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多