git 可以在回购文件和外部(非回购)文件之间进行区分吗?
Can git do a diff between a repo file and an external (non-repo) file?
我需要在 master~2
中的 myfile
版本与存储库本身外部存在的 myfile
副本之间进行区分(比如 D:\folder\myfile
).
git-diff
under --no-index
中的措辞是:
git diff --no-index [--options] [--] […]
This form is to compare the given two paths on the filesystem. You can omit the --no-index option when running the command in a working
tree controlled by Git and at least one of the paths points outside
the working tree
措辞"at least one"似乎暗示可以在一个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>
实现这种比较的最简单方法是什么?
在不使用 git-diff
的情况下,我找到了一种间接的方法来实现这一点 - this blog post 中给出的方法,只需使用外部文件作为原始文件 "current file",并确保在执行 git show
之前将 repo 目录作为当前目录。
涉及的步骤是:
- 以通常的方式vim打开外部非回购文件
- 做一个
:vsp new
垂直分割一个新的(空白)window
:cd
到 git 存储库的工作目录
:read !git show master~2:myfile
读取 myfile 的内容,因为它是 2 次提交前的内容
setf yourfiletypehere
语法高亮(可选)
:diffthis
在一个 window 中,然后切换到另一个 window 和 运行 :diffthis
再次,你有你的 diff
我需要在 master~2
中的 myfile
版本与存储库本身外部存在的 myfile
副本之间进行区分(比如 D:\folder\myfile
).
git-diff
under --no-index
中的措辞是:
git diff --no-index [--options] [--] […]
This form is to compare the given two paths on the filesystem. You can omit the --no-index option when running the command in a working tree controlled by Git and at least one of the paths points outside the working tree
措辞"at least one"似乎暗示可以在一个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>
实现这种比较的最简单方法是什么?
在不使用 git-diff
的情况下,我找到了一种间接的方法来实现这一点 - this blog post 中给出的方法,只需使用外部文件作为原始文件 "current file",并确保在执行 git show
之前将 repo 目录作为当前目录。
涉及的步骤是:
- 以通常的方式vim打开外部非回购文件
- 做一个
:vsp new
垂直分割一个新的(空白)window :cd
到 git 存储库的工作目录:read !git show master~2:myfile
读取 myfile 的内容,因为它是 2 次提交前的内容setf yourfiletypehere
语法高亮(可选):diffthis
在一个 window 中,然后切换到另一个 window 和 运行:diffthis
再次,你有你的 diff