379 captures
10 May 2012 - 14 Jan 2026
Jul AUG Sep
26
2020 2021 2022
success
fail

About this capture

COLLECTED BY

Collection: Wikipedia Eventstream

TIMESTAMPS

The Wayback Machine - http://web.archive.org/web/20210826122104/https://git-scm.com/docs/git-mergetool
 
Git





About  

Branching and Merging  

Small and Fast  

Distributed  

Data Assurance  

Staging Area  

Free and Open Source  

Trademark  



Documentation  

Reference  

Book  

Videos  

External Links  



Downloads  

GUI Clients  

Logos  



Community  



English 
 
Localized versions of git-mergetool manual
 


(一) English  

(二) Français  

(三) Português (Brasil)  


Topics 


Setup and Config



git

config

help

bugreport

Getting and Creating Projects



init

clone

Basic Snapshotting



add

status

diff

commit

notes

restore

reset

rm

mv

Branching and Merging



branch

checkout

switch

merge

mergetool

log

stash

tag

worktree

Sharing and Updating Projects



fetch

pull

push

remote

submodule

 

Inspection and Comparison



show

log

diff

difftool

range-diff

shortlog

describe

Patching



apply

cherry-pick

diff

rebase

revert

Debugging



bisect

blame

grep

Email



am

apply

format-patch

send-email

request-pull

External Systems



svn

fast-import

Server Admin



daemon

update-server-info

 

Guides



gitattributes

Command-line interface conventions

Everyday Git

Frequently Asked Questions (FAQ)

Glossary

Hooks

gitignore

gitmodules

Revisions

Submodules

Tutorial

Workflows

All guides...

Administration



clean

gc

fsck

reflog

filter-branch

instaweb

archive

bundle

Plumbing Commands



cat-file

check-ignore

checkout-index

commit-tree

count-objects

diff-index

for-each-ref

hash-object

ls-files

ls-tree

merge-base

read-tree

rev-list

rev-parse

show-ref

symbolic-ref

update-index

update-ref

verify-pack

write-tree

 


Version 2.33.0    git-mergetool last updated in 2.33.0
 
Changes in the git-mergetool manual
 


(一)2.31.1  2.33.0 no changes

(二) 2.31.0   03/15/21  

(三)2.22.1  2.30.2 no changes

(四) 2.22.0   06/07/19  

(五)2.20.1  2.21.4 no changes

(六) 2.20.0   12/09/18  

(七)2.12.5  2.19.6 no changes

(八) 2.11.4   09/22/17  

(九)2.2.3  2.10.5 no changes

(十) 2.1.4   12/17/14  

(11) 
 

Check your version of git by running
 git --version  



NAME



git-mergetool - Run merge conflict resolution tools to resolve merge conflicts




SYNOPSIS



git mergetool [--tool=<tool>] [-y | --[no-]prompt] [<file>…​]




DESCRIPTION




Use git mergetool to run one of several merge utilities to resolve merge conflicts. It is typically run after git merge.

If one or more <file> parameters are given, the merge tool program will be run to resolve differences on each file (skipping those without conflicts). Specifying a directory will include all unresolved files in that path. If no <file> names are specified, git mergetool will run the merge tool program on every file with merge conflicts.




OPTIONS





 -t <tool> 

--tool=<tool> 


Use the merge resolution program specified by <tool>. Valid values include emerge, gvimdiff, kdiff3, meld, vimdiff, and tortoisemerge. Run git mergetool --tool-help for the list of valid <tool> settings.


If a merge resolution program is not specified, git mergetool will use the configuration variable merge.tool. If the configuration variable merge.tool is not set, git mergetool will pick a suitable default.

You can explicitly provide a full path to the tool by setting the configuration variable mergetool.<tool>.path. For example, you can configure the absolute path to kdiff3 by setting mergetool.kdiff3.path. Otherwise, git mergetool assumes the tool is available in PATH.

Instead of running one of the known merge tool programs, git mergetool can be customized to run an alternative program by specifying the command line to invoke in a configuration variable mergetool.<tool>.cmd.

When git mergetool is invoked with this tool (either through the -tor--tool option or the merge.tool configuration variable) the configured command line will be invoked with $BASE set to the name of a temporary file containing the common base for the merge, if available; $LOCAL set to the name of a temporary file containing the contents of the file on the current branch; $REMOTE set to the name of a temporary file containing the contents of the file to be merged, and $MERGED set to the name of the file to which the merge tool should write the result of the merge resolution.

