用脚本快速提取补丁文件

目录

开发过程中有些情况下需要对不同环境中的文件进行替换,就要从本地找出变更文件,同时找出的变更文件还要和服务器上的目录保持一致,如果只变更了个别文件还可以手动处理,但是如果变更文件数很多的时候,就需要其他方式来处理。如何快速的从找出开发环境中git仓库中的变更文件可以参考以下方式实现:

windows

  1. 首先,确保您已经在Git仓库的根目录下,并且已经切换到包含所需变更的分支或提交。
  2. 创建一个新的目标文件夹,用于存放补丁文件。可以选择在原文件夹的同级目录下创建一个新的文件夹。
  3. 执行以下命令来生成补丁文件:
bash 复制代码
git diff --name-only > changes.txt

这将生成一个包含所有变更文件路径的文本文件 changes.txt。该文件中每一行都是一个变更的文件路径。

  1. 创建一个脚本(例如 create_patch.ps1),代码如下:
powershell 复制代码
# 指定源文件夹和目标文件夹
$sourceFolder = "C:\path\to\source\folder"
$targetFolder = "C:\path\to\target\folder"

# 读取变更文件列表
Get-Content -Path "C:\path\to\changes.txt" | ForEach-Object {
    # 获取文件所在的相对路径
    $relativePath = Split-Path $_ -Parent

    # 创建目标文件夹的相应目录结构
    $targetPath = Join-Path $targetFolder $relativePath
    New-Item -ItemType Directory -Path $targetPath -Force | Out-Null

    # 复制变更的文件到目标文件夹
    Copy-Item -Path (Join-Path $sourceFolder $_) -Destination (Join-Path $targetFolder $_) -Force
}

注意:在脚本中,将 sourceFolder 替换为原文件夹的路径,将 targetFolder 替换为新创建的补丁文件夹的路径。确保文件扩展名为 .ps1。

  1. 打开PowerShell终端,导航到包含 create_patch.ps1 的目录。
  2. 执行以下命令来运行脚本:
powershell 复制代码
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
.\create_patch.ps1

注意:这是两条命令,第一条命令用于设置执行策略,以允许运行脚本文件。第二条命令运行脚本文件。

完成以上步骤,你的补丁文件就已经摘好了~

Linux

linux步骤与windows相同,只有脚本上的区别。

要将Git仓库中变更的文件复制到新目录中形成补丁文件,并保持相同的目录结构,可以按照以下步骤进行操作:

  1. 首先,确保您已经在Git仓库的根目录下,并且已经切换到包含所需变更的分支或提交。

  2. 创建一个新的目标文件夹,用于存放补丁文件。可以选择在原文件夹的同级目录下创建一个新的文件夹。

  3. 执行以下命令来生成补丁文件:

    复制代码
    git diff --name-only > changes.txt

    这将生成一个包含所有变更文件路径的文本文件 changes.txt。该文件中每一行都是一个变更的文件路径。

  4. 创建一个脚本(例如 create_patch.sh),并将以下内容复制到脚本中:

    bash 复制代码
    #!/bin/bash
    
    # 指定源文件夹和目标文件夹
    source_folder="/path/to/source/folder"
    target_folder="/path/to/target/folder"
    
    # 读取变更文件列表
    while IFS= read -r file
    do
        # 获取文件所在的相对路径
        relative_path=$(dirname "$file")
    
        # 创建目标文件夹的相应目录结构
        mkdir -p "$target_folder/$relative_path"
    
        # 复制变更的文件到目标文件夹
        cp "$source_folder/$file" "$target_folder/$file"
    done < changes.txt

    在脚本中,将 source_folder 替换为原文件夹的路径,将 target_folder 替换为新创建的目标文件夹的路径。

  5. 保存并关闭脚本文件。然后,在终端中执行以下命令来运行脚本:

    bash 复制代码
    bash create_patch.sh

    这将根据 changes.txt 中列出的变更文件路径,在目标文件夹中复制相应的文件,并保持与原文件夹相同的目录结构。

完成上述步骤后,您将在目标文件夹中获得一个具有相同目录结构的补丁文件夹,其中包含了Git仓库中变更的文件。

相关推荐
走粥1 分钟前
使用indexOf查找对象结合Pinia持久化引发的问题
开发语言·前端·javascript
青瓷程序设计2 分钟前
【果蔬识别系统】Python+深度学习+人工智能+算法模型+图像识别+2026原创
人工智能·python·深度学习
Fairy要carry7 分钟前
面试08-“生产者-消费者” 模型实现并发 Agent
python·面试
chushiyunen8 分钟前
python和java的区别
python
DamianGao27 分钟前
MiniMax-M2.7 与 LangChain ToolStrategy 兼容性问题解决
python·langchain
兰.lan35 分钟前
【黑马ai测试】Day01课堂笔记+课后作业
软件测试·笔记·python·ai·单元测试
不甜情歌35 分钟前
搞懂 Promise:告别回调嵌套,再也不怕异步代码乱成麻
前端·javascript
国医中兴39 分钟前
Python AI入门:从Hello World到图像分类
人工智能·python·分类
熊猫_豆豆40 分钟前
Python 基于Dlib和OpenCV实现人脸融合算法+代码
图像处理·python·算法·人脸融合
1941s1 小时前
Google Agent Development Kit (ADK) 指南 第六章:记忆与状态管理
人工智能·python·agent·adk·google agent