windows - 带有 SourceTree 的 git 和 Cygwin 路径

标签 windows git ssh cygwin atlassian-sourcetree

我在 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 在尝试推送到存储库时失败。我正在这样定义路径:-

git@GitServer:/Repos/Project.git

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

此消息中的失败结果:-

fatal: '/Repos/Project.git' does not appear to be a git repository

fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

我能理解,如果 repo 被放置在 cygwin 文件夹之外,我会遇到问题,但是它是否应该被放置在根目录下是不可能的,谁能解释我如何获得 SourceTree 访问路径 repo 协议(protocol),如果它被放置在根目录,而无需创建符号链接(symbolic link)?

最佳答案

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

SourceTree 是 native 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可访问为 /cygdrive/d/Repos在 Cygwin 中。您还可以创建指向 Cygwin 之外的任何目录的符号链接(symbolic link),这样您就可以拥有例如/cygdrive/d/Repos链接为 ~/Repos以便从 Cygwin 更快地访问。

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

关于windows - 带有 SourceTree 的 git 和 Cygwin 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24310633/

相关文章:

windows - Linux Hudson,Windows 构建

windows - 修改所有传出数据包的 TCP/IP header 中的目标端口

linux - 无法使用 linux 连接到防火墙代理后面的 svn

unix - 如何在unix中传输数据

windows - 在 Golang 中使用 Exec 时如何隐藏命令提示符窗口?

c# - 在 .Net 下为低完整性进程添加写访问权限

git - 跟踪源代码变体

git - 关于 Git GUI 推送错误

windows - 如何通过Win32 API函数激活cmd.exe windows "Scroll mode"?

git - git status 在内部是如何工作的?