我正在尝试使用gitpython python-module从特定提交中获取文件。
我能够从最新的提交中获取文件(包含内容)。但是我想从特定的先前git提交中获取文件(包含内容)。
repo = git.Repo("G:\myrespo")
obj = repo.git.get_object_data(x.a_blob)
我怎样才能得到它?
答案 0 :(得分:1)
这是从特定提交中获取文件的一种方法:
import io
repo = Repo('G:\myrespo')
# Retrieve specific commit from repo
# The revision specifier must be one of the specifiers defined in
# https://git-scm.com/docs/git-rev-parse#_specifying_revisions
# In this example, we'll use a SHA-1
commit = repo.commit('7ba4789adf73c0555fbffad3b62d61e411c3b1af')
# Retrieve a file from the commit tree
# You can use the path helper to get the file by filename
targetfile = commit.tree / 'some_file.md'
# Retrieve contents of targetfile
with io.BytesIO(targetfile.data_stream.read()) as f:
print(f.read().decode('utf-8'))
targetfile
是标准的GitPython Object:
>>> targetfile.name
'some_file.md'
>>> targetfile.type
'blob'
答案 1 :(得分:0)
您还可以使用PyDriller(围绕GitPython的包装器),这样会更容易:
for commit in RepositoryMining("repo", single="commit_hash").traverse_commits():
# list of modified files of the commit
commit.modifications