2012-01-02 6 views
4

私は現在休暇中で、何か仕事をしていて、コミットしてギブスに向かっています。 ここのインターネット接続は非常に悪く(山間部の無線ポイントツーポイント)、非常に定期的に降ります。git-pushを別のコンピュータにコピーするか、小さなインクリメンタルプッシュを実行しますか?

私はギターに約1週間半押し込むことができましたが、過去2〜3日間、私はできませんでした。私は他のreposに加えられた小さな変更をプッシュすることができますが、これはかなり大きなものです。私は、ますますコミットを追加することで状況を悪化させてきました。

私は(WindowsでGitの拡張機能を使用して)プッシュしようとすると、私は次のエラーを取得する:

c:\Program Files (x86)\Git\bin\git.exe push "origin" master:master Done FATAL ERROR: Network error: Software caused connection abort fatal: sha1 file '' write error: Broken pipe fatal: The remote end hung up unexpectedly error: failed to push some refs to '[email protected]:plenderj/myproject.git'

私はアウトバウンドネットワークアクティビティを見ることができますし、それがオフにドロップします、といくつかの時間後にgitのは文句。私はおそらく約10回または15回押しようとしました。

gitが小さなチャンクにアップロードしようとしているものを分割する方法はありますか、ある種のdiffファイルを作成して自宅のコンピュータに適用し、そこからアップロードできますか? 最悪のシナリオ私は/ src /フォルダ全体をコピーしてメモリスティックに貼り付けて、それを自宅からやっていますが、もっと良い方法があるとは思えません。助言がありますか? :)

答えて

3

git-format-patchを使用して、もう一方の端にgit-applyを使用して適用できる一連の電子メール対応パッチを作成します。

詳細はman git-format-patchを参照してください。

git format-patch origin/master 

これは、あなたが電子メールまたはアップロードできる一連のファイルを作成します。マスターからあなたpull編ため、変更のためのパッチを作成するには

あなたのコンピュータ上のgitのための電子メールのセットアップを持っている場合、あなたは原点をgitのための電子メールのセットアップを持っている場合は、あなたが

を使用して直接適用することができ

git send-email 

を使用して直接メールで送信することができます

git am 
+0

おかげでリモートリポジトリにそれを適用することができます。私はこれを行い、278MB相当の.PATCHファイルを作成しました。これを一度もアップロードできないのは不思議ではありません。私は多くのrar'd以来、FTP'd帰ってきました。私は家に帰るときにパッチを適用するつもりです。 – plenderj

+0

それはかなり大きいです。誤ってオブジェクトファイルをチェックインしていないことを確認する必要があります。 –

3

また、あなたの歴史を見て、あなたのmaster上のどこかのリビジョンを選択して、言うことができ

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

これはgitが同じオブジェクトを2度コピーしないので、手動でインクリメンタルに変更をプッシュすることができます。最後にgit push <remote> mastermasterブランチを更新します。


もう1つのオプションはgit bundleです。あなたは(?rsyncの)次に、あなたには、いくつかの強力な方法を使ってこのファイルを転送することができ

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

を言うことによってあなたのunpushedコミットしてファイルを作成し、

git pull /path/to/my.bundle master 
関連する問題