1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GitHub Desktopでコミットできない。〜Argument list too long〜

Posted at

どんな問題

開発中のアプリで、bundle install実行後、GitHub Desktop上でコミットをプッシュしようとしたところ、次のようなエラーが発生。
githubDesktop error1.png

エラー文を見てみると、

Commit failed -exit code 1 recerved with output: 'User/~~~

Argument list too long'

と表示されています。

注目するのは「Argment list too logn」の部分です。これは「コマンドへ渡す引数の数が多すぎです」という意味です。(ファイルが7000個以上もコミット対象に上がっている・・・)

ここでコミットしようとしているファイルをよく見てみると、
githubdesktop error2.png

✅ Gemfile
✅ Gemfile.lock
✅ vendor/bundle/ruby/2.6.0/bin/byebug
✅ vendor/bundle/ruby/2.6.0/bin/coderay
✅ vendor/bundle/ruby/2.6.0/bin/geocode
✅ vendor/bundle/ruby/2.6.0/bin/kisten


こんな感じで、bundle installでインストールしたgemがvendorディレクトリ内に保存されていることがわかります。

前提条件

macOS 10.15.4
ruby 2.6.5

発生した経緯

前回のbundle install時に

% bundle install --path vendor/bundle

こちらのコマンドを入力してしまっていたことが原因で、venderディレクトリ内のbundleディレクトリにgem関係が格納されてしまったから、だと思われます。

対処

①vendorのbundleディレクトリを手動で削除する。

bundle install --path vendor/bundleを実行後、vendorディレクトリ内にbundleディレクトリが作成されるので、それを手動で削除します。
githubdesktop error5.png

この、「bundle/ruby/2.6.0」指定して、まるっと削除します。

削除後はこんな感じになります。
githubdesktop error6.png

②BUNDLE_PATHを修正する(削除する)

bundle install --path vendor/bundlekコマンド入力後、
下の画像の通り、.bundleディレクトリのconfigファイルにvendorへのBUNDLE_PATHに書き換えられてしまいます。
githubdesktop error4.png

githubdesktop error7.png

こちらのBUNDLE_PATH: "vendor: 'vendor/bundle"をまるっと削除します。
削除後は下のようになります。
githubdesktop error8.png

③vendorを.gitignore内に記述し、bundleをvenderに入れないように設定する。

最後に、今後vendorのbundle内にファイルを入れないように、.gitignoreファイル内に以下の記述を追加します。

.gitignoreファイル
vendor/bundle

この記述を行い、vendor/bundleをコミット対象から除外するように設定します。

④改めてbundle installを行う

最後に、改めてbundle installを行ってみます。

ターミナル
% bundle install

実行後GitHub Desktopを再度確認すると、
github desktop error 9.png

vendor/bundle内のファイルがコミット対象から外れ、コミットエラーが解消されます。

最後に

今回のエラーの発端は bundle install時に --path vendor/bundle とpathを指定してしまっていたことです。
pathの指定をすべきか?orしなくても良いか?という議論はあるみたいですが、基本的に指定しなくても問題ないみたいです。(特定の条件の場合は問題が生じるためpathを指定しないといけない場合もあるみたいです。)

こちらの記事が参考になります。

(Qiita)bundle install時に--path vendor/bundleを付ける必要性は本当にあるのか、もう一度よく考えてみよう
https://qiita.com/jnchito/items/99b1dbea1767a5095d85#201967%E8%BF%BD%E8%A8%98-%E9%80%86%E3%81%ABpath%E3%82%92%E4%BB%98%E3%81%91%E3%81%AA%E3%81%84%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A3%E3%81%A6%E4%BD%95%E3%81%8B%E3%81%82%E3%82%8B%E3%81%AE

以上、最後まで見ていただきありがとうございました。(間違い等ございましたらご指摘いただけますと助かります!)

参考文献
https://teratail.com/questions/283421
https://techacademy.jp/magazine/10179

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?