# git-mergetool
> 原文: [https://git-scm.com/docs/git-mergetool](https://git-scm.com/docs/git-mergetool)
## 名稱
git-mergetool - 運行合并沖突解決工具來解決合并沖突
## 概要
```
git mergetool [--tool=<tool>] [-y | --[no-]prompt] [<file>…?]
```
## 描述
使用`git mergetool`運行多個合并實用程序之一來解決合并沖突。它通常在 _git merge_ 之后運行。
如果一個或多個< file>給出參數,將運行合并工具程序以解決每個文件的差異(跳過那些沒有沖突的文件)。指定目錄將包括該路徑中的所有未解析文件。如果沒有< file>如果指定了名稱, _git mergetool_ 將在每個具有合并沖突的文件上運行合并工具程序。
## OPTIONS
```
-t <tool>
```
```
--tool=<tool>
```
使用< tool>指定的合并解析程序。有效值包括emerge,gvimdiff,kdiff3,meld,vimdiff和tortoisemerge。運行`git mergetool --tool-help`以獲取有效< tool>的列表設置。
如果未指定合并解析程序, _git mergetool_ 將使用配置變量`merge.tool`。如果未設置配置變量`merge.tool`, _git mergetool_ 將選擇合適的默認值。
您可以通過設置配置變量`mergetool.<tool>.path`顯式提供工具的完整路徑。例如,您可以通過設置`mergetool.kdiff3.path`配置kdiff3的絕對路徑。否則, _git mergetool_ 假定該工具在PATH中可用。
可以通過指定要在配置變量`mergetool.<tool>.cmd`中調用的命令行來自定義 _git mergetool_ 來運行備用程序,而不是運行其中一個已知的合并工具程序。
當使用此工具調用 _git mergetool_ 時(通過`-t`或`--tool`選項或`merge.tool`配置變量),將在`$BASE`設置為名稱的情況下調用配置的命令行包含合并公共基礎的臨時文件(如果有); `$LOCAL`設置為包含當前分支上文件內容的臨時文件的名稱; `$REMOTE`設置為包含要合并的文件內容的臨時文件的名稱,`$MERGED`設置為合并工具應寫入合并解析結果的文件的名稱。
如果自定義合并工具正確指示合并解析及其退出代碼成功,則配置變量`mergetool.<tool>.trustExitCode`可以設置為`true`。否則, _git mergetool_ 將提示用戶在自定義工具退出后指示分辨率是否成功。
```
--tool-help
```
打印可能與`--tool`一起使用的合并工具列表。
```
-y
```
```
--no-prompt
```
在每次調用合并解析程序之前不要提示。如果使用`--tool`選項或`merge.tool`配置變量顯式指定了合并解析程序,則這是默認值。
```
--prompt
```
在每次調用合并解析程序之前提示,以便為用戶提供跳過路徑的機會。
```
-g
```
```
--gui
```
當使用`-g`或`--gui`選項調用 _git-mergetool_ 時,將從配置的`merge.guitool`變量而不是`merge.tool`中讀取默認合并工具。
```
--no-gui
```
這將覆蓋先前的`-g`或`--gui`設置,并且將從配置的`merge.tool`變量中讀取默認合并工具。
```
-O<orderfile>
```
按照< orderfile>中指定的順序處理文件,每行有一個shell glob模式。這會覆蓋`diff.orderFile`配置變量(參見 [git-config [1]](https://git-scm.com/docs/git-config) )。要取消`diff.orderFile`,請使用`-O/dev/null`。
## 臨時文件
`git mergetool`在解析合并時創建`*.orig`備份文件。一旦文件合并并且其`git mergetool`會話已完成,可以安全地刪除它們。
將`mergetool.keepBackup`配置變量設置為`false`會導致`git mergetool`在文件成功合并時自動刪除備份。
## GIT
部分 [git [1]](https://git-scm.com/docs/git) 套件
- git
- git-config
- git-help
- git-init
- git-clone
- git-add
- git-status
- git-diff
- git-commit
- git-reset
- git-rm
- git-mv
- git-branch
- git-checkout
- git-merge
- git-mergetool
- git-log
- git-stash
- git-tag
- git-worktree
- git-fetch
- git-pull
- git-push
- git-remote
- git-submodule
- git-show
- git-log
- git-shortlog
- git-describe
- git-apply
- git-cherry-pick
- git-rebase
- git-revert
- git-bisect
- git-blame
- git-grep
- gitattributes
- giteveryday
- gitglossary
- githooks
- gitignore
- gitmodules
- gitrevisions
- gittutorial
- gitworkflows
- git-am
- git-format-patch
- git-send-email
- git-request-pull
- git-svn
- git-fast-import
- git-clean
- git-gc
- git-fsck
- git-reflog
- git-filter-branch
- git-instaweb
- git-archive
- git-bundle
- git-daemon
- git-update-server-info
- git-cat-file
- git-check-ignore
- git-checkout-index
- git-commit-tree
- git-count-objects
- git-diff-index
- git-for-each-ref
- git-hash-object
- git-ls-files
- git-merge-base
- git-read-tree
- git-rev-list
- git-rev-parse
- git-show-ref
- git-symbolic-ref
- git-update-index
- git-update-ref
- git-verify-pack
- git-write-tree