我成功地让git启动Beyond Compare 3作为diff工具,但是当我做差异时,我正在比较的文件没有被加载.只加载了最新版本的文件而没有其他内容,因此Beyond Compare右侧窗格中没有任何内容.
我正在使用带有Beyond Compare 3的Cygwin运行git 1.6.3.1.我已经设置了超出比较,因为他们在他们的网站的支持部分建议用这样的脚本:
#!/bin/sh
# diff is called by git with 7 parameters:
# path old-file old-hex old-mode new-file new-hex new-mode
"path_to_bc3_executable" "$2" "$5" | cat
Run Code Online (Sandbox Code Playgroud)
有没有其他人遇到过这个问题并知道解决方案?
编辑:
我已经按照VonC的建议,但我仍然遇到与以前完全相同的问题.我是Git的新手,所以也许我没有正确使用差异.
例如,我试图用这样的命令在文件上看到diff:
git diff main.css
然后将打开Beyond Compare,只显示左窗格中的当前main.css,右窗格中没有任何内容.我希望在左窗格中看到我当前的main.css与HEAD相比,基本上我最后提交的内容.
我的git-diff-wrapper.sh看起来像这样:
#!/bin/sh
# diff is called by git with 7 parameters:
# path old-file old-hex old-mode new-file new-hex new-mode
"c:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat
Run Code Online (Sandbox Code Playgroud)
我的git配置对于Diff看起来像这样:
[diff]
external = c:/cygwin/bin/git-diff-wrapper.sh
Run Code Online (Sandbox Code Playgroud) 我正在使用Git Extensions,它预先安装并设置KDiff作为解决合并冲突的diff工具.我非常喜欢Winmerge,并希望用Winmerge取代KDiff.
在Git Extensions设置中,有一些设置可以更改Mergetool,但我似乎无法弄清楚我应该使用什么语法以及为什么.似乎有4个变量:$ BASE,$ LOCAL,$ REMOTE,$ MERGED.看来我应该将这些传递给WinMergeU.exe,但是哪个命令行参数?
我曾尝试过几次搜索,但实际上似乎没有答案.
我正在尝试将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) 如果我将一个repo克隆到现有的git repo中,我会遇到任何问题吗?
为了简化起见,我正在开发一个应该可用于我所有项目的库"lib /".这是一个单独的git repo.我想将这个lib /导入到我的所有项目中,并且只在一个地方更新它,从不接触任何项目,只需使用它.
我假设这没关系,只是想知道是否有什么我应该注意的.谢谢!
我是OS X上的新手,我正在通过命令行使用它.我来自Tortoise SVN和Beyond Compare on Windows的世界.
我希望能够将差异发送到FileMerge.
我只需使用以下命令即可使用TextMate执行此操作:
git diff | mate
Run Code Online (Sandbox Code Playgroud)
但我不知道如何设置,所以我可以使用FileMerge?
哪个是适用于Linux的最佳Visual SVN Diff显示器.
BeyondCompare和VisualSVN 1.5在Windows上运行良好.什么是Linux的等效工具?(特别是Ubuntu).
我知道命令行差异工作; 但我希望突出显示多列语法和差异.
如果该工具也支持Git和Hg,那就更好了.
我刚刚开始使用Git而且我可能错过了一些明显的东西,但是这里有:
我正在尝试整理一个包装脚本,我可以使用它来用DiffMerge替换内置的git diff.基于SO 上的这个线程,我创建了以下批处理文件:
@echo off
REM ---- Switch forward slashes to back slashes ----
set oldW=%2
set oldW=%oldW:/=\%
set newW=%5
set newW=%newW:/=\%
REM ---- Launch DiffMerge ----
"C:/Programs/SourceGear/DiffMerge/DiffMerge.exe" /title1="Old Version" %oldW% /title2="New Version" %newW%
Run Code Online (Sandbox Code Playgroud)
我将bat文件放在%GIT_INSTALL%/ cmd下并编辑了我的.gitconfig文件,如下所示:
[diff]
external = C:/Programs/git/cmd/git-diff-wrapper.bat
Run Code Online (Sandbox Code Playgroud)
如果我启动Git Bash并执行git diff HEAD HEAD~ - myfile
我收到一条消息File (\dev\null) not found- 鉴于我在Windows上并不奇怪.
按下,我启动了gitk,在Edit> Preferences下,我选择了相同的包装脚本.尝试特定文件的"外部差异"选项会产生神秘的错误消息Unknown Option "
很明显,我不知道我在做什么,所以任何帮助都会非常感激.
我在Windows机器上使用msys Git进行源代码控制,我正在试图弄清楚如何让我的合并工具WinMerge与Git一起工作.
我已经按照我的能力尽可能地遵循了这个博客上的说明,因为它是我发现的最接近我正在尝试做的事情.基本上我做的是:
修改我的.gitconfig文件以包含以下内容:
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe\" "$PWD/$LOCAL" "$PWD/$REMOTE" "$PWD/$MERGED"
trustExitCode = false
keepBackup = false
这几乎正常.当我尝试从Git运行合并工具时,WinMerge给我一个错误,说它无法找到文件的路径,这是完全合理的,因为它正在寻找的路径是:
C:\MY\WORKING\DIRECTORY\-e C:\MY\WORKING\DIRECTORY\-ub
看起来Git正在将选项传递给合并工具,而不是本地和远程文件名,如果一切正常,我希望传递这些文件名.
我在网上搜索了Git的合并文档,但我似乎找不到任何与我想要做的事情有关的事情.我的猜测是解决方案将是以下之一:
$LOCAL&$REMOTE变量更改为正确的值,假设$LOCAL&$REMOTE不正确. .bat脚本来调用WinMergeU,并处理Git在我的.bat脚本逻辑中发送给合并工具的参数.