如何使用Python检查Git Repo是否有未提交的更改

2024-09-14 11:21:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我对git还很陌生,但我正在尝试使用python来检查git存储库是否有任何未提交的更改。不管我尝试使用python运行什么命令,我似乎都会遇到相同的错误。我的代码是:

from git import *
repo = Repo("path\to\my\repo")
lastCommit = repo.head.commit.committed_date
uncommitted = repo.is_dirty()

在我运行最后一行,即我得到错误时,一切都按预期工作:

^{pr2}$

我也尝试过其他命令,但我得到了同样的错误。例如,repo.index.diff(repo.head.commit)。我还尝试过运行repo.index.diff(None)repo.index.diff('HEAD'),它们都会产生相同的错误。我真正想要的是对我命名为repo的存储库运行$ git status。我在Windows7上使用的是python2.7.9和gitpython1.0.1。任何帮助都将不胜感激!在


Tags: topath代码fromimportgit命令index
3条回答

好像GitPython找不到git.exe文件. 在

尝试设置环境变量GIT_PYTHON_GIT_可执行文件。 它很可能是“C:\ProgramFiles(x86)\Git\bin\git.exe文件“如果在默认情况下使用Git for Windows

在命令行(命令提示符)在

set GIT_PYTHON_GIT_EXECUTABLE="C:\Program Files (x86)\Git\bin\git.exe"

在您的特定示例中(仅用于说明目的),您的"path\to\my\repo"将被理解为'path\to\\my\repo'。在路径("path\\to\\my\\repo")的组件之间使用双反斜杠。\t被理解为制表符,\r被理解为回车。或者,您可以在路径前面放一个r,如下所示:r"path\to\my\repo"

谢谢你的建议,但实施这些建议并没有真正解决我的问题。我确实用以下代码开发了一个解决方案:

def statusChecker(repo, lastCommit):
    uncommittedFiles = []
    files = os.listdir(repo)
    for file in files:
        if os.path.getmtime(repo + "\\\\" + file) > lastCommit:
            uncommittedFiles.append(file)
    uncommittedFiles = uncommittedFiles.remove(".git")
    return uncommittedFiles

只要您在lastCommit参数中使用lastCommit = repo.head.commit.committed_date之类的东西,这应该可以很好地工作。在

相关问题 更多 >