• git根据commit生成patch(转载)


    转自:http://smilejay.com/2012/08/generate-a-patch-from-a-commit/

    在看一个Bugzilla上Xen的一个bug时,提到要revert掉Dom0(用linux.git)中一个commit,当然git是有revert命令的,如下所示。

    [root@jay-linux linux.git]# git revert cd9db80e5257682a7f7ab245a2459648b3c8d268
    warning: too many files (created: 2321 deleted: 1460), skipping inexact rename detection
    Finished one revert.
    [detached HEAD aab6b2f] Revert "xen/pciback: Support pci_reset_function, aka FLR or D3 support."
     2 files changed, 3 insertions(+), 39 deletions(-)

    (BTW,由于那个commit后的改动太多,可能会导致直接revert掉后不能编译成功(或功能不正常);所以如果真正revert一个commit后要提交时,要做好评估。)

    然后,我想看一下这个commit的patch是怎么样的,做了哪些改动,就需要Git根据一个commit SHA-1值生成一个patch,可以使用如下两种方式。
    1. git format-patch -1 commit :生成的patch有统计信息和git的版本信息
    2. git diff commit_previous commit > mypatch.diff :最原始的diff信息,对于这里的commit_previous(commit之前一个commit),可以使用“commit^”来表示,这样比较方便,不易出错。
    实际命令演示如下:

    [root@jay-linux linux.git]# git format-patch -1 cd9db80e5257682a7f7ab245a2459648b3c8d268
    0001-xen-pciback-Support-pci_reset_function-aka-FLR-or-D3.patch
    (前部有统计信息;结尾有“--1.7.1”这样的git版本标志。)
     
    [root@jay-linux linux.git]# git diff cd9db80e525^ cd9db80e525 > diff.patch

    在commit SHA-1值不重复(冲突)的情况下,可以只写前面几位字符即可(如上面的git diff命令中那样使用)。

    第一种方式,除了最重要最基本的diff信息之外,还有如下信息:

    From a8d30220510cb1d8eac18746570cb52214ac65d7 Mon Sep 17 00:00:00 2001
    From: Jay <smile665@gmail.com>
    Date: Tue, 19 Jun 2012 11:07:02 +0800
    Subject: [PATCH] move libvirt config files to a dedicated directory
     
    ---
     config/libvirt/hotplug.xml       |    5 ++
     config/libvirt/rhel6u3_virsh.xml |   72 ++++++++++++++++++++++++++++++++++
     config/libvirt/win8_virsh.xml    |   80 ++++++++++++++++++++++++++++++++++++++
     3 files changed, 157 insertions(+), 0 deletions(-)
     create mode 100644 config/libvirt/hotplug.xml
     create mode 100644 config/libvirt/rhel6u3_virsh.xml
     create mode 100644 config/libvirt/win8_virsh.xml
     
    (中间是基本diff的信息)
    diff --git a/config/libvirt/hotplug.xml b/config/libvirt/hotplug.xml
    new file mode 100644
    index 0000000..dc85c22
     
    (最后的git版本信息)
    --
    1.7.1

    更多信息,可以:man git-format-patch 和 man git-diff

  • 相关阅读:
    Qt Quick实现的涂鸦程序
    Java并发学习之十九——线程同步工具之Phaser
    poj 1845(等比数列前n项和及高速幂)
    装饰模式(旧恋)
    cocos2d-x 3.1.1 学习笔记[3]Action 动作
    Nmap 源代码学习四 软件简单使用
    关于phpcmsv9更新缓存出现链接被重置的问题
    POJ 3159 Candies(SPFA+栈)差分约束
    Ubuntu 配置ISCSI服务
    iSCSI存储技术
  • 原文地址:https://www.cnblogs.com/lance-ehf/p/4281141.html
Copyright © 2020-2023  润新知