You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python检查Git仓库中指定目录的未提交更改

只检查指定目录下的未提交Git更改

要仅检查package_folder目录下的未提交更改,可以通过GitPython分别排查已跟踪文件的修改和未跟踪的新增文件,只筛选目标目录内的内容:

import git
from pathlib import Path

# 初始化仓库对象
repo = git.Repo(search_parent_directories=True)
# 定义需要检查的目标目录
target_dir = Path("package_folder")

# 检查已跟踪文件的修改(包括工作区与暂存区的差异)
tracked_changes = repo.index.diff(None)
has_tracked_changes = any(
    Path(item.a_path).is_relative_to(target_dir)
    for item in tracked_changes
)

# 检查目标目录下的未跟踪新增文件
has_untracked_changes = any(
    Path(file_path).is_relative_to(target_dir)
    for file_path in repo.untracked_files
)

# 综合判断目标目录是否存在未提交更改
is_target_dirty = has_tracked_changes or has_untracked_changes

if is_target_dirty:
    print("package_folder目录存在未提交更改,请提交后再运行分析")
    # 可根据需求终止程序:exit(1)
else:
    last_commit_hex = repo.head.object.hexsha
    print(f"当前代码版本哈希:{last_commit_hex}")

关键逻辑说明

  • repo.index.diff(None):获取所有已跟踪文件中,工作区与暂存区的差异(包括修改、删除)
  • repo.untracked_files:获取仓库中所有未被Git跟踪的新增文件
  • Path.is_relative_to(target_dir):判断文件路径是否属于目标目录及其子目录,确保只检查package_folder内的内容

内容的提问来源于stack exchange,提问作者BurnNote

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:30:56