我需要从2个提交(我选择的)中获取文件,并在我的存储库外放入2个不同的文件夹,我将执行一个过程,而不是我需要能够删除这两个文件夹。
我正在尝试一些命令,git -clone
对我不起作用,我不需要整个存储库,只需要某些提交(每个文件夹一个文件夹),并且我有一些尝试擦除文件夹
我试过的其他内容是git archive
,但输出对我没用。我需要的文件与存储库相同。
那个非常接近的人是git --work-tree=<path> checkout <sha> -- .
但是这个命令在我的存储库中存放了文件(谁有不同之处),我不想要那个。
可以做我想要的,而不对我的存储库进行更改吗?
答案 0 :(得分:2)
从您的存储库目录mkdir ../foo && cd ../foo && echo 'gitdir: ../project/.git' >.git && git checkout <commit-ish> -- .
:
i = 0
while i < num_of_people:
for a in range(0, num_of_people+1):
namelist.append(i)
i += 1
salarylist.append(i)
i +=1
...
可能会产生你想要的结果。
答案 1 :(得分:0)
git show <commit>:<file_path> > <path>
。
例如,git show HEAD:foo/bar.c > ~/build/foo/bar.c
,git show master:foo/bar.c > ~/backup/bar.c
。
git show
可以在此处替换为git cat-file -p
。
如果您想要整个回购,如果您有更新的版本,可以使用git worktree
。它只是检查另一个文件夹的修订而不是当前的工作树,所以你不必再做一个克隆。
例如,git worktree add master ~/foo/
,在当前工作树保持不变的状态下将master
结帐到~/foo/
。