相关疑难解决方法(0)

如何使用我喜欢的diff工具/查看器查看'git diff'输出?

当我输入时git diff,我想用我选择的视觉差异工具(Windows上的SourceGear"diffmerge")查看输出.如何配置git来执行此操作?

git diff diffmerge difftool git-difftool

735
推荐指数
17
解决办法
42万
查看次数

如何在命令行上着色diff?

当我有差异时,我怎样才能将它着色以使其看起来很好?我希望它用于命令行,所以请不要使用GUI解决方案.

unix diff command-line colors

475
推荐指数
11
解决办法
16万
查看次数

git difftool,立即打开所有diff文件,而不是串行打开

默认的git diff行为是以串行方式打开每个diff文件(等待先前文件在打开下一个文件之前关闭).

我正在寻找一种方法来同时打开所有文件 - 例如,在BeyondCompare中,这将打开同一BC窗口中选项卡中的所有文件.

这样可以更轻松地查看一组复杂的变化; 在diff文件之间向后和向前翻转并忽略不重要的文件.

git difftool

229
推荐指数
3
解决办法
5万
查看次数

Git与Windows上的Meld合并工具

在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中正常工作?

git meld

83
推荐指数
4
解决办法
6万
查看次数

改变github diff进行并排比较?

对于github网页浏览,它并没有像许多diff工具那样并排显示.我可以将diff模式改为并排吗?我的意思是在github网站上.

git github

29
推荐指数
3
解决办法
1万
查看次数

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

我的终端中的彩色、并排、内联 git diff 输出

请注意,这个问题不是问题的重复,而是问题“当我执行 \xe2\x80\x9cgit diff\xe2\x80\x9d 时如何获得并排差异?”的后续问题。。这个问题寻求新的信息和问题的解决方案。

\n\n

另外,请注意,我只寻求输出在终端中内联的解决方案,就像默认的git diff那样——我不想要任何打开外部 gui diff 程序的东西。

\n\n

迄今为止的进展

\n\n

我已遵循上面链接的 SO 问题的建议,并将以下可执行文件放在我的路径上:

\n\n
#!/bin/bash\n\n# side-by-side diff with custom options:\nsdiff -w200 -l "$2" "$5" \n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我可以像这样测试它,例如:

\n\n
GIT_EXTERNAL_DIFF=mydiff git diff HEAD HEAD~1\n
Run Code Online (Sandbox Code Playgroud)\n\n

我会得到这样的输出:

\n\n

截屏

\n\n

问题

\n\n

正如预期的那样,这是:

\n\n
    \n
  • 内嵌在终端中
  • \n
  • 并排输出
  • \n
\n\n

然而,它有几个问题:

\n\n
    \n
  • 如果多个文件发生更改,则在处理第一个文件后它会终止,并输出错误fatal: external diff died, stopping at <filename>
  • \n
  • 输出不使用绿色/红色来显示新代码/删除。
  • \n
\n\n

有没有办法解决这两个问题sdiff?如果没有,有没有办法使用/usr/bin/diff内置的 git diff 程序或其他终端程序来做到这一点?我不在乎如何实现目标。我只想要内联、并排的颜色差异。

\n

git git-diff sdiff

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

如何将我的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修订版显示为已删除的文本,另一个更改集(在我的示例中)显示为添加的文本?换句话说,我怎样才能使一些工具处理之间的部分<<<<<=====作为前缀-的部分>>>>>=====作为前缀的部分+,或者反过来?

笔记:

  • 最好的事情就是对标准输出流进行类似差异的输出,因为我可以将其输入到另一个工具中.但是与git的diff相关工具有更多搭配的东西也是相关的.如果我可以合理地避免它,我宁愿不必下载一些自定义实用程序/应用程序.
  • HEAD和其他提交版本的并排显示也很有用

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

标签 统计

git ×6

diff ×3

command-line ×2

difftool ×2

github ×2

colors ×1

diffmerge ×1

git-diff ×1

git-difftool ×1

meld ×1

sdiff ×1

unix ×1