git更改路径后将文件还原为上一次提交

时间:2018-10-11 04:59:46

标签: git

我有一个文件./new-path/file.java,该文件受Git控制。在较早的提交(<SHA-1>)中,其路径为./older-path。现在,我要还原其在<SHA-1>中提交的旧内容。

我可以通过执行git checkout <SHA-1> -- ./older-path/file.java还原该文件,然后将其内容复制到./new-path/file.java。但是我必须对多个较旧的提交执行上述步骤,因此不适合这种方式。如何通过Git 直接完成?

1 个答案:

答案 0 :(得分:3)

您不能,但这实际上不是问题。

如果您要求Git按名称将其注销 ,您将获得旧名称。

如果您要求Git向您显示内容,请使用旧名称执行此操作,然后该内容进入标准输出,您可以重定向该输出,但使用Git。因此,您可以直接执行此操作,但不能直接通过Git 进行操作:

git show <hash>:./older-path/file.java > new-path/file.java

请注意,git show将不应用过滤器(包括行尾过滤)。添加--textconv应该引起它进行这种转换,但是在我的实验中(使用Git 2.19.0)这不起作用。一种替代方法是使用git cat-file --filters <hash>:<path>,它似乎确实有效。但是,使用的过滤器是在 current .gitattributes中定义的过滤器,而不是与指定提交关联的.gitattributes

相关问题