当我输入时git diff,我想用我选择的视觉差异工具(Windows上的SourceGear"diffmerge")查看输出.如何配置git来执行此操作?
当我有差异时,我怎样才能将它着色以使其看起来很好?我希望它用于命令行,所以请不要使用GUI解决方案.
默认的git diff行为是以串行方式打开每个diff文件(等待先前文件在打开下一个文件之前关闭).
我正在寻找一种方法来同时打开所有文件 - 例如,在BeyondCompare中,这将打开同一BC窗口中选项卡中的所有文件.
这样可以更轻松地查看一组复杂的变化; 在diff文件之间向后和向前翻转并忽略不重要的文件.
在Linux中,我最喜欢的合并工具是Meld,我使用或配置它与Git一起工作时没有任何问题.然而,在Windows中它是一个不同的故事.
首先,我从我在这里找到的软件包中安装了Meld:https://code.google.com/p/meld-installer/
然后,我配置了我的.gitconfig,以支持Meld作为默认的mergetool
[merge]
tool = meld
[mergetool "meld"]
path = C:\\Program Files (x86)\\Meld\\meld\\meld.exe
keepBackup = false
trustExitCode = false
Run Code Online (Sandbox Code Playgroud)
所以,当我遇到冲突时,我会做git difftool而Meld确实打开了.但是,Git写入传递给diff工具的文件的路径不正确.例如,即使Git在存储库目录(我称之为git mergetool的位置)中生成BASE,LOCAL和REMOTE文件,Meld也会尝试打开可执行文件目录中的每个文件.
Meld尝试打开C:\ Program Files(x86)\ Meld\meld\roses.txt.LOCAL.2760.txt,而不是打开C:\ repo\roses.txt.LOCAL.2760.txt.
有没有人遇到过这个或知道如何配置Git/Meld在Windows中正常工作?
对于github网页浏览,它并没有像许多diff工具那样并排显示.我可以将diff模式改为并排吗?我的意思是在github网站上.
请注意,这个问题不是问题的重复,而是问题“当我执行 \xe2\x80\x9cgit diff\xe2\x80\x9d 时如何获得并排差异?”的后续问题。。这个问题寻求新的信息和问题的解决方案。
\n\n另外,请注意,我只寻求输出在终端中内联的解决方案,就像默认的git diff那样——我不想要任何打开外部 gui diff 程序的东西。
我已遵循上面链接的 SO 问题的建议,并将以下可执行文件放在我的路径上:
\n\n#!/bin/bash\n\n# side-by-side diff with custom options:\nsdiff -w200 -l "$2" "$5" \nRun Code Online (Sandbox Code Playgroud)\n\n然后我可以像这样测试它,例如:
\n\nGIT_EXTERNAL_DIFF=mydiff git diff HEAD HEAD~1\nRun Code Online (Sandbox Code Playgroud)\n\n我会得到这样的输出:
\n\n\n\n正如预期的那样,这是:
\n\n然而,它有几个问题:
\n\nfatal: external diff died, stopping at <filename>有没有办法解决这两个问题sdiff?如果没有,有没有办法使用/usr/bin/diff内置的 git diff 程序或其他终端程序来做到这一点?我不在乎如何实现目标。我只想要内联、并排的颜色差异。
我正在合并两个git更改集(或者可能 - 在git rebase'ing,合并更改集的过程中)涉及文件foo,并且有一些合并冲突.该文件看起来像这样:
text appearing in all changesets
<<<<<<< HEAD
text added on the head
=======
something else added on another changeset
>>>>>>> 1babf8ed... commit comment here
more text appearing in all changesets
added text, no conflicts
yet more appearing in all changesets
Run Code Online (Sandbox Code Playgroud)
我的问题:
对于特定文件(foo如上所述)如何显示冲突内容,以便HEAD修订版显示为已删除的文本,另一个更改集(在我的示例中)显示为添加的文本?换句话说,我怎样才能使一些工具处理之间的部分<<<<<和=====作为前缀-的部分>>>>>和=====作为前缀的部分+,或者反过来?
笔记: