'How to perform a 3-way visual diff on git?
I'd like to do a 3-way diff of a single file that exist in 2 different branches, that is, the last commit in each branch and also consider the common ancestor. I want to use an external tool that allows to do 3-way comparison. I was considering to use git difftool but as far as I could see it only allows comparing any 2 versions of a given file. I could use mergetool but that forces me to run git merge first so that, BASE, REMOTE and LOCAL variables are set. I don't want to run git merge. I just want to do a 3-way diff first to see the changes done on the file in both branches considering its common ancestor.
Is there an option to do what I need using difftool or mergetool? Thanks
Solution 1:[1]
One solution is the visual diffuse which can directly operate on git revisions and supports n-way views.
For example, you can open a three-way diff between different branches for a file:
diffuse -r master -r HEAD -r upstream file.txt
Solution 2:[2]
Install the 3-way diff tool you prefer, my preferred one is KDiff3.
Open for editing the GIT global configuration:
git edit --global --edit
Adjust it within the tool you chosen:
[diff]
tool = kdiff3
[difftool]
prompt = true
[difftool "kdiff3"]
cmd = 'C:/Program Files/KDiff3/kdiff3.exe' \"$LOCAL\" \"$REMOTE\"
keepBackup = false
[merge]
tool = kdiff3
[mergetool]
prompt = true
[mergetool "kdiff3"]
cmd = 'C:/Program Files/KDiff3/kdiff3.exe' \"$BASE\" \"$LOCAL\" \"$REMOTE\" -o \"$MERGED\"
trustExitCode = true
keepBackup = true
To open it on a file in VS Code using right click command, I added this simple plugin: GIT diff merge tool.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | user7890 |
| Solution 2 |
