这个答案很适合在两个检查到git的文件之间看到视觉差异: 如何使用visual diff程序查看'git diff'输出?
但是,我希望看到两个分支之间的视觉差异.到目前为止,我最好的选择似乎是:
git diff --name-status master dev
Run Code Online (Sandbox Code Playgroud)
这不是很有用,也不是很直观.
那里有什么更好的吗?
以下命令之间有什么区别?:
git diff foo master # a
git diff foo..master # b
git diff foo...master # c
Run Code Online (Sandbox Code Playgroud)
diff手册谈到它:
比较分支机构
Run Code Online (Sandbox Code Playgroud)$ git diff topic master <1> $ git diff topic..master <2> $ git diff topic...master <3>
- 主题提示与主分支之间的更改.
- 与上述相同.
- 自主题分支启动以来主分支上发生的更改.
但对我来说并不完全清楚.
我们的源代码库中有很多电子表格(xls).这些通常使用gnumeric或openoffice.org进行编辑,主要用于使用dbUnit填充数据库进行单元测试.在我知道的xls文件上没有简单的方法来做差异,这使得合并非常繁琐且容易出错.
我试图将电子表格转换为xml并进行常规差异,但它确实感觉它应该是最后的手段.
我想像git处理文本文件一样执行diffing(和合并).我怎么做,例如发行时git diff?
我有一系列的我想要为哪知道普通的线,而不是它们之间的不同线路的文本文件.命令行unix或windows很好.
FOO:
linux-vdso.so.1 => (0x00007fffccffe000)
libvlc.so.2 => /usr/lib/libvlc.so.2 (0x00007f0dc4b0b000)
libvlccore.so.0 => /usr/lib/libvlccore.so.0 (0x00007f0dc483f000)
libc.so.6 => /lib/libc.so.6 (0x00007f0dc44cd000)
Run Code Online (Sandbox Code Playgroud)
酒吧:
libkdeui.so.5 => /usr/lib/libkdeui.so.5 (0x00007f716ae22000)
libkio.so.5 => /usr/lib/libkio.so.5 (0x00007f716a96d000)
linux-vdso.so.1 => (0x00007fffccffe000)
Run Code Online (Sandbox Code Playgroud)
所以,鉴于这两个文件高于所需实用程序的输出将类似于file1:line_number, file2:line_number == matching text (只是一个建议,我真的不在乎语法是什么):
foo:1, bar:3 == linux-vdso.so.1 => (0x00007fffccffe000)
Run Code Online (Sandbox Code Playgroud)
谢谢.
我一直看起来疯狂的解释一个有效的差异算法.
我得到的最接近的是RFC 3284的链接(来自几个Eric Sink博客文章),它以完全可以理解的术语描述了存储diff结果的数据格式.但是,它并没有提到程序如何在进行差异时达到这些结果.
我试图从个人的好奇心来研究这个问题,因为我确信在实现差异算法时必须进行权衡,当你看到差异并且想知道"为什么差异程序选择这个作为一个变化时,这很清楚而不是那个?"......
在哪里可以找到最终输出VCDIFF的高效算法的描述?
顺便说一下,如果您碰巧找到了SourceGear的DiffMerge使用的实际算法的描述,那就更好了.
注意:最长的公共子序列似乎不是VCDIFF使用的算法,考虑到它们使用的数据格式,它们看起来更聪明.
如何获得两个图像之间的差异?我有原始图像.有人写过原始图像的精确副本.现在,我需要比较原始图像和书面图像,并提取图像格式的书写.
示例:我有一张房子的照片.有人拿了一份副本,在副本上写了"你好!".我想以某种方式比较两张照片,删除房子,并留下"Hello!"字样的图像.
ImageMagick有可能吗?我知道有办法获得图像之间的统计差异,但这不是我想要的.
什么是最简单的方法(在Ubuntu Linux上使用图形工具或命令行)来知道两个二进制文件是否相同(时间戳除外)?我不需要实际提取差异.我只需要知道它们是否相同.
我已经阅读了一些关于Git文件权限的问题,我仍然有点困惑.我在GitHub上有一个来自另一个的回购.合并后,它们应该是相同的.然而:
$ git diff --summary origin/epsilon master/epsilon
mode change 100644 => 100755 ants/dist/sample_bots/csharp/compile.sh
mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/MyBot.coffee
mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/ants.coffee
mode change 100644 => 100755 ants/util/block_test.sh
mode change 100644 => 100755 manager/mass_skill_update.py
mode change 100644 => 100755 worker/jailguard.py
mode change 100644 => 100755 worker/release_stale_jails.py
mode change 100644 => 100755 worker/start_worker.sh
Run Code Online (Sandbox Code Playgroud)
我已经尝试更改文件权限,但它不会改变差异结果.
有两个名为"a.txt"和"b.txt"的文件都有一个单词列表.现在我想检查"a.txt"中哪些单词是额外的,而不是"b.txt".
我需要一个有效的算法,因为我需要比较两个词典.
我已经看过所有类似的问题但是我已经仔细检查了一些奇怪的东西肯定会发生.
在一台服务器(Solaris with git 1.8.1)上,我克隆了git存储库,然后将.git文件夹复制到现有的实时文件中.这很完美,我可以跑
git status
Run Code Online (Sandbox Code Playgroud)
然后
git diff [filename]
Run Code Online (Sandbox Code Playgroud)
检查任何不同的文件.
在另一台服务器(Solaris with git 1.7.6)上,我做的完全一样
git diff [filename]
Run Code Online (Sandbox Code Playgroud)
即使文件的内容肯定不同,也不显示任何内容.我还测试了添加一个新文件,然后进行编辑.同样的问题,git status将文件显示为已更改但未git diff显示任何内容.如果我下载更改的文件并在本地运行diff,那么我得到diff输出.