如何使用 python 检查 git 仓库中是否有 unstaged/uncommitted 更改或未推送的提交
How to use python to check whether there are unstaged/uncommitted change or unpushed commit in a git repo
如何使用 python 检查 git 仓库中是否有 unstaged/uncommitted 更改或未推送的提交?
我只知道命令行
git status
会告诉
- 未暂存的更改
- 未提交阶段
- 还有当前分支是否在远程之后提交
如果我为函数提供根路径,例如 ("C:/ProgramFiles"),
如果代码能给出一个列表就更好了,其中每个元素都是
(path of this repos found under the root path, Unstaged/uncommited changes, Untracked files: , Latest commit is pushed)
您可以使用 GitPython 包来提供帮助。
pip install GitPython
那么这个脚本可以给你一个起点:
from git import Repo
repo = Repo('.')
print(f"Unstaged/uncommited changes: {repo.is_dirty()}")
print(f"Untracked files: {len(repo.untracked_files)}")
remote = repo.remote('origin')
remote.fetch()
latest_remote_commit = remote.refs[repo.active_branch.name].commit
latest_local_commit = repo.head.commit
print(f"Latest commit is pushed: {latest_local_commit == latest_remote_commit}")
使用os.system()
函数你可以通过python发送shell命令:
import os
os.system('git status')
如果您想管理输出,您可以使用 os.popen()
:
import os
stream = os.popen('git status')
output = stream.read()
并在 output
中找到 shell 个印刷品。
如何使用 python 检查 git 仓库中是否有 unstaged/uncommitted 更改或未推送的提交?
我只知道命令行
git status
会告诉
- 未暂存的更改
- 未提交阶段
- 还有当前分支是否在远程之后提交
如果我为函数提供根路径,例如 ("C:/ProgramFiles"), 如果代码能给出一个列表就更好了,其中每个元素都是
(path of this repos found under the root path, Unstaged/uncommited changes, Untracked files: , Latest commit is pushed)
您可以使用 GitPython 包来提供帮助。
pip install GitPython
那么这个脚本可以给你一个起点:
from git import Repo
repo = Repo('.')
print(f"Unstaged/uncommited changes: {repo.is_dirty()}")
print(f"Untracked files: {len(repo.untracked_files)}")
remote = repo.remote('origin')
remote.fetch()
latest_remote_commit = remote.refs[repo.active_branch.name].commit
latest_local_commit = repo.head.commit
print(f"Latest commit is pushed: {latest_local_commit == latest_remote_commit}")
使用os.system()
函数你可以通过python发送shell命令:
import os
os.system('git status')
如果您想管理输出,您可以使用 os.popen()
:
import os
stream = os.popen('git status')
output = stream.read()
并在 output
中找到 shell 个印刷品。