.NET 開発基盤部会 Wiki
目次 †
概要 †
mergeとrebase †
使い方 †
commit履歴がわかりやすくなる †
- local branch
- <base-branch> に、現在のfeature branchの全commitを適用
git rebase <base-branch>
rebaseのinteractiveモード †
現在のbranchにある<commit>以降のcommit(commitとmerge commitを含まない)を取り上げて、エディタが立ち上がる。
git rebase -i <commit>
git rebase --interactive <commit>
以下のコマンドが使える。
- pick:commitを採用
- reword:commitを採用するがcommitメッセージを変更
- edit:commitを採用するがファイルを修正する
- squash:一個前のcommitと合体させる
- fixup:commitメッセージを変更しない点以外squashと同じ
- exec:shellでコマンドを実行する
commitメッセージを後から変える †
- 直前のcommitメッセージを変える
git commit --amend
- 複数前のcommitメッセージを変える
interactiveモードで、pickからreword(r)に書き換える
commitの順序を後から変える †
・・・
2つ以上のcommitを1個に統合する †
- 直近2つのcommitを1個のcommitにする
reset --soft
- 1つ前のcommitと結合する
interactiveモードで、pickからsquash(s)に書き換える
一度commitした内容を編集する †
edit
注意、使い分け †
mergeを利用する方法の特徴 †
良い点 †
- 比較的、簡単な操作
- 統合されるブランチのコミットを改変しない
- 統合後もブランチの情報を分離して保持(後から確認するのが容易)
悪い点 †
(特に、複数人が並行して同じブランチ上で作業をする際には、)
- 多数のブランチの情報が残存したり、
- マージコミットが散在したりすることで、
履歴が複雑化する原因になる
rebaseを利用する方法の特徴 †
良い点 †
不要なコミットが入り込むことがないので、直感的かつシンプルに履歴を保つ
悪い点 †
- 競合発生時の対処手順が、比較的、複雑
- 統合されるブランチのコミットを改変するので注意が必要
参考 †
- サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