91

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

我想让我的工作副本存储库可用作我的构建机器(另一个物理主机上的 VM)的源,这样我对工作副本所做的提交就可以在构建机器上构建和测试,而无需通过先上 GitHub。我已经为 GitHub 存储库构建了一个版本,但我希望这是一个“黄金”存储库/构建;即,如果那里有东西,应该保证针对 GitHub 的构建通过。

我查看了有关 Git URL 的文档,发现可以选择在表单中使用 URL git://host.xz[:port]/path/to/repo.git/(例如,参见git-clone 文档)。我想以最简单的方式,用最少的配置来做到这一点:我不想为了将它发布到我的构建机器而必须设置一个 SSH 守护程序或 Web 服务器。

我正在运行 Windows 7 x64 RC,我安装了 MSysGit 和 TortoiseGit,并且我在防火墙上打开了 Git 的默认端口 (9814)。请假设工作副本 repo 位于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)

我错过了什么吗?

4

6 回答 6

138

有五种可能性来设置用于拉取的存储库:

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

您在示例中缺少的可能是在服务器上运行 git-daemon。那,或者错误配置 git-daemon。

不幸的是,我无法帮助您在 MS Windows 上将 git-daemon 作为服务运行。不过,关于 git-daemon 不工作的最新版本的 msysGit 公告中没有任何内容。

于 2009-06-10T22:13:13.843 回答
19

除了 Jakub Narębski 的答案之外,还有另一种方式,更符合您的原始问题。您可以像往常一样从 github 克隆,然后当您想从本地 repo 执行一次性拉取时,只需执行以下操作:

git pull /path/to/repo master

(而不是 master 您可以输入任何分支名称。)

于 2009-06-11T17:30:30.140 回答
2

如果您有类似的路径

C:\Project\

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

C:\Project\.git\

您现在创建一个新文件夹

C:\.git\

进入该文件夹并运行git clone --bare ..\Projectbare很重要),
返回您的C:\Project\文件夹并执行git remote add-url local ..\.git\Project. 现在
你只需要做git add -A和。git commit -m "HelloWorld"git push local master

您可以共享Project文件夹,将其连接Z:并执行git clone Z:\Project- 您现在可以使用git pull origin master并将git push origin master更改从一台计算机推/拉到另一台计算机。

于 2015-11-11T07:38:04.300 回答
1

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

于 2009-06-13T03:27:39.527 回答
1

我最近更改了我的一个 git 项目,以使用 sitecopy 将自身复制到 HTTP 服务器来执行实际的文件上传。

这很简单,只需使用git update-server-info然后将 .git 目录镜像到服务器上的某个 http 可访问目录即可。我使用了相当常见的“project.git”。

从http://site/project-git拉出的 Git就像一个冠军一样工作,除了 FTP 访问之外,我不需要在服务器上拥有任何东西,尽管 sitecopy 也支持 webdav。

但是,我不建议使用 sitecopy,因为它不能很好地保持多台机器的同步。对于我的项目,HTTP 存储库是只读的,黄金更新仅来自一台机器,因此它运行良好。

于 2009-06-15T14:40:10.853 回答
0

如果你的远程主机在同一个windows网络中,即你可以作为\remotehost访问它,那么你可以在资源管理器中映射网络驱动器,比如说z:-->\remotehost\repodir,之后你可以使用'git clone / z/myproject' 克隆项目

于 2011-10-31T11:40:14.383 回答