1

我刚开始在 Windows 平台上使用 git。我已经安装了mysygit并阻止了一些打嗝,我正在很好地“git”。

但是,我一定遗漏了一些东西,因为我不明白不同 Windows 机器上的两个 msysgit 客户端如何直接相互推拉?

我是一个完整的 linux 菜鸟,但我想我可以看到 ssh 允许在 linux 上分发。但是,msysgit 客户端似乎只是 windows cmd 提示符中的附加命令,并且没有 windows 服务元素。

如果我尝试git clone 'MyMatesPc'谁将在另一端收听此请求?

我可以看到,如果您有一个在 linux(或 cygwin)上运行 git 的“中央”服务器,您可以通过将提交从一台机器推送到“中央”存储库,然后将它们拉到另一台机器上来共享提交。

这实际上意味着您必须使用中央服务器。

我对此没有问题,但想检查一下我没有遗漏任何东西!

4

4 回答 4

6

您可以使用本地协议:一个简单的共享路径足以让同一 LAN 上的两台 PC 上的两个 Git 存储库相互推/拉。
不需要(在这种情况下)“中央”服务器。


正如Noel Kennedy在评论中指出的那样,他必须在执行之前将驱动器号本地映射到远程仓库:git clone file:///z.
这是最安全的路径,因为某些版本的 msysgit 并不总是支持 UNC 路径

不过,您可以在最近的 msysgit 版本中使用 UNC 路径,例如在 Git bash 会话中:

$ cd /c/temp
$ git clone //remote-host/share/path/to/repo.git

(注意 ' /' 而不是 Windows ' \')

在 DOS 会话中,添加mingw/bin路径后,它可能也可以工作(即使用 UNC 路径而不是映射驱动器)

C:\temp>set PATH=%PATH%;c:\msysgit\bin;c:\msysgit\mingw\bin
C:\temp>git clone \\\\remote-host\\share\\path\\to\\repo.git

2014 年 8 月更新(4 年后),Git 2.1

Eric Sunshine 和Cezary Zawadka ( czawadka)的提交 c2369bd意味着现在可以使用更简单的 UNC 路径:

Windows:允许对 git 存储库使用 UNC 路径

Eric Sunshine 固定mingw_offset_1st_component()返回foo“为 UNC”“ //machine/share/foo”,参见此线程

所以这现在应该可以工作了:

git clone //mymachine/shared/repo.git
于 2010-06-11T13:42:38.503 回答
4

这是关于使用 git 的(众多)开发工作流的一个非常常见的误解,与 msysgit 问题无关。

Git 是分布式开发,因为没有任何存储库具有任何特定的设计或结构,使其比任何其他存储库都更具权威性 - 您可以使用本地存储库上的中央存储库做任何事情,从这个角度来看,它们都是平等的.

例如在 Linux 内核中,有数百个不同的公共存储库:通常 Linus' 被认为是权威的,kernel.org 上的发布都是从他的树上剪下来的,但是很多人或项目使用或维护其他树( “分叉”,尽管该术语具有某些含义),并且由于 git 对此的支持,因此在跟踪 Linus 的树(或任何其他树 - 现在看到模式?)中发生的开发时,几乎没有阻抗不匹配或开销。

许多项目使用中央存储库,因为这是一种易于理解的协作模型,或者因为它适合现有的持续集成设置——而 git 也同样适合这种开发风格——但这是一种工作流程决策,而不是强制性的(或什至偏爱) git 本身。

就 msysgit 或 Cygwin 而言,通过它们使用 ssh 应该没有问题,而且还有 PuTTy 作为使用 SSH 协议的本机 Windows 客户端 - 它绝不是特定于 UNIX 主机的。使用本机 git 协议或 HTTP 也很容易拉取(推送是另一个问题)。(正如 VonC 所说,您也可以从本地存储库中提取,所以如果您有网络/Samba 共享或其他与 git 相同的东西)。

于 2010-06-11T13:52:12.780 回答
2

有很多方法可以处理克隆存储库,具体取决于两台机器之间的连接性。如果您想避免在 Windows 上建立 Git 服务器的麻烦,那么您可以将 Git 存储库存储在共享目录中,并使用file:协议访问它们。根据您使用的 Git 客户端,您可能需要将该共享目录映射到驱动器号。

于 2010-06-11T13:50:05.133 回答
0

git 服务器组件在 win32 上尚未得到很好的支持,恕我直言。

没有什么说您不能通过电子邮件从人们那里获取补丁并将它们应用到您的存储库中。

此外,分布式版本控制的重点在于,虽然您可以选择与远程存储库同步,但您不必这样做。没有什么能阻止您在世界任何地方(包括海洋中部或偏远沙漠)断开连接的 PC 上使用 git。

于 2010-06-11T13:43:50.343 回答