如何检出多个提交并将代码版本复制到另一个目录?

How to checkout multiple commits and copy the version of code on another directory?

这是我的 csv 文件 包含 CommitId:

CommitId
d38f7b334856ed4007fb3ec0f8a5f7499ee2f2b8
d38f7b334856ed4007fb3ec0f8a5f7499ee2f2b8
d38f7b334856ed4007fb3ec0f8a5f7499ee2f2b8
4bb968a47ce00279d6051df95bd782650700179e
c3d7ec38417ecff03d1cd3be0163e6ce07578eb3
00568c9886e739d6b5dd61b4a4326d598552fb6f
00568c9886e739d6b5dd61b4a4326d598552fb6f
00568c9886e739d6b5dd61b4a4326d598552fb6f
00568c9886e739d6b5dd61b4a4326d598552fb6f
6e062098453febbfb0169cd0af56f70f2e3fc77f
63f658918c2f4b851b0d0fffbffab4df0cfe13ca

我需要检查每个提交并将代码版本复制到另一个目录,因此对于这个例子,我需要在一个目录中有 11 个版本的代码。

我尝试了一次提交代码:

import os
from distutils.dir_util import copy_tree
path='C:/Users/AQ42770/Desktop/RefactoringMiner/bin/BTC-e-client-for-Android'
os.chdir(path)
commande1='git chekcout  d38f7b334856ed4007fb3ec0f8a5f7499ee2f2b8'
os.system(commande1) 
copy_tree("C:/Users/AQ42770/Desktop/RefactoringMiner/bin/BTC-e-client-for-Android", "C:/Users/AQ42770/Desktop/test")

第一个问题是:copy_tree() 将文件复制到目标文件夹而不是目录

其次:我没有找到对 may csv 上的所有提交执行此操作的方法

感谢帮助!

您可以使用 git worktree.

而不是结帐

更准确地说:git worktree add C:/Users/AQ42770/Desktop/test1 <commit1>.
并重复 <commit2>C:/Users/AQ42770/Desktop/test2,依此类推。

这样一来,您只有一个克隆,但有 11 个工作树,所有内容都正确。

为此你需要 git cherry-pick

git cherry-pick A..B 其中 A 和 B 是您的两个提交(A 是旧的,B 是新的。