如何检出多个提交并将代码版本复制到另一个目录?
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 是新的。
这是我的 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 是新的。