如何获取提交的暂存文件列表? (fullpaths)

时间:2017-05-22 16:01:47

标签: python git gitpython

我试图获取下一次提交的文件列表。我希望他们的完整路径基于存储库的基本目录。

如果没有gitpython模块,如何在python中实现,甚至更好?

我有一个首发:

repo = git.Repo()
staged_files = repo.index.diff("HEAD")

但我无法访问他们的路径。

1 个答案:

答案 0 :(得分:1)

好的我找到了两种方法:

使用gitpython:

repo = git.Repo()
staged_files = repo.index.diff("HEAD")
for x in staged_files:
    print(x.a_path) # Here we can use a_path or b_path, I do not know the difference...

没有gitpython:

import subprocess
subprocess.getoutput(['git diff --name-only --cached'])

甚至更好

import subprocess
proc = subprocess.Popen(['git', 'diff', '--name-only', '--cached'], stdout=subprocess.PIPE)
staged_files = proc.stdout.readlines()
staged_files = [f.decode('utf-8') for f in staged_files]
staged_files = [f.strip() for f in staged_files]
print(staged_files)