是否有一个 git 命令可以将文件从提交历史复制到工作目录而不也复制到暂存区? checkout 副本到两者。也许没有足够常见的用例来保证命令,我问更多是出于好奇,而不是因为我有特定的应用程序。
最佳答案
Is there a git command that copies files from the commit history to the working directory without also copying to the staging area?
不——但你可以合成一个。 git show
和 git cat-file -p
都可以将 blob 对象复制到标准输出。因此,通过一次写入提交哈希和两次路径名——一次查找 blob 哈希 ID,然后再次重定向命令的输出——你可以得到你想要的:
git cat-file -p $rev:$path > $path
或:
git show $rev:$path > $path
对每个目录中的每个文件重复一次,你已经足够接近了——有一个警告:默认情况下,这些命令不应用行尾和输出过滤器转换(根据 .gitattributes
和各种 autcrlf 和 EOL 修饰符)。
如果你添加--textconv
,你可以说服git cat-file
应用文本转换。这应该也适用于 git show
但我还没有尝试过。
关于Git:从提交复制到工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45536629/