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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:12:49