我在Windows上使用git。
说我想签出,而不是提交fe4fd(缩写为使示例更简短),而是专门从提交fe4fd提交foo.html。
根据我应该可以使用的文档
git checkout fe4fd foo.html
,那应该可以。也许
git checkout fe4fd -- foo.html
因为破折号似乎是可选的。
无论如何。我在正确的目录中。
如果我执行git status foo.html
或git reflog foo.html
等操作,一切似乎都很正常,并且知道文件在那里。
一切看起来都很正常
我可以这样做:
git checkout fe4fd
效果很好
我可以这样做:
git checkout foo.html
但我做不到
git checkout fe4fd foo.html
因为每次我得到
错误:pathspec'foo.html'与git已知的任何文件都不匹配。
我尝试过
C:/whatever
到foo.html
的完整路径./foo.html
之类的本地路径../myrepo/foo.html
我想念什么?
TIA。
更新:https://stackoverflow.com/users/6330106/elpiekay吸引了我。 ElpieKay,如果您发表评论作为答案,我会标记为正确。
答案是,在提交时,文件不在该路径,因为在该提交后已重命名了父文件夹。>
我通过阅读git log
的文档并了解到除非包含--follow
标志,否则它不会通过路径更改来跟踪文件的历史记录,从而弄清楚了这一点。
我按照ElpieKay的建议做了,文件显然不是提交的一部分。错了,因为我知道是错的。但是我尝试签出的文件是bar/foo.html
,并且在我正在查找的签出时该路径不存在。结帐时位于baz/foo.html
。
为了证明这一点,我创建了一个新的baz/
文件夹,cd
指向该文件夹,然后从提交中检出该文件。这行得通。