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

Tags of current page