当我输入时git diff
,我想用我选择的视觉差异工具(Windows上的SourceGear"diffmerge")查看输出.如何配置git来执行此操作?
默认的git diff行为是以串行方式打开每个diff文件(等待先前文件在打开下一个文件之前关闭).
我正在寻找一种方法来同时打开所有文件 - 例如,在BeyondCompare中,这将打开同一BC窗口中选项卡中的所有文件.
这样可以更轻松地查看一组复杂的变化; 在diff文件之间向后和向前翻转并忽略不重要的文件.
我这样配置git
:
git config --global diff.tool meld
Run Code Online (Sandbox Code Playgroud)
当我跑:
git difftool
Run Code Online (Sandbox Code Playgroud)
我收到以下消息:
Viewing: 'hello.txt'
Hit return to launch 'meld':
Run Code Online (Sandbox Code Playgroud)
然后,如果我按Enter,meld
将启动.
如何禁用此消息,以便meld
在键入后立即启动git difftool
?
我正在尝试将WinMerge与Git集成,因为我之前在Windows 7旗舰版上看到过其他人.
我已经按照以下步骤操作,但是当我执行git mergetool时默认继续显示错误,默认为vimdiff.
在git的根目录中创建了一个名为winmerge.sh的文件:C/Program Files(x86)/ Git/with:WinMergeU是正确的位置.
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files (x86)/WinMerge/WinMergeU.exe"
git /e /u /dl "Base" /dr "Mine" "$1" "$2"
Run Code Online (Sandbox Code Playgroud)
并使用以下命令.
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)
错误显示为:
git config option merge.tool set to unknown tool: winmerge
Run Code Online (Sandbox Code Playgroud) 我一直在努力让tortoisemerge在Git中作为difftool选项工作,我的.gitconfig文件当前显示:
[diff]
tool = tortoise
[difftool "tortoise"]
cmd = tortoisemerge.exe -mine:$LOCAL -base:$REMOTE
[difftool]
prompt = false
Run Code Online (Sandbox Code Playgroud)
根据tortoise merge docs,'mine'命令指出哪个文件将在右边显示,以双向diff.
我的问题是,GIT提供的LOCAL和REMOTE变量实际指向什么?该文件是一个有点含糊指出,
LOCAL设置为包含diff前映像内容的临时文件的名称,REMOTE设置为包含diff后映像内容的临时文件的名称.
当我修改一个文件,然后输入'git difftool'时,问题出现了tortoisemerge是在LEFT上使用工作目录文件启动的,而不是我假设的那样.我知道我只能切换"我的"和"本地"命令,但我试图找出本地/远程指向的内容以及解决此问题的最佳方法
有没有办法查看已经在3-way diff中提交的合并?
如果3周前分支机构之间发生了巨大的合并,有什么方法可以在像BeyondCompare3这样的外部差异工具中看到它的3路差异吗?我正在寻找合并提交中更改的文件.奖金,如果我能得到它只显示冲突和任何手动更改,而不是看到两个分支之间的文件的完整差异.
如果左侧有<<<<< ===== >>>>>冲突标记而右侧是承诺结果,我不介意解决双向差异问题.
我试着看看diff-tree,diff-files,diff,difftool,show等等,但是无法弄明白.我知道gitk会在合并提交中显示更改,但我不喜欢上下差异视图,当有大量更改时很难理解.
如果我能做点什么的话 git difftool --cc firstparent..secondparent..result
我正在尝试使用vimdiff作为Git的diff工具,但由于某种原因,文件始终以只读模式打开.它对原始文件有意义,但对我修改过的文件没有意义(因为我尚未提交它们).
这是我目前的.gitconfig:
[diff]
tool = vimdiff
[merge]
tool = vimdiff
[difftool]
prompt = false
Run Code Online (Sandbox Code Playgroud)
知道是什么原因引起的吗?
有没有一种简单的方法可以将旧git提交的文件树与工作文件树进行比较?
git-difftool做了非常相似的事情,但我不希望它实际上做任何差异; 重点是它调用的工具可以为它提供更好的界面.
我试图在git中使用p4merge作为我的差异/合并工具.
但是我遇到了严重的问题.
我可以使用p4merge作为difftool,git difftool <sha1> <sha1>
效果很好.我也可以将它用作合并工具.但是当我试图让它做一个目录差异时git difftool -d <sha1> <sha1>
会弹出一个错误对话框,上面写着:
错误:'/ var/folder/6s/6sCbckgPGH42yLSh2eXveE +++TI/-Tmp-/git-difftool.9rgKV/left'是(或指向)无效文件.'/var/folders/6s/6sCbckgPGH42yLSh2eXveE+++TI/-Tmp-/git-difftool.9rgKV/right'是(或指向)无效文件.
使用'p4merge -h'获取更多帮助.
这是因为p4merge不支持目录差异吗?有没有什么办法解决这一问题?
顺便说一句,这是我的.gitconfig
设置
; p4merge settings
; Can't do directory diff?
[difftool "p4merge"]
cmd = /Applications/p4merge.app/Contents/MacOS/p4merge \"$LOCAL\" \"$REMOTE\"
trustExitCode = false
[mergetool "p4merge"]
cmd = /Applications/p4merge.app/Contents/MacOS/p4merge \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
trustExitCode = false
[difftool]
prompt = false
[diff]
; tool = kdiff3
tool = p4merge
[merge]
; tool = kdiff3
tool = p4merge
Run Code Online (Sandbox Code Playgroud) 有没有人让Meld在Windows上与Git合作?我试图让它工作,我没有成功.
我安装了Meld,当我从命令行调用它时有两个文件作为参数,它们很好地区分它们以便正确安装Meld.但是我无法使用Git(Git Diff).我使用的git version 1.8.1.msysgit.1
是Git 版本.
我尝试了几件事:我创建了一个shell脚本,meld.sh
:
#!/bin/bash
meld.exe "$2" "$5"
echo $2
echo $5
Run Code Online (Sandbox Code Playgroud)
并从Git中使用它:
[diff]
tool = meld
[difftool "meld"]
cmd = \"D:\\meld.sh\"
Run Code Online (Sandbox Code Playgroud)
我试着把它添加为像这样的difftool:
[diff]
tool = meld
[difftool "meld"]
cmd = \"C:\\Program Files (x86)\\Meld\\meld\\meld.exe\"
Run Code Online (Sandbox Code Playgroud)
或者像这样:
[diff]
tool = meld
[difftool "meld"]
cmd = '\"/c/Program Files (x86)/Meld/meld/meld.exe\" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED'
Run Code Online (Sandbox Code Playgroud)
但它似乎真的不起作用.我还试图从我的shell脚本中回显第二个($ 2)和第五个($ 5)参数,没有输出.我还尝试过以下几种方式使用批处理脚本:
meld.exe %2 %5
Run Code Online (Sandbox Code Playgroud)
要么
meld.exe %~2 %~5
Run Code Online (Sandbox Code Playgroud)
但它确实不起作用......如何在传播Git
到Meld时传递文件的两个版本?这很烦人......