差分を確認するには「P4merge」というソフトが便利なので、この記事ではp4mergeを使った差分の確認方法を説明しています。ファイルの差分を確認する機会はいっぱいあり、比較対象も様々です。
また、ローカルリポジトリ内でのマージにコンフリクトが発生した場合は、エディタを使用するよりもp4mergeの方が簡単にコンフリクトを解消できます。
p4merge のインストール方法
- 公式サイトからダウンロードしてインストールします。インストール時に関連するソフトをインストールするか問われますが、「Merge and Diff Tool (P4Merge)」のみを選択して問題ないです。
- Git Bashでp4mergeを起動できるようにGitの設定ファイルを開きます。
code ~/.gitconfig
- 以下の設定を追記して保存します。
[merge]
keepBackup = false;
tool = p4merge
[mergetool "p4merge"]
path = C:/Program Files/Perforce/p4merge.exe
cmd = \"C:/Program Files/Perforce/p4merge.exe\" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
trustExitCode = false
keepBackup = false
[difftool]
prompt = false
[mergetool]
prompt = false
- 今後作業する中で文字化けする場合は「Edit > Preferences > Character encoding」でUnicodeを選択してください。
ワーキングディレクトリとステージングエリアの差分を確認する
add
コマンドで一度ステージングエリアに追加したファイルに、ワーキングディレクトリで追加の編集を加えた場合の差分の確認する方法です。--
でファイル名を指定することで特定のファイルのみの差分を確認できます。
git difftool
git difftool -- file.txt
※ステージングエリアに何もない場合はローカルリポジトリの最新コミットと比較されます
ワーキングディレクトリとローカルリポジトリの差分を確認する
ワーキングディレクトリと最新コミットの差分を確認します。
git difftool HEAD
ステージングエリアとローカルリポジトリの差分を確認する
commit
準備ができている状態のステージングエリアと最新コミットの差分を確認します。
git difftool --staged HEAD
コミットとコミットの差分を確認する
コミットとコミットを比較するときはコミットIDを入力します。
最新のコミットはコミットIDの代わりにHEAD
を入力できます。最新のコミットの親はHEAD^
、親の親はHEAD^^
です。親が複数ある場合はHEAD^1
やHEAD^2
のように指定します。
git difftool 比較元コミットID 比較先コミットID
ブランチとブランチの差分を確認する
ブランチとブランチを比較するときはブランチ名を入力します。git branch
でブランチ名を確認できます。
git difftool 比較元ブランチ名 比較先ブランチ名
# リモートリポジトリとローカルリポジトリの差分も確認可能
git diff origin/main main
TagとTagの差分を確認する
git difftool 比較元タグ名 比較先タグ名
マージコンフリクトの解決
- マージ先となる親ブランチに移動します。
git checkout main
- マージしようとするとコンフリクトが発生します。
git merge マージするブランチ名
- コミットの関係図を一応確認します。
git log --oneline --all --graph
- p4mergeでコンフリクト部分の編集画面を開きます。
git mergetool
- コンフリクト部分ごとに採用する内容をクリックして選択します。複数のコンフリクトがある場合は矢印ボタンで移動します。
- 編集が終わったら保存し、p4mergeを閉じます。
- コンフリクト解消前のバックアップファイル
.orig
を削除します。毎回削除するのが面倒くさい人は.gitignore
に追加しておくとよい(この記事参照)。
rm ファイル名
# まとめて削除する場合(-nで削除対象確認、-fで削除)
git clean -n
git clean -f
- 変更点を
add
してcommit
することでマージが完了します。