当我键入gitdiff时,我想用我选择的可视化diff工具(Windows上的SourceGear“diffmerge”)查看输出。如何配置git以执行此操作?
当前回答
尝试此解决方案:
$ meld my_project_using_git
Meld了解Git,并提供最近更改的导航。
其他回答
这是一个适用于Windows的批处理文件-假设DiffMerge安装在默认位置,处理x64,根据需要处理前向反斜杠替换,并能够自行安装。应该很容易用你喜欢的diff程序替换DiffMerge。
要安装:
gitvdiff --install
gitvdiff.bat:
@echo off
REM ---- Install? ----
REM To install, run gitvdiff --install
if %1==--install goto install
REM ---- Find DiffMerge ----
if DEFINED ProgramFiles^(x86^) (
Set DIFF="%ProgramFiles(x86)%\SourceGear\DiffMerge\DiffMerge.exe"
) else (
Set DIFF="%ProgramFiles%\SourceGear\DiffMerge\DiffMerge.exe"
)
REM ---- Switch forward slashes to back slashes ----
set oldW=%2
set oldW=%oldW:/=\%
set newW=%5
set newW=%newW:/=\%
REM ---- Launch DiffMerge ----
%DIFF% /title1="Old Version" %oldW% /title2="New Version" %newW%
goto :EOF
REM ---- Install ----
:install
set selfL=%~dpnx0
set selfL=%selfL:\=/%
@echo on
git config --global diff.external %selfL%
@echo off
:EOF
对以前的伟大答案的简短总结:
git difftool --tool-help
git config --global diff.tool <chosen tool>
git config --global --add difftool.prompt false
然后通过键入(也可以选择指定文件名)使用它:
git difftool
您可能想尝试xd,它是Git/SVNdiff的GUI包装器。它本身不是diff工具。
当你想运行git diff或svn diff时,你可以运行xd,它会向你显示一个文件列表,一个预览窗口,你可以启动任何你喜欢的diff工具,包括tkdiff、xxdiff、gvimdiff、Emacs(ediff)、XEmacs(diff)、Meld、Diffuse、Kompare和KDiff3。您也可以运行任何自定义工具。
不幸的是,该工具不支持Windows。
披露:我是这个工具的作者。
在Mac OS X上,
git difftool -t diffuse
在Git文件夹中为我做这项工作。要安装漫反射,可以使用端口-
sudo port install diffuse
介绍
作为参考,我想加入我对VonC答案的变化。请记住,我使用的是MSys版本的Git(此时为1.6.0.2)和修改的PATH,并从PowerShell(或cmd.exe)运行Git本身,而不是Bash shell。
我引入了一个新命令gitdiff。运行此命令会暂时重定向git diff以使用您选择的可视化diff程序(与VonC的解决方案相反,VonC会永久执行此操作)。这使我既可以使用默认的Git diff功能(gitdiff),也可以使用可视化diff功能。这两个命令都采用相同的参数,例如,为了直观地区分特定文件中的更改,可以键入
gitdiff path/file.txt
安装程序
注意,$GitInstall用作安装Git的目录的占位符。
创建新文件$GitInstall\cmd\gitdiff.cmd@回声消失设置本地的对于/F“delims=”%%I in(“%~dp0...”)do@set path=%%~fI\bin;%%~fI\mingw\bin;%路径%如果“%HOME%”==“”@设置HOME=%USERPROFILE%设置GIT_EXTERNAL_DIFF=GIT-DIFF-visual.cmd设置GIT_PAGER=猫git差异%*末端局部的创建一个新文件$GitInstall\bin\git-diff-visual.cmd(用您选择的diff程序的完整路径替换[visual_diff_exe]占位符)@回声消失git使用7个参数调用rem-diff:rem路径旧文件旧十六进制旧模式新文件新十六进制新模式回声差异“%5”“[visual_diff_exe]”“%2”“%5”退出0你现在完成了。在Git存储库中运行gitdiff现在应该为每个更改的文件调用可视化diff程序。
推荐文章
- 如何将git配置存储为存储库的一部分?
- 如何修改GitHub拉请求?
- 如何在Github和本地删除最后n次提交?
- 我如何调试git/git-shell相关的问题?
- 错误:无法使用rebase进行拉取:您有未分阶段的更改
- Git隐藏未缓存:如何把所有未分期的变化?
- 真实的恶魔
- 如何从另一个分支获得更改
- Git:权限被拒绝(publickey)致命-无法从远程存储库读取。克隆Git存储库时
- git reflog和log有什么区别?
- git推挂在Total line之后
- 重命名git子模块
- 结合Git存储库的前两次提交?
- Xcode 6 gitignore文件应该包括什么?
- 我如何从现有回购的分支创建一个新的GitHub回购?