• GIT补丁怎么打?


    ‌$ git format-patch [-s]  <引用或其范围>

    // 将特定的一个提交或一个范围内的提交("HEAD~3...HEAD"等价于"HEAD HEAD^ HEAD^^")转换成补丁文件,加上s 参数表示在补丁说明中加入作者姓名。

    ‌$ git send-email *.patch

    // 将补丁文件用邮件的方式发送给PM(项目经理) ,邮件接受者打开mail ,可以将收到的补丁邮件挑选出来,保存在一个mbox格式的文件中。例如执行mail 命令后,在mail 命令行中执行

    & s 1-3 user1-mail-archive

    表示将收件箱中前三封邮件归档在user1-mail-archive文件中。当然这个文件可以通过执行mail -f user1-mail-archive打开查看。

    ‌$ git am user1-mail-archive

    // 此时当把heads 退回到HEAD~3 时,再执行上述命令就可以成功打上3补丁,使heads 再次指向原HEAD。

    ‌$ cat  *.patch | git am

    // 打补丁文件*.patch。该补丁文件可以是u 盘靠过来的,或是其他人任何非mail 形式获取的补丁文件。

    还有另外两个补丁管理工具StGit和 Quilt

    以StGit 为例来说明:

    安装

    // 可以通过apt install stgit stgit-contrib安装

    安装好之后,进入工作区。首先初始化stgit

    ‌$ stg init //初始化

    ‌$ stg series //查看补丁列表

    ‌$ stg uncommit -n<num>

    // 将最近num个提交预选为补丁文件源,压入补丁栈中。注意此时分支master没变化。

    ‌$ stg pop [-a]

    ‌// 弹出栈顶补丁文件,同时删除对应的提交。如果加上a参数,表示弹出所有栈中的补丁文件,并将master 重置到最后一个补丁文件之后的提交。

    ‌$ stg push

    ‌$ stg goto <x.patch>

    // 前者打栈顶补丁到分支中,后者将指定补丁打到分支中。

    ‌$ stg refresh

    //当打完一个补丁后,发现其中有一个小的bug,我们可以在工作区修改完后,不加入暂存区,直接执行上述补丁刷新命令,此时你打过的补丁会自动更新,而不必再产生一个提交。

    ‌$ stg push + $ stg refresh

    // 因为之前的补丁有更新,导致执行stg push 后再往后打补丁有可能会遇到冲突,此时可以直接编辑冲突文件,之后添加到暂存区,不提交直接执行stg refresh 。更新补丁文件的同时更新提交。

    ‌$ stg export -d patchs

    //将补丁文件导出到patchs 目录,且目录里除了补丁文件之外,还会包含一个说明补丁顺序的文件series

  • 相关阅读:
    一条Sql的Spark之旅
    Redis学习笔记:Redis在C#中的使用
    MySQL_表操作
    git上传新项目到coding
    Jenkins 安装 on centos7
    day 36
    表单生成器(Form Builder)之表单数据存储结构mongodb篇
    ORA-16032和ORA-07286 LOG_ARCHIVE_DEST_1没生效
    SQL查询小案例
    mysql从5.6升级到5.7后出现 Expression #1 of ORDER BY clause is not in SELECT list,this is incompatible with DISTINCT
  • 原文地址:https://www.cnblogs.com/leon1124/p/14039870.html
Copyright © 2020-2023  润新知