オブジェクトの書き込み中にGitがハングする


100

私がしようとしているgit push -u origin masterとそれはちょうどハングアップします

Writing objects:  99% (219/220), 12.65 MiB | 97 KiB/s

12.65一部の周りにシフト。プロセスを終了して再度実行すると、99%で再開しますが、以前と同じように終了しません。

成功することはありません。これが最初のコミットです。


どこにプッシュしたいですか?SSHまたはその他のプロトコルを使用していますか?
パウロEbermann

25
http.postbufferヘルプを設定しますか?stackoverflow.com/questions/6842687/...
VonC

3
VonCのコメントは見過ごしがちです。わたしにはできる。
トゥアン

1
信じられない。それも私にはできました。そして今は2018年です。そしてそれはSSHではなく、HTTPです。そして、全体のリポジトリは15MBのようです。そして、「リモート」サーバーはlocalhostです。Gitのロマンチック化をやめてください。;)
Sz。

回答:


218

私はVonCのアドバイスに従いました:

git config --global http.postBuffer 524288000

コメントに基づく将来の参考のために:

500 MB: 524288000 (as posted in the original answer)
1 GB: 1048576000
2 GB: 2097152000 (anything higher is rejected as 'out of range')

4
omg、ありがとうございます!私の髪を抜いていた、そしてこれは私の問題を解決しました!
ブレットトーマス

3
@HugoForteバッファを増やすと、ファイルの書き込みのハングが解消されたようですが、git pushが完了しませんでした(後でハングしましたWriting objects: 100%)。以前は25%でハングしていたため、これは明らかに役立ちました。しかし、私はまだ「奇妙な」振る舞いをしていました。私はシステム再起動し、これで問題が解決したようです... FYI ...誰かがバッファを増やした後も問題が発生している場合、システムを再起動すると状況が改善されました(古い学校のソリューションはなおも役に立ちました)。
twknab 2017年

4
誰が番号524288000がどこから来ているのか説明できますか?
Ryre

6
@ライア500 MB
Hugo Forte

1
神はあなたとStackoverflowを祝福します、私はなしで完全な敗者になるでしょう
デコーダー7283

35

これは、repoディレクトリにある無視されていない巨大なファイルが原因で発生していました。おっと。

編集する

ハングアップは、ファイルのアップロードに長い時間がかかっていたためです。ファイルはプッシュに含まれているはずではありませんでした。

編集する

それはあなたが問題のファイルを無視するか、単にできない場合は、巨大なファイルは、この問題の背後にある理由かもしれないというのは本当だが持って従って、それをプッシュするために、この答えを。


@TimoSoloなぜ私はそれをするのでしょうか?私が問題を抱えていたので、正確な修正を文書化しました。かなり簡単です。
mattalxndr 2018年

4
はい、あなたの修正は問題を取り除くことでした。大きなファイルを実際にプッシュする必要がある他の人々のために、@ hugo-forteの答えは問題を解決します。あなたがする必要はありません、私はそれがより多くの人々を助けるだろうと思っただけです-SOの精神で
TimoSolo 2018年

1
問題は、「どうすればコミットしてから巨大なファイルをプッシュできるか」ではありません。それは「私のgit pushが終わることのない理由です。」です。プッシュがいつまでも続くことを期待していないのなら、おそらく(私のように)その巨大なファイルをコミットするつもりはなかったでしょう。
mattalxndr 2018年

3
@mattalxndr承認された回答の投票数が1/8の場合、おそらくそれを変更する必要があります。
NorCalKnockOut 2018年

1
@mattalxndrどちらの答えも完璧ではありません。1つは原因を特定し、もう1つは解決策を提供します。理想的な答えは、原因を特定し、それが所定の結果をもたらす理由を説明し、2つの代替ソリューションを提供することです。IMO、現在のオプションのうち、Hugo Forteの答えは、ファイルをプッシュするかどうかに関係なく問題を解決するため、優れています。あなたがしたのと同じ過ちを犯した人々を無視しているのではありません。他の人と同じように彼らのために問題を修正しますが、彼らがそれをプッシュするつもりがなかった場合は、ファイルを削除するように彼らに任せます。
BZ1 2018

