标签: mergetool

p4merge 和 Git 1.8.3

我如何配置gitp4merge用作我的mergetool

接下来是我现在的情况:

$ git --version
git version 1.8.3.msysgit.0

$ git mergetool

This message is displayed because 'merge.tool' is not configured.
See 'git mergetool --tool-help' or 'git help config' for more details.
'git mergetool' will now attempt to use one of the following tools:
tortoisemerge emerge vimdiff
No known merge tool is available.
Run Code Online (Sandbox Code Playgroud)

git mergetool p4merge

9
推荐指数
2
解决办法
6935
查看次数

如何查看我使用的合并工具?

我想检查我的git设置的合并工具 - 我只是不记得名字.我知道我可以等到下一个合并机会来运行它git merge tool并查看它是什么,但我想输入类似于git mergetool status查看工具的内容(例如,版本是什么).

git mergetool

9
推荐指数
2
解决办法
5763
查看次数

使用Sublimerge配置git mergetool

我配置我的git来解决与Sublimerge的合并冲突.为此,我跑了:

git config --global merge.tool sublimerge

git config --global mergetool.sublimerge.cmd 'subl -n --wait \"$REMOTE\" \"$BASE\"   \"$LOCAL\" \"$MERGED\" --command \"sublimerge_diff_views\"'

git config --global mergetool.sublimerge.trustExitCode 'false'

git config --global diff.tool sublimerge

git config --global difftool.sublimerge.cmd 'subl -n --wait \"$REMOTE\" \"$LOCAL\" --command \"sublimerge_diff_views {\\\"left_read_only\\\": true, \\\"right_read_only\\\": true}\"'
Run Code Online (Sandbox Code Playgroud)

当我运行git mergetool时,Sublime将打开四列:.remote,.base,.local和当前文件.但是,所有列都是空的.

并且所有列名都有一个"在文件扩展名之后,如:file.php.REMOTE.44625.php",file.php.BASE.44625.php",file.php.LOCAL.44625.php"和file.php "那我就不能编辑冲突了.

有人可以帮帮我吗?

git mergetool git-config sublimetext3

7
推荐指数
1
解决办法
4679
查看次数

如何在合并工具期间选择整个 REMOTE 文件?

我正在使用 CLI 合并工具vimdiff,而不是逐行输入:diffg RE每个更改来选择远程版本,有没有办法可以将整个文件的远程版本作为目标合并?

git vim merge vimdiff mergetool

7
推荐指数
1
解决办法
1532
查看次数

Git&WinMerge(msysgit)

我已经阅读了关于这个主题的大量问答,并遵循了该信的所有指示.但是我仍然头疼,试图将Git设置为使用WinMerge进行差异和合并.

我使用Git终端采取了以下步骤:

git config --global diff.tool winmerge
git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false
Run Code Online (Sandbox Code Playgroud)

我还在我的PATH变量中包含的目录中设置了一个脚本:

#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" git /e /u /dl "Base" /dr "Mine" "$1" "$2""
Run Code Online (Sandbox Code Playgroud)

当我执行

git mergetool
Run Code Online (Sandbox Code Playgroud)

在Git终端中,我看到:

Merging:
first.txt

Normal merge conflict for 'first.txt':
  {local}: modified
  {remote}: modified
Launching WinMergeU.exe:
Run Code Online (Sandbox Code Playgroud)

因此在我看来,$LOCAL$REMOTE变量并没有将任何内容传递给winmerge.sh脚本.我在这做错了什么?我必须在配置部分中假设它.

git winmerge msysgit mergetool

6
推荐指数
1
解决办法
6061
查看次数

Git:配置difftool和mergetool的模式

在Mercurial中,可以为外部差异和合并工具定义模式(以便仅为匹配指定模式的文件调用它们):

[diff-patterns]
**.ext = difftool
[merge-patterns]
**.ext = mergetool
Run Code Online (Sandbox Code Playgroud)

如何在Git中定义这样的模式?

git-config(1)中的[mergetool]部分未提及任何模式,掩码或任何类似的模式.

编辑:

这是我的.git/config的相关部分:

[diff]
    tool = difftool
[difftool "difftool"]
    cmd = difftool.git.sh "$LOCAL" "$REMOTE" "$BASE"

[merge]
    tool = mergetool
[mergetool "mergetool"]
    cmd = mergetool.git.sh "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
Run Code Online (Sandbox Code Playgroud)

现在它适用于所有文件.

我希望为名称以.结尾的文件调用difftool和mergetool.ext

编辑:

我添加了一个文件.git/info/attributes,其中包含以下内容:

*.ext   diff=difftool
*.ext   merge=mergetool
Run Code Online (Sandbox Code Playgroud)

我还补充道

[diff "difftool"]
    name = my custom diff driver
    driver = difftool.git.sh %A %B %O
[merge "mergetool"]
    name = my custom merge driver
    driver = mergetool.git.sh %A %B %O …
Run Code Online (Sandbox Code Playgroud)

git mercurial mergetool difftool

6
推荐指数
1
解决办法
1361
查看次数

git mergetool失败了

合并后,我想使用git mergetool来解决问题,但它失败了我指定的任何工具:

git mergetool                                                                                                          
 merge tool candidates: opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse ecmerge p4merge araxis bc3 vimdiff emerge
Merging:
main.c

Normal merge conflict for 'main.c':
  {local}: modified file
  {remote}: modified file
Hit return to start merge resolution tool (kdiff3):
merge of main.c failed

我指定的工具似乎根本没有启动.

输出

git config --list


merge.tool=kdiff3
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true

git mergetool git-merge

6
推荐指数
1
解决办法
8481
查看次数

如何跳过"点击返回以启动合并解析工具"并自动打开mergetool

Git要求点击返回按钮逐个打开每个冲突文件的mergetool:

> git mergetool 
Normal merge conflict for '...':
  {local}: modified file
  {remote}: modified file
Hit return to start merge resolution tool (opendiff):
Run Code Online (Sandbox Code Playgroud)

如何避免项目的命中返回步骤并自动打开配置的合并工具?

git mergetool git-config

6
推荐指数
2
解决办法
5041
查看次数

不能将 `git mergetool` 与 `git am` 或 `git apply` 或 `patch` 一起使用

git mergetool很棒(就我而言,我使用 kdiff3)。但是,无法使用它来解决来自git amgit apply(甚至与patch命令)的冲突。实际上,mergetool 在git am使用修改版本和补丁时需要 3 个文件才能工作(基本版本和两个修改版本)。

你知道一种git mergetool用于与产生的冲突的方法git am吗?

我认为有必要从修改版本和补丁中猜测基本文件。如果单独考虑每个块,看起来很棘手,但并非不可能。

patch mergetool git-merge git-am git-apply

6
推荐指数
1
解决办法
419
查看次数

如何解决KDiff在解决合并冲突时添加额外空行的问题?

如何解决KDiff在解决合并冲突时添加额外空行的问题?将设置中的结束行和编码更改为任何其他内容都没有帮助。

如果在运行 git mergetool 之前我们有:

line1
line2
line3
Run Code Online (Sandbox Code Playgroud)

然后在开始并解决冲突后:

line1

line2

line3
Run Code Online (Sandbox Code Playgroud)

git mergetool kdiff3

6
推荐指数
1
解决办法
1301
查看次数