我刚开始使用Windows平台上的git。我安装了mysygit并禁止few hiccups我很好地离开了。
但是,我必须遗漏一些东西,因为我不明白不同Windows机器上的两个msysgit客户端如何能够直接相互推送和拉动?
我是一个完整的Linux菜鸟,但我想我可以看到ssh的东西允许在Linux上发布。但是,msysgit客户端似乎只是windows cmd提示符中的附加命令,并且没有Windows服务元素。
如果我尝试git clone 'MyMatesPc'
谁将在另一端收听此请求?
我可以看到,如果你有一个'中央'服务器在linux(或cygwin)上运行git,你可以通过将它们从一台机器上推到'中央'仓库,然后将它们拉到另一台机器上来共享提交。
这实际上意味着您必须使用中央服务器。
我对此没有任何问题,但想检查一下我没有遗漏任何东西!
答案 0 :(得分:6)
您可以使用 local protocol :一个简单的共享路径足以让同一LAN上的两台PC上的两个Git存储库相互推送/拉动。
不需要(在这种情况下)“中央”服务器。
正如Noel Kennedy在评论中指出的那样,在执行git clone file:///z
之前,他必须在本地将驱动器号映射到远程仓库。$ cd /c/temp
$ git clone //remote-host/share/path/to/repo.git
。
这是最安全的路径,因为UNC paths are not always supported with some versions of msysgit。
您可以将UNC路径与最近的msysgit版本一起使用,就像在Git bash会话中一样:
/
(请注意“\
”而不是Windows“mingw/bin
”)
在DOS会话中,添加C:\temp>set PATH=%PATH%;c:\msysgit\bin;c:\msysgit\mingw\bin
C:\temp>git clone \\\\remote-host\\share\\path\\to\\repo.git
路径后,它也可以工作(即使用UNC路径而不是映射驱动器)
mingw_offset_1st_component()
2014年8月更新(4年后),Git 2.1
Eric Sunshine的 Commit c2369bd和Cezary Zawadka (czawadka
)意味着现在可以使用更简单的UNC路径:
Eric Sunshine修复了
foo
,以便为UNC“//machine/share/foo
”提供“git clone //mymachine/shared/repo.git
”,参见this thread。
所以现在应该可以了:
{{1}}
答案 1 :(得分:4)
这是一个非常常见的错误概念,使用git(许多)开发工作流之一,独立于msysgit问题。
Git是分布式开发,因为任何存储库都没有任何特定的设计或结构,使其比任何其他任何设备或结构更具权威性 - 您可以对本地存储库执行任何操作,从这个角度来看,它们都是在平等的基础上。
例如在Linux内核中,有数百个不同的公共存储库:一般来说Linus'被认为是权威的,而且kernel.org上的发行版是从他的树中删除的,但许多人或项目使用或维护其他树木(“叉子”,虽然这个术语有一定的内涵),并且由于git对此的支持,跟踪Linus树(或任何其他树)中发生的开发的阻抗不匹配或开销很小 - 现在看到模式?)。
许多项目使用中央存储库,因为这是一个易于理解的协作模型,或者因为它适合现有的持续集成设置 - 而git也适合这种开发方式 - 但这是一个工作流决策,不是git本身强制要求(甚至是受到青睐)。
就msysgit或Cygwin而言,使用ssh应该没有问题,并且还有PuTTy作为使用SSH协议的本机Windows客户端 - 它绝不是特定于UNIX主机的。它也很容易使用本机git协议,或者也可以使用HTTP(推送是另一个问题)。 (正如VonC所说,你也可以从本地存储库中提取,所以如果你有一个网络/ Samba共享或者其他任何东西都是git)。
答案 2 :(得分:2)
有很多方法可以处理克隆存储库,具体取决于两台计算机之间的连接。如果您想避免在Windows上站起来使用Git服务器的麻烦,那么您可以将Git存储库存储在共享目录中,并使用file:
协议访问它们。根据您使用的Git客户端,您可能需要将该共享目录映射到驱动器号。
答案 3 :(得分:0)
没有人说你不能通过电子邮件从人们那里获取补丁并将它们应用到你的存储库。
此外,分布式版本控制的重点是,虽然您可以选择与远程存储库同步,但您不必这样做。没有什么能阻止你在世界任何地方(包括海洋中部或偏远沙漠)的断开连接的PC上使用git。