脱初心者を目指してアウトプットに挑戦中。
やたらと恐れているGit
を慣れで克服したいシリーズです。
今回のお題
チーム内である日、
「Github上のコミット履歴を綺麗にしたい」 という話題がありました。
状況として少々イレギュラーですが、
- 複数人でプロトタイプを実装しており、mainブランチにどんどんpushしている
- マージの自動コメントが少々煩わしい
- 過去のコミットが点在していて読みにくい
こんな状況における課題でした。
普通にマージすると、コミットした時刻に合わせて履歴が表示されます。
以下の状況を例にすると A→B→C→D
と表示される。
しかし、作業した人ごとに一連の修正をまとめたい、というのが今回やりたいことです。
履歴上は A→D→B→C
と表示したい。
before:作業状況
after:普通のマージ
after:やりたいこと
実現方法
rebase
コマンドを使うといい感じに整理できる模様。(参考)
自分の作業をまとめて先頭に持っていくことができ、マージコミットが残らなくなります。
注意点として、hashが書き換わること。
# 0.前提としてローカルのmainにコミット済み
# 1.最新のリモートリポジトリを取得
git fetch origin
# 2.origin/main をベースにローカルの main を再構築
git rebase origin/main
終わりに
gitを理解する際に「イメージ図」を作成したいのですが、
その可視化を簡単にする方法に少々悩んでいました。
そんな中、Mermaidを使ったrebaseの図 を発見し、mermaidを使った表現を倣わせていただきました。誠に勝手ながら、ありがとうございます。
rebase
コマンド自体、もう少し理解したいところ。
勉強したのち、記事は更新します。
https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E6%A9%9F%E8%83%BD-%E3%83%AA%E3%83%99%E3%83%BC%E3%82%B9