コンフリクトが発生した時、Gitのコマンドだけで対処できる方法があるらしい。
Gitでバイナリファイルがコンフリクトした際の対処方法
git checkout --theirs 対象ファイル
で、マージ先を採用。
git checkout --ours 対象ファイル
で、マージ元を採用。
というもの。
検証してみる
※結果だけ知りたい人は「コンフリクトさせよう」まで飛ばしてもらって構いません。
準備
簡単なファイルを使って調べてみる。Gitのバージョンは 1.8.4。
リポジトリに testA.txtファイルを置く
あまみはるか 17
きさらぎちはや 16
ほしいみき 16
はぎわらゆきほ 17
きくちまこと 17
がなはひびき 16
のワの<ファイルの中身に意味はありませんよ
コンフリクトさせるためのブランチを作る
[master]git checkout -b songs
でsongsブランチ作成。
んで
あまみはるか 乙女よ大志を抱け
きさらぎちはや 蒼い鳥
ほしいみき Relations
はぎわらゆきほ First Stage
きくちまこと 自転車
がなはひびき TRIAL DANCE
こうしてコミット。
[songs]git add .
[songs]git commit -m "add songs"
準備完了。
コンフリクトさせよう
masterブランチにsongsブランチをマージ
[master]git merge songs
すると
Auto-merging testA.txt
CONFLICT (content): Merge conflict in testA.txt
Automatic merge failed; fix conflicts and then commit the result.
無事コンフリクト成功。 やったぜ。
中身を見てみる
<<<<<<< HEAD
あまみはるか 17
きさらぎちはや 16
ほしいみき 16
はぎわらゆきほ 17
きくちまこと 17
がなはひびき 16
=======
あまみはるか 乙女よ大志を抱け
きさらぎちはや 蒼い鳥
ほしいみき Relations
はぎわらゆきほ First Stage
きくちまこと 自転車
がなはひびき TRIAL DANCE
>>>>>>> songs
上がmasterブランチ、下がsongsブランチの内容。
コマンド使ってみる
やってみる
[master]git checkout --theirs testA.txt
すると
あまみはるか 乙女よ大志を抱け
きさらぎちはや 蒼い鳥
ほしいみき Relations
はぎわらゆきほ First Stage
きくちまこと 自転車
がなはひびき TRIAL DANCE
**マージ先(songsブランチ)**が採用された。
もう一つのコマンドも使ってみる
[master]git checkout --ours testA.txt
こうなった
あまみはるか 17
きさらぎちはや 16
ほしいみき 16
はぎわらゆきほ 17
きくちまこと 17
がなはひびき 16
**マージ元(masterブランチ)**が採用された。予想通り。
結論
Gitすごい!!!!