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

# どんな問題
開発中のアプリで、bundle install実行後、GitHub Desktop上でコミットをプッシュしようとしたところ、次のようなエラーが発生。
![githubDesktop error1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/445357c5-1ae7-0d57-5271-48a02657127a.png)


エラー文を見てみると、
>Commit failed -exit code 1 recerved with output: 'User/~~~

>Argument list too long'

と表示されています。

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

ここでコミットしようとしているファイルをよく見てみると、
![githubdesktop error2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/b074f533-d84d-4748-ddf6-042c51c08df8.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/d2897149-df10-9ec0-4910-38989cd53fca.png)

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

削除後はこんな感じになります。
![githubdesktop error6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/cec7e606-c9e9-cbcc-270e-74065f5061e0.png)

### ②BUNDLE＿PATHを修正する（削除する）
bundle install --path vendor/bundlekコマンド入力後、
下の画像の通り、.bundleディレクトリのconfigファイルにvendorへのBUNDLE＿PATHに書き換えられてしまいます。
![githubdesktop error4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/28b0427c-153f-7579-c77f-b45c19043c3b.png)

![githubdesktop error7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/9df4e43d-678d-bf73-89cb-5163d9ef515e.png)

こちらのBUNDLE_PATH: "vendor: 'vendor/bundle"をまるっと削除します。
削除後は下のようになります。
![githubdesktop error8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/2972df07-0e54-fc52-525e-9135d25ff592.png)

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

```ruby:.gitignoreファイル
vendor/bundle
```
この記述を行い、vendor/bundleをコミット対象から除外するように設定します。

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

```zsh:ターミナル
% bundle install
```

実行後GitHub Desktopを再度確認すると、
![github desktop error 9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/8199f7e8-4b66-a2ff-180f-d8a7fb71cb25.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