【发布时间】:2018-06-16 15:18:50
【问题描述】:
我需要git diff 功能来处理我在任何存储库之外拥有的 2 个文件。有没有办法做到这一点? git diff --file1 /path/file1.txt --file2 /path/file2.txt 之类的东西如果不是,有什么替代解决方案?
【问题讨论】:
标签: git comparison diff git-diff
我需要git diff 功能来处理我在任何存储库之外拥有的 2 个文件。有没有办法做到这一点? git diff --file1 /path/file1.txt --file2 /path/file2.txt 之类的东西如果不是,有什么替代解决方案?
【问题讨论】:
标签: git comparison diff git-diff
答案就在the git diff documentation(虽然我承认很容易错过):
git diff [
] --no-index [--] 这种形式是比较文件系统上给定的两个路径。在 Git 控制的工作树中运行命令且至少有一个路径指向工作树之外时,或者在 Git 控制的工作树之外运行命令时,您可以省略
--no-index选项。
您的案例可能属于“--no-index 是可选的”类别,但即使它是可选的,您仍然可以使用它,所以:
git diff --no-index /path/file1.txt /path/file2.txt
将使用 Git 的差异。
【讨论】:
git diff. 我根本不使用 diff 但我发现这更有用,因为它为您提供颜色输出,您也可以在 Windows 上使用类似的东西。
--no-index。我在上面要说明的一点是,您可以始终将它用于这种情况。如果你不需要它,很好,但如果你确实需要它来处理一些罕见的情况,并且你不使用它,Git 会抱怨你。因此,您可能想要创建一个别名或提供标志的东西,这样您就不必担心它。
如果这两个文件确实在任何 Git 存储库之外,那么 Git 实际上对这些文件一无所知,因此 git diff 将无法工作。但是,常规的 Linux diff 命令应该可以工作。所以不要这样做:
git diff /path/to/file1.txt /path/to/file2.txt
这样做:
diff /path/to/file1.txt /path/to/file2.txt
【讨论】:
diff 不是git diff,所以这个答案没有帮助。
2 files that I have outside of any repository ...如果我没看错的话,这个问题甚至与 Git 无关。