きっかけ
とある日にこんな質問をされました
gitでプッシュ出来ないんです・・・
コンソールに出たメッセージを見ると、どうやらファイルサイズが大きすぎるのが原因というのがわかった。
ちなみにローカルリポジトリにコミットが20個くらい溜まってました
そのときに行った対策を記録として残そうと思った。
対策
最初に、自分の頭にはこの解決策が思い浮かびました。
分割してプッシュする
コミットの、ハッシュ値を利用してプッシュする方法です。下記のようなコマンドになります。
git push origin (ハッシュ値):(ブランチ名)
これなら一つのコミットだけをプッシュ出来ます。これを使って細かくプッシュしていけば解決出来ると思っていました。
実際に、いくつかのコミット分はプッシュ出来たみたいです。
問題発生
1コミットのファイルサイズが大きくて、プッシュ出来ません・・・
一体どんなファイルをそこでコミットしたのか問だたしたいですが、それは置いといて。
この場合、コミットををやり直して、もっと細かい単位でステージングしてコミットする必要があります。
git reset で前の状態に一旦戻す
下記のようなコマンドで、一旦前の状態に戻します。
git reset (戻りたい位置のコミットハッシュ値)
オプションはつけていないので、デフォルトの--mixed
が適用されます。
この場合、コミットとインデックスはその時の状態に戻りますが、ワーキングツリーはそのままです。
つまり、git add
でステージングする前になる訳です。
ちなみに、--hard
だとワーキングツリーも戻るので私が怒られます
--soft
だとインデックスがもどらないので、ステージングをやり直すことが出来ません。
なので今回はデフォルトの--mixed
を使用しました。
結果
なんとか細かい単位でステージング、コミットし直すことでプッシュ出来たようです。よかったです。
本当はもっとスマートがやり方があるのかも知れません。良い方法があれば、ご教授よろしくお願いいたします。