2

git限られたディスク パーティション (サムドライブなど) にリポジトリがあるとします。

現在のパーティションがいっぱいになったために、そのリポジトリへの最後のプッシュが失敗したとしましょう。

git gc;でスペースを取り戻そうとするとしましょう。その後git gcも失敗します:

$ git gc --prune=now
fatal: failed to write ref-pack file: No space left on device
error: failed to run pack-refs

今、同じマシンに、十分なスペースがある別のパーティションがあります。そこでこのレポを複製してそこで実行gcし、別のパーティションから最初のパーティションにレポをコピーして書き戻すことができることを認識しています。

しかし、私は疑問に思っていました:代わりに、元のパーティションのレポ内でgit呼び出している間に、書き込む必要のある一時ファイルに「別のパーティション」を使用するように指示する方法はありますか?その結果、操作が完了した後にgit gcgit「別のパーティション」の一時ファイルを削除したでしょう。そして、「元のパーティション」レポで必要なすべてのファイルを変更/削除/追加しました(可能であれば、スペースの再利用に影響します)?

4

1 に答える 1

2

唯一のオプションは、ディレクトリを別の場所に移動.git--git-dir、現在の作業ディレクトリから自動的に把握する代わりに、その場所を使用するオプションを使用することです。それとは別に、いいえ、Git は別のドライブを一時的に使用することはできません。

考えてみれば、データ破損のリスクが大きすぎて、Git が最初に別のドライブのデータベースからオブジェクトを圧縮し、次に圧縮されたデータを最終的に元に戻す前にソース オブジェクトを削除することはできません。

したがって、これは通常誰も遭遇しないエッジ ユース ケースであると言えます。そして、今日のサム ドライブは十分に大きいので、これもそれほど簡単には問題になりません。

于 2014-12-29T01:41:50.943 に答える