2013年1月19日土曜日

gitでブランチをマージした時にコンフリクトを起こしてしまったら

バージョン管理システムを使っているといつか出会う中ボス的な存在がコンフリクトです。
gitでマージした時にコンフリクトが起きた場合は次の手順で対処できます。

  1. お・ち・つ・け・!
  2. コンフリクトを手動でマージします。(マージ元、マージ先、どちらかを採用するコマンドもあります。)
  3. 「$git add .」コマンド等でマージしたファイルをステージングします。
  4. 全てのコンフリクトが解決したらgit statusコマンドの表示がAll conflicts fixed but you are still merging.に変わります。
  5. 「$git commit」コマンドでコミットします。
  6. コンフリクトが頻繁に起きてしまう場合、開発運用に問題がある可能性が高いので見直してみましょう


おまけ1

手動マージ中に「やっぱやんぴ、マージを最初からやり直したい!」となった場合は次のコマンドを使います。
[ファイル指定]
$git checkout --merge hoge.txt

[カレントディレクリ配下すべて]
$git checkout --merge .

おまけ2

マージ元、マージ先、の一方を採用するにはマージ中にcheckoutコマンドを使用します。
例)topicというブランチをmasterへマージした場合
1.masterの内容を採用する場合
$git checkout --ours ファイル名

2.topicの内容を採用する場合
$git checkout --theirs ファイル名

おまけ3

$git pullでコンフリクトが起きてしまった場合
例えば
$git pull master origin/master

$git fetch origin/master
$git merge origin/master
をまとめて実行しているだけなのです。
つまり、本記事のブランチマージでコンフリクトが起きた場合の対処と同様の方法で解決できるはずです。

このエントリーをはてなブックマークに追加

0 件のコメント :

コメントを投稿