如何使用已删除但尚未提交的git查看文件?请注意,我不想恢复它,只需查看它。
[Michael@devserver test]$ git status
# On branch master
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: file_delete
# modified: file_edit
#
no changes added to commit (use "git add" and/or "git commit -a")
[Michael@devserver test]$ git diff file_edit
diff --git a/file_edit b/file_edit
index c8c019f..c9287d1 100644
--- a/file_edit
+++ b/file_edit
@@ -1,2 +1,2 @@
Hello
-Goodby
+later
[Michael@devserver test]$ git diff file_delete
fatal: ambiguous argument 'file_delete': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
[Michael@devserver test]$
答案 0 :(得分:3)
按照指示行事:
Use '--' to separate paths from revisions
git diff -- file_delete
应该做你想做的事。
答案 1 :(得分:3)
该消息并非尽可能清晰,但确实暗示了解决方案:
git diff -- file_delete
--
告诉git所有剩余的参数都是pathspecs,即使它们可能与工作树中的任何内容都不匹配。老实说,我认为git在这里有点奇怪,但试着解释一下......
一般情况下,如果你有
git diff xyzzy
没有上下文,您不知道xyzzy
是否应该与整个工作树进行比较的分支(或标记),或者是否应将工作树与HEAD进行比较的文件名。
如果在工作树中有一个名为xyzzy
的分支且没有名为xyzzy
的文件,那么git假定您要将该分支与工作树进行比较。
如果工作树中有一个名为xyzzy
的文件而没有名为xyzzy
的分支,那么git假定您要将该文件的HEAD版本与工作树中的文件进行比较。
如果有一个名为xyzzy
的分支,并且在工作树中有一个名为xyzzy
的文件,那么git说这是不明确的,并希望你澄清一下。您可以通过在任何文件名(或其他路径规范)之前放置--
来澄清。
有点奇怪的情况:如果没有名为xyzzy
的分支,并且工作树中也没有名为xyzzy
的文件,那么git说这是不明确的。我认为这很奇怪的原因是,git 可以错误地假设你的意思是一个文件并且它通常就是你的意思,特别是如果至少在HEAD中有这样的文件。但是除非文件实际上在工作树中,否则git不想做出这个假设。所以它说这是模棱两可的。
如果它不明确,你可以在任何文件名/路径规范之前加上--
来澄清。
一般来说,git diff文档(https://git-scm.com/docs/git-diff)告诉我们--
分隔符。不过,我真的不记得是否/在何处调出了这种特殊的细微差别。我最好的建议是关注git的错误输出;它比大多数程序更明确地表达了它认为你可能需要做些什么来解决问题,即使这个消息可能不能完全明确它的确正在预测你需要做什么。