我试图找出如何从在给定提交中修改的Git存储库中获取文件。我想将'delta'存储在一个单独的文件夹中。我对Git很新,所以这可能是一个相对基本的问题,但仍然是..
我认为我应该先在版本中获取存储库:
git reset --hard a02ea0d
然后列出提交的内容:
git show --pretty="" --name-only a02ea0d
但那又怎么样?我可以将这个连接在一起以获得一些额外的文件夹,结果只是版本中的实际文件吗?
答案 0 :(得分:3)
git checkout <SHA of old commit>
git diff --name-only <SHA of old commit> <SHA of newer commit> | xargs git checkout-index -f --prefix='C:\changes\'
git checkout <SHA of old commit>
会导致以下git checkout-index
从旧提交中复制文件。
git diff --name-only <SHA of old commit> <SHA of newer commit>
将返回旧提交和新提交之间已更改的所有文件的列表。
xargs git checkout-index -f --prefix='C:\changes\'
将获取第一个命令返回的所有文件(通过使用管道),并将每行用作以下git checkout-index
命令的参数。
此示例中使用的环境是使用Git Bash运行Windows 10的计算机。
git init
abc
cba
git add
之后的所有文件git commit
他们git add
之后的所有文件git commit
他们git log
并找到第一次和第二次提交的SHA1 命令中指定的文件夹现在将包含在两个提交的提交之间更改的所有文件,如下所示。
abc
cba