Git Revision Diff

时间:2013-04-29 18:31:25

标签: git diff git-diff

我主要是在svn,现在是一个git新手。我在macbook上使用“git svn”来处理我的svn存储库,但偶尔我必须远程工作,当我对办公室网络的唯一访问是在ssh-ing到中间linux服务器然后到我的mac服务器之后办公室网络也有git-svn存储库的副本。端口转发被禁用,因此从我的macbook远程到office svn的ssh隧道不是一种选择。

现在,当我远程并希望获得最新代码时,我更新了我的远程存储库,将我在macbook上的版本和最新版本之间的差异转储到文件中,通过ftp将其转移到我的macbook上中间服务器,然后修补我本地git存储库中的文件。我使用一些bash / expect脚本有点自动化了这个过程,但我没有修订注释和使用git的所有灵活性。

有没有一种好方法可以将包含所有修订信息的差异转储到文件中,将其翻转并应用到我的本地git存储库。

2 个答案:

答案 0 :(得分:1)

你想要git bundle

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

git bundle create myrepo.bundle abcd1234..master

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

git pull /path/to/myrepo.bundle master

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

答案 1 :(得分:0)

git的神奇之处在于每个存储库都是相同的。这意味着你可以采用这样的工作流程:

1)在中间服务器上执行git clone。该服务器现在具有repo的完整克隆

2)从中间服务器到本地计算机执行辅助git克隆。现在,您可以自由地拉动并推送到中间服务器

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

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

现在为了获得一点点发烧友,您可以在本地克隆的.git / config中设置一个单独的“远程”条目来引用这个中间服务器,这样您就可以根据自己的位置自由选择拉/推的位置。

当您在家时键入git pull myintermediate master,当您在工作时键入git pull origin master

欢迎来到git的精彩