用脚本快速提取补丁文件

目录

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

相关推荐
Rudon滨海渔村6 分钟前
【Tauri】桌面程序exe开发 - Tauri+Vue开发Windows应用 - 比Electron更轻量!8MB!
javascript·electron·tauri·桌面应用
梓羽玩Python8 分钟前
开源AI代理爆火!Suna:3天内新增5.5K+标星,自然对话驱动的自动化神器!
人工智能·python·github
cg501710 分钟前
Vue回调函数中的this
前端·javascript·vue.js
前端太佬12 分钟前
从零到一实现扫码登录:一个前端菜鸟的踩坑实录
前端·javascript·架构
咖啡调调。13 分钟前
模板引擎语法-过滤器
python·django·sqlite
yuanmenglxb200422 分钟前
微信小程序核心技术栈
前端·javascript·vue.js·笔记·微信小程序·小程序
Ankie Wan23 分钟前
notepad++技巧:查找和替换:扩展 or 正则表达式
python·正则表达式·notepad++
带娃的IT创业者23 分钟前
《AI大模型趣味实战》智能Agent和MCP协议的应用实例:搭建一个能阅读DOC文件并实时显示润色改写过程的Python Flask应用
人工智能·python·flask
JavaEdge在掘金31 分钟前
启动nginx报错,80 failed (97: Address family not supported by protocol)
python
纪元A梦38 分钟前
华为OD机试真题——绘图机器(2025A卷:100分)Java/python/JavaScript/C++/C/GO最佳实现
java·javascript·c++·python·华为od·go·华为od机试题