如何获取提交的暂存文件列表? (完整路径)
How to get list of staged files for commit ? (fullpaths)
我正在尝试获取为下一次提交暂存的文件列表。我希望他们的完整路径基于存储库的基本目录。
在 python 中,如果没有 gitpython 模块,我该如何做到这一点?
我有一个开胃菜:
repo = git.Repo()
staged_files = repo.index.diff("HEAD")
但是我无法访问他们的路径。
好的,我找到了 2 种方法:
使用 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)
我正在尝试获取为下一次提交暂存的文件列表。我希望他们的完整路径基于存储库的基本目录。
在 python 中,如果没有 gitpython 模块,我该如何做到这一点?
我有一个开胃菜:
repo = git.Repo()
staged_files = repo.index.diff("HEAD")
但是我无法访问他们的路径。
好的,我找到了 2 种方法:
使用 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)