Windows Python环境下如何用Git将所有Untracked文件备份为ZIP
备份Git未跟踪文件为ZIP(Windows Python开发场景)
实现思路
通过Git命令提取标记为??的未跟踪文件列表,再用Python内置模块打包成ZIP文件,适配Windows环境。
步骤1:提取未跟踪文件
利用git status --short命令的输出特征,筛选出开头为??的行,提取对应的文件名(含空格的文件名也能正确处理)。
步骤2:Python打包脚本
直接运行以下脚本即可完成备份:
import subprocess import zipfile import os # 获取Git仓库中所有未跟踪文件 def get_untracked_files(): try: # 执行git status命令并捕获输出 git_output = subprocess.run( ["git", "status", "--short"], capture_output=True, text=True, check=True ).stdout.strip() except subprocess.CalledProcessError: print("执行Git命令失败,请确认当前目录是Git仓库根目录,且Git已添加到系统环境变量") return [] untracked_files = [] for line in git_output.split('\n'): if line.startswith('?? '): # 移除"?? "前缀,提取完整文件路径 file_path = line[3:].strip() if os.path.exists(file_path): untracked_files.append(file_path) return untracked_files # 将文件打包为ZIP def create_zip_backup(files, zip_filename="untracked_files_backup.zip"): if not files: print("没有未跟踪文件需要备份") return with zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED) as zip_handle: for file in files: # 保留文件原始相对路径,避免解压时文件混乱 zip_handle.write(file, file) print(f"已加入备份: {file}") print(f"备份完成,生成文件: {os.path.abspath(zip_filename)}") if __name__ == "__main__": untracked = get_untracked_files() create_zip_backup(untracked)
使用说明
- 确保脚本在Git仓库根目录执行,若不在根目录,可在
subprocess.run中添加cwd="你的仓库路径"参数指定位置 - 系统需已安装Git并添加到Windows环境变量,否则Git命令无法执行
- 脚本会自动跳过不存在的文件(避免Git输出中已删除的未跟踪文件)
- 可修改
zip_filename参数自定义备份ZIP的文件名
内容的提问来源于stack exchange,提问作者geroge
相关产品推荐
相关产品推荐

