Winmerge is installed. Git for windows is installed, from "git version 2.12. 0. windows1" or above (although earlier versions of git may have introduced the command).
Once we are on the master branch, select the feature/refactor branch and select merge. Alternatively choose Merge branches from the Commands menu and select the feature/refactor branch. In the merge dialog you can verify which branch you are working on. Select the branch to merge with then click the Merge button.
Overview
The following is instructions on how to setup GIT Version Control so that you can use a better set of tools than the default installation. The setup requires that GIT Extensions is already installed and involves configuring Winmerge in GIT extensions.
Installation
Walk through all the prompts and install in the default directory for Winmerge.
Configure Winmerge in GIT Version Control
Open a new doc in a text editor.
Copy/paste the following and save the document as "wMerge.sh" to your "C:\Program Files (x86)\Git\bin\" directory.
echo Launching WinMerge: $1 $2 "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Original" -dr "Modified" "$1" "$2"
Goto your "Users->username" directory and locate the .gitconfig file. Open it in your favorite editor copy/paste the following code and Save:
[user]
name = enter your name
email = [email protected]
[core]
autocrlf = false
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = wMerge.sh \"$MERGED\" \"$REMOTE\"
path = c:/Program Files (x86)/winmerge/winmergeu.exe
[mergetool]
keepBackup = false
trustExitCode = false
[diff]
guitool = winmerge
[difftool "winmerge"]
path = c:/Program Files (x86)/winmerge/winmergeu.exe
cmd = \"c:/Program Files (x86)/winmerge/winmergeu.exe\" \"$LOCAL\" \"$REMOTE\"
Run "GitExtensions", goto "tools->Settings->Git Extensions->Git Config". If you've done your installation properly and referenced the tools to their directory, your global settings page should look like below (NOTE: Please fill in your name on name and email):
mergetool: winmerge
path to mergetool: c:/Program Files (x86)/winmerge/winmergeu.exe
mergetool command: wMerge.sh "$MERGED" "$REMOTE"
difftool: winmerge
path to difftool: c:/Program Files (x86)/winmerge/winmergeu.exe
difftool command: "c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"
line endings: checkout as-is, commit as-is
Navigate to the checklist tab to verify that GIT is all "green" and satisfied with your setup.
On Git Extensions v2.47.3, it's really easy to set this up:
Settings -> Global settings -> in the drop-down for 'Mergetool' write manually: WinMerge
and watch the miracle.
Same for 'Difftool' drop-down.
|| || ||
\/ \/ \/
It's just silly that the 'WinMerge' option isn't pre-populated in the dropdown. Oh well.
On windows 7, this is what finally worked for me. Note the "'c:/path/here'"
quotes around my program files path.
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$MERGED"
[diff]
tool = winmerge
[difftool "winmerge"]
cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$LOCAL" "$REMOTE" -dl "Local" -dr
@sebastiaan's answer didn't work for me (maybe it is outdated?)
These are "Global settings" that work for me using GitExtensions 2.28:
Mergetool: winmerge
Path to mergetool: D:/path/to/WinMerge/WinMergeU.exe
Mergetool command: "D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
This causes WinMerge to use the "conflict file" generated by git.-e
allows pressing ESC to close winmerge.
Difftool: winmerge
Path to difftool: D:/path/to/WinMerge/WinMergeU.exe
Difftool command: "D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote"
-dl
and -dr
set the descriptions for the left and right pane.
Add or change the following in the config file:
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED"
This solution is distinct in two ways:
WinMergeU.exe *conflictfile*
, while the two-sided calls suffer from the fact that left hand window presents <<<<<<<
, =======
, and >>>>>>>
markers that $MERGED contains.The $PROGRAMFILES variable is maintained by git bash and (unlike the similar variable on native windows cmd) it navigates to "Program Files (x86)".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With