git可以在repo文件和外部(非repo)文件之间做差异吗?

时间:2015-06-04 17:13:58

标签: git version-control diff git-diff

我需要在myfile中的master~2版本和存储库本身之外的myfile版本之间进行区别(比如D:\folder\myfile) 。

git-diff--no-index下的措辞说:

  

git diff --no-index [--options] [ - ] [...]

     

此表单用于比较文件系统上给定的两个路径。在工作中运行命令时,可以省略--no-index选项   由Git控制的树和至少有一条路径指向外部   工作树

措辞“至少一个”似乎意味着可以在一个repo文件和一个非repo文件之间进行比较,但实际上:

$ git diff master~2:myfile D:/folder/myfile  
error: Could not access: 'master~2:myfile'

$ git diff master~2:myfile -- D:/folder/myfile  
fatal: D:/folder/myfile: 'D:/folder/myfile' is outside repository  

$ git diff --no-index master~2:myfile -- D:/folder/myfile  
usage: git diff --no-index <path> <path>

实现这种比较的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

在不使用git-diff的情况下,我找到了实现此目的的间接方式 - this blog post中给出的方法,只使用外部文件作为原始&#34;当前文件&#34;,并制作在执行git show之前,一定要将repo目录作为current-directory。

所涉及的步骤是:

  1. 以通常的方式在vim中打开外部非repo文件
  2. 执行:vsp new垂直拆分新(空白)窗口
  3. :cd到git存储库的工作目录
  4. :read !git show master~2:myfile读取myfile的内容,因为它是2次提交前
  5. setf yourfiletypehere用于语法突出显示(可选)
  6. :diffthis在一个窗口中,然后切换到另一个窗口再次运行:diffthis,你就有了你的差异