4

我目前在放假,一直在做一些工作,提交并推送到 github。我们这里的互联网连接非常糟糕(山区的无线点对点)并且经常掉线。

我能够推送到 github 大约一个半星期,但在过去的几天里,我一直无法推送。我可以将较小的更改推送到其他存储库,但我认为这是一个相当大的更改,而且我通过添加越来越多的提交使情况变得更糟。

当我尝试推送(在 Windows 下使用 git 扩展)时,出现以下错误:

c:\Program Files (x86)\Git\bin\git.exe push "origin" master:master Done 致命错误:网络错误:软件导致连接中止致命:sha1 文件''写入错误:管道损坏致命:远程端意外挂断错误:未能将一些参考推送到 'git@github.com:plenderj/myproject.git'

我可以看到出站网络活动,然后它会掉线,一段时间后 git 会抱怨。我现在可能已经尝试推了大约 10 或 15 次。

有没有办法可以将 git 尝试上传的内容拆分成更小的块,或者我可以创建某种差异文件,将它们应用到家里的计算机上,然后从那里上传?最坏的情况是,我将整个 /src/ 文件夹复制并粘贴到记忆棒上,然后在家中进行操作,但我不禁想到有更好的方法。有什么建议么?:)

4

2 回答 2

3

用于git-format-patch构建一系列可通过电子邮件发送的补丁,您可以git-apply在另一端应用这些补丁。

更多详细信息,请参阅man git-format-patch

为你pull从 master 编辑后的更改创建补丁:

git format-patch origin/master

这会创建一系列您可以通过电子邮件发送或上传的文件。

如果您在计算机上为 git 设置了电子邮件,则可以使用直接发送电子邮件

git send-email

如果您在源上为 git 设置了电子邮件,则可以直接使用

git am
于 2012-01-03T04:08:07.303 回答
3

你也可以查看你的历史,在你的某个地方选择一个修订master,然后说

git push <remote> <revision>:tmp-branch

通过这种方式,您可以手动增量推送更改,因为 git 从不复制同一个对象两次。最终git push <remote> master将更新master分支。


另一种选择是git bundle。您可以通过说创建一个包含未推送提交的文件

git bundle create my.bundle origin/master..master

然后,您可以使用某种强大的方法(rsync?)传输此文件,并将其应用到远程存储库中

git pull /path/to/my.bundle master
于 2012-01-03T08:57:00.033 回答