Git 如何在特定提交时从存储库浅层克隆所有文件?

Git 如何在特定提交时从存储库浅层克隆所有文件?,git,Git,我试图在特定提交时从存储库中提取所有文件。我希望将这些文件提取到一个备用位置,而不影响现有存储库的头部 这是我正在运行的获取这些文件的命令 git --git-dir="C:\temp\repository" --work-tree="C:\temp\files" checkout -f "e2f4b8cf188c87db6a11c6f421b06f701dd6b07b" 上面的命令用于提取我想要的文件,但我的问题是这样会使我的存储库有一个分离的头部 提取这些文件的最佳方法是什么 可能重复:

我试图在特定提交时从存储库中提取所有文件。我希望将这些文件提取到一个备用位置,而不影响现有存储库的头部

这是我正在运行的获取这些文件的命令

git --git-dir="C:\temp\repository" --work-tree="C:\temp\files" checkout -f "e2f4b8cf188c87db6a11c6f421b06f701dd6b07b"
上面的命令用于提取我想要的文件,但我的问题是这样会使我的存储库有一个分离的头部

提取这些文件的最佳方法是什么

可能重复:

编辑澄清:

  • 有一个提交到此存储库的自动化流程。(这就是我不想拆下头部的原因)
  • 我想从存储库中的特定点提取所有文件。(我知道提交id)
  • 我想将这些文件解压缩到另一个位置

从另一个repo获取分支(不要拉,即不要合并分支),然后从另一个分支选择提交。这将把特定的更改带到当前分支,并用它的完整历史记录提交它


关于Git Cherry Pick的更多详细信息:

我很难确切地说出您想要什么,因此这里有一些方法可以在提交时获取提交或存储库状态。假设提交是
1234abcd

git archive -o myfile.zip 1234abcd ;# zip up into 'myfile.zip'
git format-patch -M 1 1233abcd
1) 查看存储库状态的两种方法位于
1234abcd

git checkout 1234abcd ;# 'detached HEAD' state; just don't commit new work    
git reset --hard 1234abcd ;# fully reset to the commit, abandon uncommitted work
2) 将存储库状态压缩到
1234abcd

git archive -o myfile.zip 1234abcd ;# zip up into 'myfile.zip'
git format-patch -M 1 1233abcd
3) 从
1234abcd

git archive -o myfile.zip 1234abcd ;# zip up into 'myfile.zip'
git format-patch -M 1 1233abcd
4) 输出git补丁格式,以便您可以重用它(例如,
git apply
将读取
git diff
的输出,您可以通过管道将后者传输到前者)


当你说摘录-你是什么意思?您想在该提交时获取所有文件,该提交中的所有文件?分离头只是指该头引用特定提交而不是命名分支。提交不是一组文件;这是对文件的一组更改。@Nicolas:不。这是Git和VCS之间的一个基本区别,例如Subversion:Git提交指向一组文件,而不是指向两组文件之间的差异。详细信息请阅读。@joelnet您的问题并不清楚您想要实现什么,尤其是为什么分离头部对您来说是一个问题。git归档最接近我想要做的。我将在不更改头的情况下提取所需的文件。出于某种原因,我认为这会更容易。