问题
我尝试查看位于名为wip
的分支中的文件的内容,如下所示:
git show wip:local-config.php
但是,我收到以下错误:
fatal: Path 'local-config.php' exists on disk, but not in 'wip'.
我所尝试的
我试着修改路径,但失败了:
git show wip:./local-config.php
我没有使用另一个分支,而是尝试引用同一个分支的前一个提交,如下所示:
git show cd14704:local-config.php
这导致了这个错误:
fatal: Path 'local-config.php' exists on disk, but not in 'cd14704'.
最后,当我尝试显示当前的local-config.php
时,我根本没有得到任何输出:
git show local-config.php
文档
根据手册,这是可能的:https://www.kernel.org/pub/software/scm/git/docs/git-show.html我做错了什么?
5条答案
按热度按时间ghg1uchk1#
FYI,当我不小心使用文件的 * 完整路径 * 时,我得到了同样的错误:
但是你需要使用来自repo根目录的 * 相对路径 *:
5vf7fwbs2#
您要查找的文件似乎不存在于
wip
中的任何提交中。git show
只显示在您提供的refspec中具有某些历史记录的跟踪对象(在本例中为wip
或cd14704
)。要获得预期的行为,您需要提交该文件。tv6aics13#
我也经历过同样的事情。问题是我在文件路径中使用了反斜杠。所以我把它们换成了常规的斜线,它开始工作得很好。非常混乱。
wi3ka0sx4#
至少在Windows上,如果你输入的文件路径不完全正确(字母大小写),你会得到这个消息。
所以如果文件名是
FileName
,你说git show wip:filename
,你会看到这个消息,因为文件名在底层文件系统(NTFS)的比较术语中匹配(不区分大小写,除非在NTFS选项中显式启用了大小写敏感),但在Git的术语中不匹配,因为Git是大小写敏感的。noj0wjuj5#
根据
man git-show
,这是git-show
的语法。git show [<options>] [<object>...]
<object>
是要显示的对象的名称(默认为HEAD)。
因此,如果没有任何选项,它将只显示HEAD提交中的文件。
你可以在提交中检查文件
在提交中不会搜索任何文件。
若要在文件的最新提交中显示该文件,
首先,在分支中找到包含该文件的提交。
结果将是最新提交包含文件的最新版本。
然后,使用
git-show
获取文件内容这将打印其最新提交的文件的内容。因为
git-show
打印提交中的文件内容,所以它不会打印未提交的内容。