是否有适用于带有GUI的Mac OS X的二进制差异工具?有大量基于文本的差异工具,但我需要比较两个二进制文件.基本上两个十六进制编辑器与十二进制/十六进制视图相邻(二进制文件是自定义文件格式,所以不是图像或任何具有更专业的差异工具的东西)
我继承了最初存储在CVS中的项目以及所有修订版.我做了很多编辑,我试图比较我在原始目录中所做的所有更改,关于添加的新文件与旧文件.
是否有某种实用的hg/git,我可以做一个树差异,或者那种性质的东西?那么说,新添加的文件,删除的文件之间有标记,我要求的太多了吗?
我有两个文件A1和A2(未排序).A1是A2的先前版本,并且已将一些行添加到A2.如何获取添加到A2的新行?
注意:我只想添加新行并且不想要在A1中但在A2中删除的行.当我这样做时diff A1 A2,我会得到添加和删除但我只想添加.
请建议一种方法来做到这一点.
我正在比较两个文本文件,我得到以下结果
diff file1 file2 | grep 12345678
> 12345678
< 12345678
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,两个文件中都存在相同的字符串,并且两个文件都已对其进行排序sort.
线路结尾必须妨碍这里(windows vs unix).
有没有办法diff在unix上忽略行结尾?
我需要处理大文件,必须找到两者之间的差异.我不需要不同的位,但需要差异的数量.
要找到我想出的不同行数
diff --suppress-common-lines --speed-large-files -y File1 File2 | wc -l
Run Code Online (Sandbox Code Playgroud)
它有效,但还有更好的方法吗?
以及如何计算差异的确切数量(使用标准工具,如bash,diff,awk,sed一些旧版本的perl)?
在.git/config中我尝试过:
[diff]
patience = true
Run Code Online (Sandbox Code Playgroud)
但没有运气
我必须这样做:
git diff --patience
git show --patience HEAD
Run Code Online (Sandbox Code Playgroud)
等等,每一次?
是否有emacs命令来显示缓冲区与其文件之间的区别?
例如,我已经对缓冲区进行了一些编辑,忘记了它们是什么,现在我需要将缓冲区保存到其文件中,但是想要先查看我实际更改的内容.
该diff程序以其各种形式,相当擅长计算两个文本文件之间的差异,并且比完整地显示两个文件更紧凑地表达它.它将差异显示为插入和删除的行块的序列(或在某些情况下更改的行,但这相当于删除后插入).patch源控制系统使用相同或非常类似的程序或算法来最小化表示同一文件的两个版本之间的差异所需的存储.这里和这里讨论算法.
但是当文件块在文件中移动时,它会掉下来.
假设您有以下两个文件,a.txt并且b.txt(假设它们都是数百行而不是6行):
a.txt b.txt
----- -----
1 4
2 5
3 6
4 1
5 2
6 3
Run Code Online (Sandbox Code Playgroud)
diff a.txt b.txt 显示这个:
$ diff a.txt b.txt
1,3d0
< 1
< 2
< 3
6a4,6
> 1
> 2
> 3
Run Code Online (Sandbox Code Playgroud)
从a.txtto 更改b.txt可以表示为"取前三行并将它们移动到最后",但是diff显示移动的行块的完整内容两次,错过了非常简短地描述这个大变化的机会.
请注意,diff -e仅显示一次文本块,但这是因为它不显示已删除行的内容.
是否存在diff算法的变体(a)保留diff表示插入和删除的能力,以及(b)有效地表示移动的文本块而不必显示其全部内容?
我需要在Java字符串之间执行Diffs.我希望能够使用原始字符串和diff版本重建字符串.有没有人用Java做过这个?你用什么图书馆?
String a1; // This can be a long text
String a2; // ej. above text with spelling corrections
String a3; // ej. above text with spelling corrections and an additional sentence
Diff diff = new Diff();
String differences_a1_a2 = Diff.getDifferences(a,changed_a);
String differences_a2_a3 = Diff.getDifferences(a,changed_a);
String[] diffs = new String[]{a,differences_a1_a2,differences_a2_a3};
String new_a3 = Diff.build(diffs);
a3.equals(new_a3); // this is true
Run Code Online (Sandbox Code Playgroud) 每次运行git diff时,对于我所做的每一个更改,我都会得到某种带数字的标题,例如:
@@ -169,14 +167,12 @@ function Browser(window, document, body, XHR, $log) {.....
Run Code Online (Sandbox Code Playgroud)
我想知道这四个数字是什么意思?我猜-169意味着后面的这段特殊代码最初是在第169行,但现在是167?14和12是什么意思?