Git:从提交复制到工作目录

标签 git

是否有一个 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 showgit 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/

相关文章:

git - 为什么我在本地 VM 上登录时,在共享文件夹中会得到不同的 git 状态?

java - 从 Java 代码执行 git rebase 交互

git - 如何在 git 上恢复旧提交中的特定文件

bash - git !alias 可以在 bash 和 Powershell 中使用

linux - Git 忽略并更改历史记录(在 Windows 上)

带有更新的 Git 工作叉

Git 远程分支跟踪 - 我做得对吗?

git - gradle 对另一个项目的三角依赖

linux - 如何从我的程序中启动 vim 并捕获书面输出,例如 Git commit

git - 如何在远程 repo 上使用 "git show"?