0

だから私は今、古いプロジェクトのリポジトリを作成しています。合計で4.5ギガのファイルがあるので、時間がかかります。私は共有ホスティング環境を使用しており、ホストは、長時間にわたって大量のメモリを消費するプロセスを制限しています。明らかに、このプロセスには時間がかかり、ホストによって終了し続けます。

レート制限を受けないように、1回のコミットのプッシュを簡単に実行できる方法はありますか?

これは私の最初のコミットでもあるため、追加したすべてのファイルを元に戻すのに問題があります。そうでなければ、私はそれを少しずつ行います。

4

3 に答える 3

2

私の最初の考えは、ベアリポジトリをローカルで作成し、それをサーバーにFTPで転送することです。それはうまくいくはずです。

于 2012-12-21T04:52:29.307 に答える
2

ScottSanswerと同じ考えで、 1 つの(巨大な) ファイルbundleを作成するためにローカルに aを作成します。

単一のファイルを FTP で送信すると、裸の git リポジトリの複数のファイルよりもエラーが発生しにくくなります。
(具体的な例については、「2 つの git リポジトリを同期する方法」を参照してください)

その後、リモート側でそのバンドルから複製できます。

于 2012-12-21T06:44:09.230 に答える
0

1 つのコミットにすべての作業がない場合は、git push部分的にコミットできます。

使用git logすると、履歴を「ウォーク」し、いくつかのコミットをチェックしてリモートにプッシュできます。まあ言ってみれば:

$ git log --oneline master
$ git checkout abcabc123123 # 10th commit in history
$ git push origin HEAD:master
$ git checkout bcdef145325 # 30th commit in history
$ git push origin HEAD:master

等々...

あなたのステップが何回コミットしなければならないかは、試行と失敗のタスクになります - それはあなたのコミットのサイズに依存します。

履歴がない場合は、ファイル/フォルダーごとに個別のコミットを作成し (ファイルサイズで関連付けるのが良い考えだと思います)、push前に述べたようにそれらを作成し、すべてのコミットを 1 つのコミットにまとめることができます。

$ git checkout master
$ git reset acbacbad142 # hash of first commit
$ git commit --ammend
$ git push -f origin master

reset+commit --ammendを使用して単一のコミットですべての変更をリベースしpush -f、リモート ブランチをリライトします。ファイル ( blobgit 用語では s) は既にアップロードされているため (アップロードされる予定であってtreeも)、それほど時間はかかりません。履歴を書き換えているときは、競合を避けるために、短いプッシュを開始してから押しつぶされたコミットをプッシュするまでの間に、誰もリモートからクローン/フェッチしないようにしてください。

于 2012-12-21T05:11:07.667 に答える