我正在尝试从特定提交的存储库中提取浅克隆所有文件。我想将这些文件提取到备用位置,而不会影响现有存储库的HEAD。
这是我正在运行以获取这些文件的命令......
git --git-dir="C:\temp\repository" --work-tree="C:\temp\files" checkout -f "e2f4b8cf188c87db6a11c6f421b06f701dd6b07b"
上面的命令可以解压缩我想要的文件,但是我的问题是这使得我的存储库中有一个独立的HEAD。
提取这些文件的最佳方法是什么?
可能重复:How to shallow clone a specific commit with depth 1?
修改说明:
答案 0 :(得分: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补丁格式,以便您可以重复使用它(例如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
答案 1 :(得分:0)
从另一个repo中获取分支(不要拉,即不合并分支),然后从另一个分支中挑选提交。这将特别改变当前的分支&提交它的完整历史。
关于Git Cherry Pick的更多细节:http://git-scm.com/docs/git-cherry-pick