代码之家  ›  专栏  ›  技术社区  ›  Noel Kennedy

Git在Windows上,它真的是分布式的吗?

  •  1
  • Noel Kennedy  · 技术社区  · 14 年前

    我刚开始在Windows平台上使用Git。我有 mysygit 已安装并阻止A few hiccups 我过得很好。

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

    我是一个完整的Linux noob,但我认为我可以看到ssh允许在Linux上分发。但是,msysgit客户机似乎只是windows cmd提示符中的附加命令,没有windows服务元素。

    如果我尝试 git clone 'MyMatesPc' 谁会在另一端听这个请求?

    我可以看到,如果有一个“中央”服务器在Linux(或Cygwin)上运行Git,那么您可以通过将提交从一台机器推到“中央”repo上,然后将它们拉到另一台机器上来共享提交。

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

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

    4 回复  |  直到 10 年前
        1
  •  6
  •   Community Mr_and_Mrs_D    7 年前

    你可以使用 local protocol :一个简单的共享路径足以让同一局域网上两台PC上的两个Git存储库互相推/拉。
    不需要(在本例中)一个“中央”服务器。


    AS Noel Kennedy 在评论中指出,在执行以下操作之前,他必须在本地将驱动器号映射到远程回购: git clone file:///z .
    这是最安全的途径,因为 UNC paths are not always supported with some versions of msysgit .

    但是,您可以将UNC路径与最新的msysgit版本一起使用,如在Git-Bash会话中:

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

    (注: / '代替窗户' \

    在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

    Commit c2369bd 作者:Eric Sunshine和 Cezary Zawadka ( czawadka ) 意味着更简单的UNC路径现在可以工作:

    Windows:允许使用Git存储库的UNC路径

    Eric Sunshine固定 mingw_offset_1st_component() 始终如一地返回” foo “为UNC” //machine/share/foo “,cf this thread .

    所以现在应该可以:

    git clone //mymachine/shared/repo.git
    
        2
  •  4
  •   Matt Enright    14 年前

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

    Git是分布式开发,因为没有一个存储库具有任何特定的设计或结构,使其比任何其他存储库更具权威性——您可以在本地存储库上对中央存储库做任何您想做的事情,从这个角度来看,它们都是在同等的基础上进行的。

    例如,在Linux内核中,有数百个不同的公共存储库:一般来说,linus'被视为权威存储库,kernel.org上的发布是从他的树上切下来的,但是许多人或项目使用或维护其他树(“forks”,尽管这个术语有一定的含义),并且由于git对此的支持,在那里在跟踪Linus树(或任何其他树——现在看到模式)中发生的开发时,阻抗失配或开销是否非常小?.

    许多项目使用一个中央存储库,因为这是一个很好理解的协作模型,或者因为它适合于现有的持续集成设置——而Git也同样适合这种开发风格——但这是一个工作流决策,而不是Git自己强制(甚至赞成)的决策。

    就msysgit或cygwin而言,通过它们使用ssh应该没有问题,而且putty作为本地Windows客户机使用ssh协议也没有任何特定于Unix主机的问题。使用本机Git协议或HTTP也很容易拉(推送是另一个问题)。(正如VONC所说,您也可以从本地存储库中提取,因此,如果您有一个网络/Samba共享,或者对Git有任何相同的共享)。

        3
  •  3
  •   Craig Trader    14 年前

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

        4
  •  0
  •   Chris K    14 年前

    Git服务器组件在win32、imho上尚不受良好支持。

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

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