If the custom merge tool correctly indicates the success of a merge resolution with its exit code, then the configuration variable mergetool.<tool>.trustExitCode can be set to true. Otherwise, git mergetool will prompt the user to indicate the success of the resolution after the custom tool has exited.



 --tool-help 


Print a list of merge tools that may be used with --tool.


 -y 

--no-prompt 


Dont prompt before each invocation of the merge resolution program. This is the default if the merge resolution program is explicitly specified with the --tool option or with the merge.tool configuration variable.


 --prompt 


Prompt before each invocation of the merge resolution program to give the user a chance to skip the path.


 -g 

--gui 


When git-mergetool is invoked with the -gor--gui option the default merge tool will be read from the configured merge.guitool variable instead of merge.tool. If merge.guitool is not set, we will fallback to the tool configured under merge.tool.


 --no-gui 


This overrides a previous -gor--gui setting and reads the default merge tool will be read from the configured merge.tool variable.


 -O<orderfile> 


Process files in the order specified in the <orderfile>, which has one shell glob pattern per line. This overrides the diff.orderFile configuration variable (see git-config[1]). To cancel diff.orderFile, use -O/dev/null.






CONFIGURATION





 mergetool.<tool>.path 


Override the path for the given tool. This is useful in case your tool is not in the PATH.


 mergetool.<tool>.cmd 


Specify the command to invoke the specified merge tool. The specified command is evaluated in shell with the following variables available: BASE is the name of a temporary file containing the common base of the files to be merged, if available; LOCAL is the name of a temporary file containing the contents of the file on the current branch; REMOTE is the name of a temporary file containing the contents of the file from the branch being merged; MERGED contains the name of the file to which the merge tool should write the results of a successful merge.


 mergetool.<tool>.hideResolved 


Allows the user to override the global mergetool.hideResolved value for a specific tool. See mergetool.hideResolved for the full description.


 mergetool.<tool>.trustExitCode 


For a custom merge command, specify whether the exit code of the merge command can be used to determine whether the merge was successful. If this is not set to true then the merge target file timestamp is checked and the merge assumed to have been successful if the file has been updated, otherwise the user is prompted to indicate the success of the merge.


 mergetool.meld.hasOutput 


Older versions of meld do not support the --output option. Git will attempt to detect whether meld supports --output by inspecting the output of meld --help. Configuring mergetool.meld.hasOutput will make Git skip these checks and use the configured value instead. Setting mergetool.meld.hasOutputtotrue tells Git to unconditionally use the --output option, and false avoids using --output.


 mergetool.meld.useAutoMerge 


When the --auto-merge is given, meld will merge all non-conflicting parts automatically, highlight the conflicting parts and wait for user decision. Setting mergetool.meld.useAutoMergetotrue tells Git to unconditionally use the --auto-merge option with meld. Setting this value to auto makes git detect whether --auto-merge is supported and will only use --auto-merge when available. A value of false avoids using --auto-merge altogether, and is the default value.


 mergetool.hideResolved 


During a merge Git will automatically resolve as many conflicts as possible and write the MERGED file containing conflict markers around any conflicts that it cannot resolve; LOCAL and REMOTE normally represent the versions of the file from before Gits conflict resolution. This flag causes LOCAL and REMOTE to be overwriten so that only the unresolved conflicts are presented to the merge tool. Can be configured per-tool via the mergetool.<tool>.hideResolved configuration variable. Defaults to false.


 mergetool.keepBackup 


After performing a merge, the original file with conflict markers can be saved as a file with a .orig extension. If this variable is set to false then this file is not preserved. Defaults to true (i.e. keep the backup files).


 mergetool.keepTemporaries 


When invoking a custom merge tool, Git uses a set of temporary files to pass to the tool. If the tool returns an error and this variable is set to true, then these temporary files will be preserved, otherwise they will be removed after the tool has exited. Defaults to false.


 mergetool.writeToTemp 


Git writes temporary BASE, LOCAL, and REMOTE versions of conflicting files in the worktree by default. Git will attempt to use a temporary directory for these files when set true. Defaults to false.


 mergetool.prompt 


Prompt before each invocation of the merge resolution program.






TEMPORARY FILES




git mergetool creates *.orig backup files while resolving merges. These are safe to remove once a file has been merged and its git mergetool session has completed.


Setting the mergetool.keepBackup configuration variable to false causes git mergetool to automatically remove the backup as files are successfully merged.




GIT




Part of the git[1] suite



 



About this site
 Patches, suggestions, and comments are welcome.  

Git is a member of Software Freedom Conservancy