Скопировать git-push на другой компьютер или выполнить меньшие инкрементальные нажатия? - PullRequest
4 голосов
/ 03 января 2012

В настоящее время я нахожусь в отпуске и выполняю какую-то работу, совершая и подталкивая к github.Наше интернет-соединение здесь довольно плохое (беспроводная точка-точка в горах), и оно прерывается очень регулярно.

Мне удалось перейти на github примерно на полторы недели, но для прошлой парыдней я не смог.Я могу выдвигать небольшие изменения, сделанные в других репозиториях, но я думаю, что это довольно большое изменение, и я усугубляю ситуацию, добавляя все больше и больше коммитов.

Когда я пытаюсь нажать (используя gitрасширения под Windows) Я получаю следующую ошибку:

c: \ Program Files (x86) \ Git \ bin \ git.exe push "origin" master: master Done FATAL ERROR: Ошибка сети: Softwareвызвало прерывание соединения с фатальной ошибкой: файл sha1 '' ошибка записи: неработающая труба фатальная: удаленный конец неожиданно повесил ошибку: не удалось отправить некоторые ссылки на 'git@github.com: plenderj / myproject.git'

Я могу видеть активность исходящей сети, а затем она пропадет, а через некоторое время Git жалуется.Я, вероятно, пытался выдвинуть 10 или 15 раз сейчас.

Есть ли способ, которым я могу разделить то, что git пытается загрузить на более мелкие чанки, или я могу создать какой-нибудь файл (и) diff,применить их на моем компьютере дома, а затем загрузить оттуда?В худшем случае я копирую и вставляю всю папку / src / на карту памяти и просто делаю это из дома, но не могу не думать, что есть лучший способ.Какие-либо предложения?:)

Ответы [ 2 ]

3 голосов
/ 03 января 2012

Вы также можете посмотреть свою историю, выбрать ревизию где-нибудь на вашем 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
3 голосов
/ 03 января 2012

Используйте git-format-patch для создания серии исправлений для электронной почты, которые вы можете применить, используя git-apply на другом конце.

см. man git-format-patch для более подробной информации.

Чтобы создать патчи для ваших изменений, так как вы pull редактировали с мастера:

git format-patch origin/master

Это создает серию файлов, которые вы можете отправить по электронной почте или загрузить.

Если на вашем компьютере настроена электронная почта для git, вы можете отправить электронное письмо напрямую, используя

git send-email

Если у вас есть настроенная электронная почта для git на источнике, вы можете подать заявку напрямую, используя

git am
...