是否可以调用git log filepath
并查看文件是否在提交中,但无法使用git checkout filepath
将其检出?
错误:pathspec'filepath'与git已知的任何文件都不匹配。
我在同一棵工作树上。
编辑:添加了包含git log filepath
,git diff sha1id
和git 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.
答案 0 :(得分:2)
您只能使用checkout从当前提交中获取当前版本。如果当前提交中不存在该文件,则不会获得该文件。要查看该文件,请签出提交:
git checkout <sha1id>
您可以从git log
获取sha1id。
如果您只需要该文件,并在当前工作树中替换它的版本,请使用
git checkout <sha1id> path
代替。
答案 1 :(得分: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
输出中看来,相关文件似乎是在 next 提交b2df50ecd14472a1c38d2cd2269898d4f3ab9604
中提交的,因此代替git checkout dc9ee9 889e2e74-6ec3-448b-ad35-feb2187d9d2b
,您应该尝试这样做(还要注意--
语法将提交与路径名分开:
git checkout b2df50 -- 889e2e74-6ec3-448b-ad35-feb2187d9d2b
另外,如果b2df50
是您当前的HEAD
,则可以改为执行此操作:
git reset --hard HEAD -- 889e2e74-6ec3-448b-ad35-feb2187d9d2b