git merge 使い方
他のブランチをマージしてコミットする
ブランチ other-branch をマージするには
git merge other-branch
とする。
マージコミットのコミットメッセージを指定する
マージコミットのメッセージを指定するには「-m」オプションをつけて
git merge -m "message" other-branch
とする。
マージのコミットを実行しない(マージのコミットメッセージを自分で設定する)
マージしたときに「Merge branch ‘other-branch’」 というようなコミットが実行される (標準では、fast-forward merge がうまくいく場合はコミットされない。 たとえば、マージ元が現在のブランチの先頭から派生した場合)。
マージだけして、このコミットを抑制するには 「–no-commit」オプションを使う。
git merge --no-commit other-branch
マージはワークツリーとインデックスに対して行われるが、コミットは行われない。 この後に、必要ならば修正をして「git commit」を実行する。
他のブランチの変更をまとめてひとつのコミットとしてマージする
「–squash」オプションをつけてマージすると 変更をまとめてひとつのコミットにすることができる。
git merge --squash other-branch
とすると other-branch がインデックスにマージされる。 後は必要な変更を施して
git commit
を実行する。
マージできない
はじめ、次のようにマージできなくてはまった。
error: Entry 'file1' not uptodate. Cannot merge.
これは、現在の状態をコミットしていないためだった。 マージするためには、コミットするか、 git stash で一時的に変更を保存しておく。
マージでコンフリクトしたときにマージを中止して元の状態に戻す
マージでコンフリクトしたときに、いったんマージを中止して元に戻したいことがある。 そのようなときは
git merge --abort
とする。
マージしたときに必ずコミットする
標準では fast-forward merge がうまくいく場合に マージコミットをしないことになっている。 「–no-ff」オプションをつけると必ずマージコミットを行う。
git merge --no-ff other-branch
参考
- man git-merge