7

(オブジェクト%16の書き込み)で同じ問題が発生し、停止して致命的になりました。現在の変更を保存して新しいリポジトリを複製し、変更されたファイルをその中にコピーすることで、これを解決しました。

例えば。現在のリポジトリがAであるとすると、次のことを行うだけです。

  1. mv A B
  2. git clone A
  3. mv B/* A/
  4. rm -rf B

次にコミットしてプッシュすると、すべて正常に動作しました。移動されたファイルが変更されたと認識しました:)


別の症状が発生していました。鉱山には致命的なエラーはありませんでした。
mattalxndr 2013

5

私の場合、リポジトリと同じドライブに保存された不正な権限を持つgitフォルダーを使用していましたが、承認されたログインユーザーを使用していても、sshと同じである可能性があります。

次に、遠いリポジトリに書き込む正しい権利があるかどうかを確認します。

例:

ローカルおよび遠方のリポジトリを初期化する

git init /tmp/src
git init --bare /tmp/dst
cd /tmp/src

オリジンへのリモートリポジトリの追加

src > git remote add dest /tmp/dst

問題のシミュレーション

src > chmod -R 555 /tmp/dst

偽のファイルを追加してプッシュする

src > touch a && git add a && git commit -m 'demo'
src > git push --set-upstream dest master
src > git push
Counting objects: 3, done.
Writing objects: 99% (2/3), 202 bytes | 0 bytes/s.

Gitがハングする

解決

src > chmod -R 775 /tmp/dst

2
おかげで、回答にいくつかの模範的な詳細を追加することを検討してください。
Mirza Sisic

1
ごめんなさい。良いですか?
Naewis

3

私の状況では、それはファイルのサイズでした。必要な拡張子を持つ.gitignoreファイルを追加することで、プッシュされる不要なファイルのほとんどを無視することができました。


2

私の場合、インターネットのアップロード速度が遅く、プッシュしたいファイルが大きかったのですが、トリックは、大きなファイルをアップロードするのがはるかに忍耐強いgit LFS(大容量ファイルストレージ)を使用することです。ここでgit LFSチュートリアルを見つけることができます


1

git clean -f -n私の問題を解決します。検出されない多くの追跡されていないファイルがあります。ただし、これによりディレクトリ内のファイルが削除されるので注意してください


3
具体的には、どのファイルを削除しますか?
ジャジモフ2018

1

私の場合、会社のルールを完成させずにプッシュしようとしていました。アナリストによって開発者がJira(開発プロセスの追跡に使用する別のツール)で割り当てられている番号であるXXXXは、「MOBIL-XXXX」でコミットメッセージを開始する必要があることを後で知りました。

会社に同様の制約ルールがあるかどうかを確認してください。


0

私はWindows 10マシンで同じ問題を抱えてwriting objectsいましたが、ハングしていましたが、少し異なる状況でした。

私が抱えていた問題は、リポジトリに新しいファイルを追加しようとしたときだけでした。リポジトリに既に存在するファイルを更新した場合、すべてが正常に機能し、ファイルサイズが大きいかどうかは関係ありません。ほとんどの場合、新しいスクリプトを追加しようとしました。

私はインターネットで見つかった他のすべての解決策を試しましたが、私の場合は何もうまくいきませんでした。特定のドライブとフォルダーに対するいくつかのWindowsアクセス許可が原因で、管理者アカウントでログインしていて、管理者としてアプリを実行している場合でも、アプリがこれらの特定のフォルダーに書き込んだり、ファイルを更新したりできないことが原因のようです。したがって、このコマンド:

attrib -r +s D:\foldername 

私のために問題を修正しました。

ここに投稿するだけで、誰かが私の問題と同じ問題を抱えているかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.