在git diff中,区分删除和移动

在git diff中,区分删除和移动,git,string-matching,git-diff,Git,String Matching,Git Diff,(我发现了。它没有提到Git。还有一个名为的工具,但它是特定于代码的,而不是纯文本的(也不支持Git)。) 我将知识库保存为一组纯标记(纯文本)文件,并在git中跟踪对它的更改 假设git diff显示缺少的一大块文本。可能是我删除了它,也可能是我移动了它(在同一个文件中,或移动到另一个文件中) 我希望我能有一些简单的方法知道是哪一种。目前,我在整个知识库中对删除的子字符串进行grep。如果我找不到,我会再找几个。我可能应该模糊grep——但即使这样,它也可能不起作用,因为可能我移动了大部分文本

(我发现了。它没有提到Git。还有一个名为的工具,但它是特定于代码的,而不是纯文本的(也不支持Git)。)

我将知识库保存为一组纯标记(纯文本)文件,并在git中跟踪对它的更改

假设git diff显示缺少的一大块文本。可能是我删除了它,也可能是我移动了它(在同一个文件中,或移动到另一个文件中)

我希望我能有一些简单的方法知道是哪一种。目前,我在整个知识库中对删除的子字符串进行grep。如果我找不到,我会再找几个。我可能应该模糊grep——但即使这样,它也可能不起作用,因为可能我移动了大部分文本,但没有移动我模糊grep的特定子字符串

最好是一个git感知工具,它可以在删除和插入之间寻找模糊匹配。理想情况下,可以忽略空白


这样的事情存在吗?或者,如果不是,它是否可以在不需要大量工作的情况下拼凑起来?

对于单个大块的代码,我不知道有什么方法可以满足您的要求。(对于整个文件,git确实会计算一个“相似性”值,如果它在一个路径上看到删除,在另一个路径上看到一个新文件,默认情况下,如果该值足够高(根据可配置的阈值),那么它会将该文件报告为“重命名”。但这对您的用例没有帮助。)


<> P>如果你经常需要知道这个事实之后,我会考虑记录在提交消息或提交注释中所做的事情。(“将XXXX从/file1移到/file2”或“将YYYY从/file3删除”)

Git的
Git-bull
实际上在某种程度上解决了这个问题。主要问题是,您必须查看代码移动到的文件,然后它会找到代码来自的文件。它(目前)没有能力以另一种方式工作。