ケースで覚えるgit自習室:ケースその3「コミットをまとめろ」
2015/03/02
git checkout -b 日本史 upstream/世界史
日本史の教科書って何ページくらいありましたっけ?
300?400?
まあ300ページくらいでしょう。
では世界史の教科書は?
やはり300ページくらいだったはずです。
その世界史の教科書の中で、日本に触れている箇所って何ページくらいでしょう?
手元に教科書なんてないので想像ですが、たぶん近代以降で10ページとか20ページくらいでしょう。
でも日本史の教科書は300ページあります。
なのでこれを丸ごと世界史の教科書にブチ込んで世界史の教科書が600ページになったら、たぶん他の国から文句が出る。
あと学生が怒る。
日本の歴史は世界の歴史の一部です。
そして日本の歴史は300ページあります。
しかしそれを世界の歴史に入れるには10ページ程度にまとめないといけない現実。
ケースその3「コミットをまとめろ」
「コミットしたからプッシュするよ」
「修正多すぎでコミット多すぎ。見づらいからコミットまとめて」
「らじゃっくす」
修正が続いたのでコミットをまとめる。
git rebase -i HEAD~~
なら最新2件が出てくる。
git rebase -i <ハッシュ>
なら最新からその番号まで。
実行するとこうなることもある。
It seems that there is already a rebase-merge directory, and I wonder if you are in the middle of another rebase. If that is the case, please try git rebase (–continue | –abort | –skip) If that is not the case, please rm -fr “/Users/resaku/Desktop/denpanomori/.git/rebase-merge” and run me again. I am stopping in case you still have something valuable there. |
これはrebaseやりかけのものがあるという警告。そんな記憶が無いなら
rm -fr /Users/resaku/Desktop/denpanomori/.git/rebase-merge
って消してしまおう。
改めてやり直す。
git log -5
最新の5件がでる。
commit 12ab34cd5612ab34cd5612ab34cd56 |
例えばその中の最新4件をまとめたかったら、4件目のコミットのハッシュをコピーして
git rebase -i 12ab34cd5612ab34cd5612ab34cd56
エディットモードでpickが4つならぶ。一番上のを残して他の3つをpick→squashにする。
(最新は一番下だがこれを残すことはできない。一番上をsquashすると変なことになる)
esq:wqで抜ける。
確認しよう。
git log -5
問題なければpush
git push origin PROJECT-003
しかしほぼ間違いなく
! [rejected] PROJECT-1631 -> PROJECT-1631 (non-fast-forward) |
と怒られる。
「コミットをまとめる=rebase=最新でなくなる」だから、これは正しい挙動。
なので-f付けて強制pushしても大丈夫。
git push -f origin PROJECT-1631
これで完了。
adpc
adpc
関連記事
-
-
ケースで覚えるgit自習室:ケースその1「普通に作業を開始して、そして終了する」
「教室」ではなく「自習室」なところがいろいろアレなカテゴリーです。 大昔インター …
-
-
ケースで覚えるgit自習室:ケースその2「作業中に別の作業が割り込んでくる」
かわいくないけどMacに貼ることによって 「開発者の気分に浸れる」 「スタバでの …
-
-
gitで今いるブランチ名を常に表示させる方法
macでコマンドラインでgitをギトギトにいじる日々。 慣れてくると「ここはどこ …
- PREV
- 新年の抱負~デンパノモリの過去・現在・未来~
- NEXT
- おまけ:本当は大変なAndroid開発