【问题标题】:git on UNC pathUNC 路径上的 git
【发布时间】:2011-02-14 23:32:06
【问题描述】:

我有一台装有 Windows XP 的电脑,没有 Internet 连接,只能访问网络驱动器。我想在网络驱动器上建立一个 git 存储库,然后从我的本地存储库推送到它,这样我就可以在一天结束时访问具有 Internet 连接的计算机并从网络驱动器推送到 github。

我的问题是我无法从 git 访问网络驱动器。我将 PortableGit 放在网络驱动器上,但 git-bash.bat 和 git-cmd.bat 因“CMD 不支持将 UNC 路径作为当前目录。”而死掉。我尝试在 git-cmd.bat 中将“cd”替换为“pushd”,但它不起作用。

顺便说一句,我使用 PortableGit,因为我的机器上没有管理员权限。

有什么想法吗?

【问题讨论】:

    标签: git cmd


    【解决方案1】:

    这对我有用:

    git.exe clone "d:/dev/SDK" "//comp1/Proj/git/SDK/"
    

    【讨论】:

    • 并且无需从那里映射网络驱动器 b/c,您只需参考origingit push origin master 等)
    • ...您也可以随时添加遥控器(如果还不是origin):git remote add remote_name "//some.network.server/git/repository.git"
    • 需要注意的重要一点是路径使用 正斜杠 (//NAME/) 而不是反斜杠 (`\\NAME`)
    • 反斜杠也可以工作,但你必须避开它们。: git remote add remote_name "\\\\some.network.server\\git\\repository.git"。我不知道这是推荐的还是稳定的,但它目前在 1.9.5.msysgit.1 版本上为我工作。
    • 由于 Git 中的回归,建议的解决方案不再有效 - 仅在较新的版本中支持使用反斜杠,因为 2011/2012 之后对 Git lib/src 的更改会转换它们像这个答案所描述的那样正斜杠...... 2年前为我工作的存储库不再在VS,Git for Windows等中正确推送(但适用于当前/最新版本的Toirtoise Git。)
    【解决方案2】:

    只需使用 UNC 路径 - git 不在乎 cmd 能做什么和不能做什么。


    旧答案:将 UNC 路径绑定到驱动器号(或使用目录符号链接)。

    【讨论】:

    • git over 文件系统(尤其是 windows)无论如何都非常缓慢。
    • @PiersKarsenbarg 它工作正常。在ntfs上。或者您的意思是说“通过 any 网络文件系统”之类的话?无论如何,如果服务器实际上运行 Linux,则使用 ssh 代替(对于克隆,你不应该远程工作)即使在 Windows 上也能执行得更好
    • 与 ssh 相比速度非常慢。在任何文件系统上,尤其是 Windows。
    • 这不是答案。请参阅 Konstantin Tenzin 的回答。
    • @DavidRoussel 我将第一段理解为“我使用的计算机具有永久网络连接,我想在其中存储 git repo,并且我想从另一台机器将其推送到互联网”。也许我弄错了,但在我的类似情况下,我将大学的用户文件夹放在网络共享上,不应该使用本地驱动器,在这种情况下,直接在 UNC 路径 git 存储库上工作是有意义的
    【解决方案3】:

    首先打开一个windows控制台,运行->cmd

    pushd \\172.158.1.254\network_usb
    

    现在您应该可以“cd”浏览驱动器上的所有目录了。或者,您可以键入 git init --bare nameOfnewRepo.git 某处。

    popd
    

    现在打开 git bash 和 cd 到您要在网络驱动器上克隆 repo 的位置

    git clone //172.158.1.254/network_usb/pathto/nameOfnewRepo.git
    

    请注意,在 git bash 中,斜杠是向前的,而在 Windows 控制台中是向后的。

    【讨论】:

      【解决方案4】:

      正如 Konstantin 所说,“//comp1/Proj/git/SDK/”作为 UNC 路径可以正常工作。

      其他人提到使用远程文件系统时性能不佳,我无法重现。通过加密的 VPN 文件系统访问克隆同一个 repo 需要 3 分钟 45 分钟,通过未加密的 HTTP(Bonobo Git 服务器)需要 3 分钟 25 分钟。 用于 repo 访问的安全通道 + windows 身份验证当然值得额外的 10%。

      请注意,Cygwin 的“git”命令不适用于此远程路径。 GitExtensions 自带的 git.exe 运行良好,VS2015 也运行良好。

      【讨论】:

        【解决方案5】:

        在 msysGit 邮件列表中讨论了一个类似(但不完全相同)的问题(以及在它处于活动状态时,问题跟踪器)。虽然该问题与 UNC 的“Git bash here”功能有关,但解决方案可能类似。也许其中一些链接可以帮助您找到解决方案:

        如果您找到解决方案,请考虑将修复提交回 msysGit 项目 :)

        【讨论】:

        • 如果适用于 Windows 的 Git 使用 PowerShell 而不是 CMD Shell,则从 UNC 路径使用“Git bash here”将不再是问题。我相信这也可以作为安装时的选项。
        【解决方案6】:

        检查您是否真的可以访问本地驱动器。在那里安装它将是最简单的解决方案。

        【讨论】:

          【解决方案7】:

          似乎有一个寄存器值允许在 cmd 上使用 UNC 路径。您可以通过在 cmd 上运行来设置寄存器:

          reg add “HKCU\Software\Microsoft\Command Processor” /v DisableUNCCheck /t REG_DWORD /d 0x1 /f
          

          Source

          【讨论】:

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