1

是否可以调用git log filepath并查看文件是否在提交中,但无法使用 来检查它git checkout filepath

错误:pathspec 'filepath' 与 git 已知的任何文件都不匹配。

我在同一棵工作树中。

编辑:添加了包含git log filepath,git diff sha1idgit checkout filepath.

> git log 889e2e74-6ec3-448b-ad35-feb2187d9d2b

commit b2df50ecd14472a1c38d2cd2269898d4f3ab9604
Author: l
Date:   Tue Apr 16 15:20:39 2013 +0100

    Committed 889e2e74-6ec3-448b-ad35-feb2187d9d2b

commit dc9ee9433fd87c9031e7569ab451d2c02343e146
Author: l
Date:   Tue Apr 16 15:20:38 2013 +0100

    Committed 3f743855-ec1b-4e76-808a-eafc6042c47a

commit 79eed05ab387f0f6aec266df109d7cda26789c83
Author: f
Date:   Tue Apr 16 15:19:58 2013 +0100

    Committed 889e2e74-6ec3-448b-ad35-feb2187d9d2b

git diff dc9ee9
diff --git a/3f743855-ec1b-4e76-808a-eafc6042c47a b/3f743855-ec1b-4e76-808a-eafc6042c47a
index 612e91c..619ac4f 100644
Binary files a/3f743855-ec1b-4e76-808a-eafc6042c47a and b/3f743855-ec1b-4e76-808a-eafc6042c47a differ
diff --git a/889e2e74-6ec3-448b-ad35-feb2187d9d2b b/889e2e74-6ec3-448b-ad35-feb2187d9d2b
new file mode 100644
index 0000000..0ae16b3
Binary files /dev/null and b/889e2e74-6ec3-448b-ad35-feb2187d9d2b differ
diff --git a/a007422b-0b9d-4773-aba7-54b6dd2b4ceb b/a007422b-0b9d-4773-aba7-54b6dd2b4ceb
index 5df614e..831cb07 100644
Binary files a/a007422b-0b9d-4773-aba7-54b6dd2b4ceb and b/a007422b-0b9d-4773-aba7-54b6dd2b4ceb differ


git checkout dc9ee9 ./889e2e74-6ec3-448b-ad35-feb2187d9d2b
error: pathspec '889e2e74-6ec3-448b-ad35-feb2187d9d2b' did not match any file(s) known to git.
4

2 回答 2

2

您只能使用 checkout 从当前提交中获取当前版本。如果该文件在当前提交中不存在,您将不会得到它。要查看文件,请签出提交:

git checkout <sha1id>

您可以从中获取 sha1id git log

如果您只想要该文件,并在当前工作树中替换它的版本,请使用

git checkout <sha1id> path

反而。

于 2013-04-16T15:23:03.490 回答
2

git diff dc9ee9将带有 SHA-1 的提交内容dc9ee9与您当前的工作目录进行比较。您的特定文件的差异结果:

diff --git a/889e2e74-6ec3-448b-ad35-feb2187d9d2b b/889e2e74-6ec3-448b-ad35-feb2187d9d2b
new file mode 100644
index 0000000..0ae16b3
Binary files /dev/null and b/889e2e74-6ec3-448b-ad35-feb2187d9d2b differ

表示该文件在 commit 中不存在dc9ee9,但在您当前的工作目录中存在。因此,从该提交中检查该文件将失败。

事实上,从您的git log输出来看,有问题的文件似乎是在下一次提交中提交的b2df50ecd14472a1c38d2cd2269898d4f3ab9604,因此git checkout dc9ee9 889e2e74-6ec3-448b-ad35-feb2187d9d2b,您应该尝试这个而不是 (另请注意--将提交与路径名分开的语法:

git checkout b2df50 -- 889e2e74-6ec3-448b-ad35-feb2187d9d2b

另外,如果b2df50是你的 current HEAD,你可以这样做:

git reset --hard HEAD -- 889e2e74-6ec3-448b-ad35-feb2187d9d2b
于 2013-04-16T21:25:12.523 回答