如何用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
相关产品推荐
相关产品推荐

