0

我正在尝试从特定提交的存储库中提取浅层克隆所有文件。我想在不影响现有存储库的 HEAD 的情况下将这些文件提取到备用位置。

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

git --git-dir="C:\temp\repository" --work-tree="C:\temp\files" checkout -f "e2f4b8cf188c87db6a11c6f421b06f701dd6b07b"

上面的命令可以提取我想要的文件,但我的问题是这让我的存储库带有一个分离的 HEAD。

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

可能重复:如何浅克隆深度为 1 的特定提交?

编辑澄清:

  • 有一个提交到此存储库的自动化过程。(这就是为什么我不想分离 HEAD)
  • 我想从特定点从存储库中提取所有文件。(我知道提交 ID)
  • 我想将这些文件提取到备用位置。
4

2 回答 2

2

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

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'

3)创建一个电子邮件补丁1234abcd

git format-patch -M 1 1233abcd

4) 输出 git patch 格式,以便您可以重复使用它(例如git apply,将读取 的输出git diff,您可以将后者通过管道传输到前者)

git diff 1234abcd 1234abcd~1 | git apply ;# create and reapply the patch to the index
git diff 1234abcd 1234abcd~1 > outfile.txt ;# redirect it to an outfile
于 2012-09-12T12:47:27.213 回答
0

从另一个 repo 获取分支(不要拉,即不要合并分支),然后从另一个分支中挑选提交。这将对当前分支进行特定更改并以其完整历史记录提交。

有关 Git Cherry Pick 的更多详细信息:http: //git-scm.com/docs/git-cherry-pick

于 2012-09-12T07:36:33.527 回答