是否有可能检查已在git中移动的文件的先前版本?
例如:
revison 1: file.txt(new file)
revison 2: file.txt(modify)
revison 3: file.txt(modify)
revison 4: move file.txt to doc/file.txt
现在master是在revison 4,我想在修订版2中获取快照 然后我输入:
cd doc; git checkout HEAD^2 file.txt
我得到了:
error: pathspec 'HEAD^2' did not match any file(s) known to git.
答案 0 :(得分:1)
此时文件doc/file.txt
不存在,而HEAD^2
表示第二个父项,而不是父项的父项,因此您需要这样的内容:
git checkout HEAD~2 -- file.txt
git mv file.txt doc/file.txt
甚至更容易:
git show HEAD~2:file.txt > doc/file.txt
答案 1 :(得分:0)
您应该使用HEAD~2
,而不是HEAD^2
- 它适用于我。
语法HEAD^2
仅在HEAD是合并提交时才相关,并且意味着获得第二个父提交(不常见!)。
语法HEAD~2
用于指定当前提交的父级的父级。
答案 2 :(得分:0)
尝试git checkout HEAD^^^ file.txt
或git checkout HEAD~2 file.txt
此外,尽可能尝试使用分支名称。如果您以后需要查看reflog,它会有所帮助。
您还可以使用git log
来获取所需提交的哈希值。让我们说它的3c142。
然后您可以使用git checkout 3c142 file.txt