如何在Windows上设置和克隆远程Git仓库?

20

有人知道如何在 Windows 服务器上从 git 远程仓库检出、克隆或获取项目或代码吗?

仓库 IP 是:xxx.xx.xxx.xx,源文件目录是 c:\repos\project.git

我习惯于使用 SUSE Linux 终端的命令行界面。我尝试了相同的方法,但它总是回复:

fatal: ''/repo/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

有人能告诉我如何设置并克隆吗?


2
请引用您尝试的确切命令。如果没有这个,就无法确定您做错了什么。 - Jan Hudec
6
Git或者其他程序不能通过魔法访问另一台计算机的磁盘文件,除非你提供了某种访问方式。Git可以使用三种访问方式:远程文件系统、ssh或http(Web)。你是否设置了其中任何一种方式?如果是,请编辑问题并说明如何配置。否则,请编辑问题以询问如何设置它。 - Jan Hudec
注意它说/repo/project不是一个仓库。也许在git调用中缺少一些转义字符? - Daemon Painter
2个回答

10
你需要在Windows机器上设置一种共享方式,以便可以通过git进行访问。Git支持三种访问方法:ssh、远程文件系统或http。最后一种可能比较复杂,所以我不会详细介绍。前两种方法是:
  1. 在Windows上设置SSH服务器。

    你可以尝试这个指南:http://www.timdavis.com.au/git/setting-up-a-msysgit-server-with-copssh-on-windows/。此外,还可以参考this question获取更多选项。

    2023年更新:微软现在实际上提供了适用于Windows的OpenSSH,包括一个可以直接启动的SSH服务器服务。官方指南从这里开始。这是一个稍旧的版本,但只有在将SSH代理公开给WSL2和/或虚拟机时才会有所影响。

    然后通过git clone username@xxx.xx.xxx.xx:/c/git/path/to/repo进行克隆(会要求输入密码)。

    这种方法的优点是安全(连接是加密的,SSH服务器是可信任的),因此您可以在互联网上使用它。由于Git服务器在访问期间在Windows机器上运行,您可以设置钩子以实现高级安全策略,控制其他进程等。

  2. 使用Windows共享共享存储库。

    然后,在Linux主机上,您需要使用smbmount挂载共享。这可能需要用户名和密码,具体取决于您如何设置权限。

    然后通过git clone /share/mountpoint/path/to/repo进行克隆。

    这种方法可能更容易设置,但不太安全,因此不应在本地网络之外使用。此外,在这种情况下,Windows机器上的钩子将不会被执行(实际上,Git将尝试在Linux机器上执行它们,但它们要么无法在那里运行,要么可以绕过),因此无法应用高级安全性。

一个特定的文件并不相关,你需要提供包含.git子目录的路径或者指向一个裸仓库的路径(上面的path/to/repo)。

1
我尝试使用自定义ssh端口的命令ssh://user@xxx.xx.xxx.xx:xxxx/c/repos/project.git,但是出现了错误响应:致命错误:''/c/repos/project.git''似乎不是git存储库致命错误:无法从远程存储库读取。请确保您拥有正确的访问权限。 - AsimRazaKhan
@AsimRazaKhan 我按照这里的说明使用了UNC路径 https://dev59.com/FXE85IYBdhLWcg3w_Itr 这很有效并且满足了我的需求。 - Hezi
@TheincredibleJan 这是一个古老的答案。但最近我发现微软自己提供了Windows版本的(稍旧的)OpenSSH,所以我添加了他们文档的链接。 - Jan Hudec
@TheincredibleJan Git安装程序有一个选项可以跳过安装自己的ssh(/NoOpenSSH,如果我没记错的话),然后它将使用Windows自带的ssh。 - Jan Hudec
@JanHudec 问题已解决。我没有尝试使用Git附带的SSH。服务器上已经安装了OpenSSH。不幸的是,Git文档中并没有提到Windows默认shell无法通过SSH与Git配合使用的情况... https://dev59.com/sFQJ5IYBdhLWcg3wdVgV - The incredible Jan
显示剩余2条评论

-1
首先,git存储库只是一堆需要访问的文件。您写了关于克隆和提取存储库的内容,这是很容易的部分 - 您只需要访问这些文件(并具有读取权限)。
可以通过直接访问文件系统、http(s)协议或ssh连接来完成。实际上,甚至可以通过ftp服务器进行操作。
您可以做以下事情:
1)设置ssh服务器,然后通过ssh服务器访问git文件 - 实际上,您应该使用的路径取决于Windows上使用的ssh服务器:source 2)设置Web服务器以访问文件: git clone http://host/path/to/repo 3)在Linux机器上挂载Windows上的文件系统并克隆存储库: git clone /mnt/filesystem/path/to/repo 无论您选择哪种方法,我建议参考Pro Git Book中的相应章节。

我尝试使用自定义ssh端口ssh://user@xxx.xx.xxx.xx:xxxx/c/repos/project.git命令,但是出现了错误:“fatal: ''/c/repos/project.git''似乎不是一个git存储库,致命错误:无法从远程存储库读取,请确保您具有正确的访问权限。” - AsimRazaKhan
@AsimRazaKhan,您能发布文件夹的内容(是否包含.git文件夹)和.git文件夹的访问权限(如果存在)吗? - Michał Zabielski
是的,它包含在 /c/repos/project.git/.git 中。 - AsimRazaKhan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接