我怎样才能让我的本地资源库可用于git-pull?

我有一个工作的副本存储库,我一直在没有问题的工作; 这个存储库的来源在GitHub上。

我想使我的工作副本库作为我的构build机器(另一个物理主机上的一个虚拟机)的起源,以便我可以在构build机器上构build和testing对工作副本的提交,而无需通过首先GitHub。 我已经有一个GitHub仓库的构build,但我希望这是一个“黄金”存储库/构build; 也就是说,如果有什么东西在那里,GitHub的构build应该保证通过。

我已经查看了关于Git URL的文档,并且看到可以使用以git://host.xz[:port]/path/to/repo.git/forms使用URL的选项(例如,参见git克隆文档 )。 我想以最简单的方式做到这一点,configuration最less:我不想设置一个SSH守护进程或Web服务器,只是将其发布到我的生成机器。

我正在运行Windows 7 x64 RC,我安装了MSysGit和TortoiseGit,并在防火墙上打开了Git的默认端口(9814)。 请假设工作副本在D:\Visual Studio Projects\MyGitRepo ,主机名是devbox 。 生成机器是Windows Server 2008 x64。 我一直在生成机器上尝试以下命令,并输出相关的结果:

 D:\Integration>git clone "git://devbox/D:\Visual Studio Projects\MyGitRepo" Initialized empty Git repository in D:/Integration/MyGitRepo/.git/ devbox[0: 192.168.0.2]: errno=No error fatal: unable to connect a socket (No error) 

我错过了什么吗?

存在五种可能性来build立一个拉取库:

  • 本地文件系统git clone /path/to/repogit clone file://path/to/repo 。 如果你有联网的文件系统,但最不工作的networking使用效率最低。 (这几乎完全是由Joakim Elofsson提出的解决scheme)
  • HTTP协议git clone http://example.com/repo 。 您需要任何 Web服务器,并且还需要运行(也许自动,从钩子) git-update-server-info来生成通过“哑”协议获取/拉取所需的信息。
  • SSHgit clone ssh://example.com/srv/git/repo或者git clone example.com:/srv/git/repo 。 您需要设置SSH服务器(SSH守护进程),并在客户端安装SSH(例如MS Windows上的PuTTY)。
  • git protocolgit clone git://example.com/repo 。 你需要在服务器上运行git-daemon ; 有关详细信息,请参阅文档(您可以将其作为独立进程运行,仅用于提取,不必作为服务运行)。 git-daemon是git的一部分。
  • bundle :使用git-bundle命令在服务器上生成捆绑包 ,以任何方式(甚至通过USB)将其传输到客户端机器,然后使用git clone file.bndl进行git clone file.bndl (如果克隆不起作用,可以执行“git init” ,“git remote add”和“git fetch”)。

你在示例中缺less的东西可能是在服务器上运行git-daemon。 这,或错误的configurationgit守护进程。

不幸的是,我无法帮助你在MS Windows上运行git-daemon作为服务。 尽pipe如此,最后版本的msysGit没有任何关于git-daemon无法正常工作的消息。

除了JakubNarębski的回答之外,还有一个更符合你原来的问题。 你可以像平常一样从github克隆,然后当你想从你的本地仓库执行一次性的pull时,只需要这样做:

 git pull /path/to/repo master 

(而不是主人,你可以把任何分支名称。)

ssh路由运行良好,但需要远程ssh服务器。 如果你有Windows平台,那么Cygwin提供了一个可用于Git的ssh服务器,但是如果使用Cygwin Git则手动升级Git(我在http://alecthegeek.wordpress.com/2009/01/21/top-tip上写了一些提示-upgrade-git-on-cygwin / )。

我最近改变了我的一个git项目,使用sitecopy将自己复制到一个HTTP服务器来执行实际的file upload。

这很容易,只需使用git update-server-info然后将.git目录镜像到服务器上的某个http可访问的目录。 我用'project.git',这是相当普遍的。

从http:// site / project-git的 Git pull就像一个冠军,除了FTP访问,我不必在服务器上有任何东西,尽pipesitecopy也支持webdav。

但是,我不build议使用sitecopy,因为它不会让多台计算机保持同步。 对于我的项目来说,HTTP存储库是只读的,黄金更新只来自一台机器,所以它工作得很好。

如果你有像这样的path

 C:\Project\ 

你已经做了git init ,所以你也有一个文件夹

 C:\Project\.git\ 

你现在创build一个新的文件夹

 C:\.git\ 

进入该文件夹并运行git clone --bare ..\Project裸露很重要),
回到你的C:\Project\文件夹,然后做一个git remote add-url local ..\.git\Project
现在你只要做git add -Agit commit -m "HelloWorld"git push local master

你可以共享Project文件夹,将它连接到Z:并做git clone Z:\Project – 你现在可以使用git pull origin mastergit push origin master来将更改从一台计算机推送到另一台计算机。

如果你的远程主机在同一个windowsnetworking中,也就是说你可以像\ remotehost那样访问它,那么你可以在浏览器中映射networking驱动器,比如z: – > \ remotehost \ repodir,之后你可以使用'git clone / z / myproject“克隆项目