`git show`不工作:fatal:路径[mypath]存在于磁盘上,但不在[mybranch]中

5n0oy7gb  于 2023-06-04  发布在  Git
关注(0)|答案(5)|浏览(451)

问题

我尝试查看位于名为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我做错了什么?

ghg1uchk

ghg1uchk1#

FYI,当我不小心使用文件的 * 完整路径 * 时,我得到了同样的错误:

git show rev:/path/to/repo-root/folder/my-file

但是你需要使用来自repo根目录的 * 相对路径 *:

git show rev:folder/my-file
5vf7fwbs

5vf7fwbs2#

您要查找的文件似乎不存在于wip中的任何提交中。git show只显示在您提供的refspec中具有某些历史记录的跟踪对象(在本例中为wipcd14704)。要获得预期的行为,您需要提交该文件。

tv6aics1

tv6aics13#

我也经历过同样的事情。问题是我在文件路径中使用了反斜杠。所以我把它们换成了常规的斜线,它开始工作得很好。非常混乱。

wi3ka0sx

wi3ka0sx4#

至少在Windows上,如果你输入的文件路径不完全正确(字母大小写),你会得到这个消息。
所以如果文件名是FileName,你说git show wip:filename,你会看到这个消息,因为文件名在底层文件系统(NTFS)的比较术语中匹配(不区分大小写,除非在NTFS选项中显式启用了大小写敏感),但在Git的术语中不匹配,因为Git是大小写敏感的。

noj0wjuj

noj0wjuj5#

根据man git-show,这是git-show的语法。
git show [<options>] [<object>...]
<object>
要显示的对象的名称(默认为HEAD)。
因此,如果没有任何选项,它将只显示HEAD提交中的文件。
你可以在提交中检查文件

git show wip --name-only

在提交中不会搜索任何文件。
若要在文件的最新提交中显示该文件,
首先,在分支中找到包含该文件的提交。

git log -n 1 <ref> <file>
# e.g
# git log -n 1 wip local-config.php

结果将是最新提交包含文件的最新版本。

# example
commit 386389b0009e5750c1b27f690d97c1eec8b5fa44
Author: Author_name <email@email.com>
Date:   Thu Jun 1 07:12:17 2023 +0900
<commit message>

然后,使用git-show获取文件内容

git show 386389b0009e5750c1b27f690d97c1eec8b5fa44:local-config.php

这将打印其最新提交的文件的内容。因为git-show打印提交中的文件内容,所以它不会打印未提交的内容。

相关问题