我想用 GitPython 从指定的提交中复制文件。现在我到这里为止:
import git
git = git.Git(REPO_PATH)
git.checkout(COMMIT_HEX_SHA)
fo = open(REPO_PATH + "/foo.txt", "r")
str = fo.read(10);
fo.close()
有用。但checkout
更改HEAD
和更改文件。是否可以在没有 的情况下从指定的提交中复制文件或读取文件checkout
?
我建议你使用PyDriller(它在内部使用 GitPython)。它更容易使用:
for commit in RepositoryMining("path_to_repo", single="commitHASH").traverse_commits():
for modified_file in commit.modifications:
# do whatever you want with the source code
print(modified_file.source_code)