git コンフリクトへの対応

$ git merge dev-branch
Auto-merged dev-branch
CONFLICT (content): Merge conflict in file
Automatic...

まず、競合ファイルを見つける
$ git status

$ git ls-files -u

次に競合の調査(まぁgitは直接ファイルにだめだしをする)
$ cat file

競合時のdiffでは
$ git diff
$ git diff HEAD
$ git diff MERGE_HEAD

そして不思議な事に、どちらかのリビジョンに内容を書き換えると、
$ git diff
の差分がなくなります

競合時のgit log
$ git log --merge --left-right -p
※--mergeは、競合を引き起こしたファイルに関するコミットだけを表示する
※--left-rightは、コミットがマージの左右を表示する
※-p パッチを作成

$ git ls-files -s
100644 ce013625030ba8dba906f756967f9e9ca394464a 1 file
100644 e63164d9518b1e6caf28f455ac86c8246f78ab70 2 file
100644 562080a4c6518e1bf67a9f58a32a67bff72d4f00 3 file

※競合しているファイルを見る場合-uを使う

$ git cat-file -p e63164
中身が見れる

どちらかの修正にする場合
HEADにする場合
$ git checkout --ours file
マージ元にする場合
$ git checkout --theirs file

競合を解決する(rebaseの場合)
$ git add file

マージの中断
コッミット前
$ git reset --hard HEAD

0 件のコメント:

コメントを投稿

ReactNativeでAndroid対応する話

前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...