1

我主要使用 SVN,现在是 Git 新手。我在 MacBook Pro 上使用“git svn”来处理我的 SVN 存储库,但有时我必须远程工作,因为我对办公室网络的唯一访问是在 ssh 到中间 Linux 服务器然后到我的 Mac 服务器之后在还具有 git-svn 存储库副本的办公网络中。端口转发被禁用,所以从我的 MacBook Pro 远程到办公室 SVN 的 ssh 隧道不是一个选项。

现在,当我处于远程位置并想要获取最新代码时,我会更新我的远程存储库,将我在 MacBook Pro 上的版本与文件的最新修订之间的差异转储,通过 ftp 将其传输到我的 MacBook Pro中间服务器,然后修补我本地 Git 存储库中的文件。我使用一些 bash/expect 脚本在某种程度上自动化了这个过程,但我没有修订评论和使用 Git 的所有灵活性。

有没有一种很好的方法来转储差异,包括所有的修订信息到一个文件,ftp 并将它应用到我的本地 Git 存储库?

4

2 回答 2

1

你想要git bundle

假设 abcd1234 是您在笔记本电脑存储库中的最新提交。在具有 Git 存储库的机器上:

git bundle create myrepo.bundle abcd1234..master

现在将其复制到您的笔记本电脑上,然后:

git pull /path/to/myrepo.bundle master

当然,您可能还想说服 IT 允许您设置端口转发,或者只是通过netcat在中间机器上运行来自己设置。

于 2013-04-29T19:01:34.097 回答
0

Git 的神奇之处在于每个存储库都是平等的。这意味着您可以采用这样的工作流程:

  1. 在中间服务器上执行 Git 克隆。该服务器现在具有存储库的完整克隆。

  2. 执行从中间服务器到本地计算机的辅助 Git 克隆。现在您可以自由地拉取和推送到该中间服务器。

  3. 定期登录中间服务器以通过正常的拉/推操作与原始服务器同步。

这个工作流程让 Git 做它最擅长的事情,即为您管理增量。

现在更有趣的是,您可以在本地克隆的.git/config文件中设置一个单独的“远程”条目来引用此中间服务器,这样您就可以根据您所在的位置自由选择拉/推的位置。

在家的git pull myintermediate master时候打字,上班的时候打字git pull origin master

欢迎来到令人敬畏的 Git。

于 2013-04-29T18:57:16.610 回答