转自: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.xmlcreate mode 100644 config/libvirt/rhel6u3_virsh.xmlcreate 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

转载于:https://www.cnblogs.com/lance-ehf/p/4281141.html

git根据commit生成patch(转载)相关推荐

  1. [git 基础] 生成patch 和 打patch 的实例

    简洁点啊,我看 网上 很多搞得很复杂的介绍, 然后,最关键,他们 这边版本不仅抄来抄去,而且,还是一个英文 谷歌网页翻译版本. 搞得好复杂, 还没讲 清楚. 1生成Patch 直接就是在GUI上,选一 ...

  2. Git diff 生成patch文件

    通过git diff 命令生成patch文件 1.还未提交的修改 命令 :git diff > commit.patch 2.已提交的修改 先用git log命令查看commit id soft ...

  3. 如何生成Patch及打patch

    如何生成patch: 1. 修改代码 2. git add 添加修改的代码 3. git commit 提交代码 4. git format-patch -1生成Patch 如何打patch: 1. ...

  4. git 生成patch和使用patch

    啰嗦下:发现自己的blog被转载了,不过没有注明出处,有点痛并快乐着的感觉.这里正式申明下:转载请注明出处,感谢.如有商用目的请务必知会本人. 在android大环境下工作,迟早都会接触到git工具, ...

  5. 添加一个文件夹及一些文件如何使用git生成patch

    http://blog.csdn.net/lizzywu/article/details/18666611 背景介绍: 在一个git库里面添加了一个文件夹和若干文件及resource图片文件,需要生成 ...

  6. git 生成多个patch_如何用git命令生成Patch和打Patch

    在程序员的日常开发与合作过程中,对于code的生成patch和打patch(应用patch)成为经常需要做的事情.什么是patch?简单来讲,patch中存储的是你对代码的修改,生成patch就是记录 ...

  7. Git生成patch及打patch到源代码

    1.每个commit生成1个patch 1.1.创建patch 文件的常用命令行 1.1.1.某次提交(含)之前的几次提交 git format-patch [commitid] -n n 表示从指定 ...

  8. Linux的diff和git diff生成patch/打patch

    一.Linux的diff生成patch和打patch 1.单个文件生成patch #  diff -up xxx/a.txt yyy/b.txt  > mypatch_1 参数解释: -u:显示 ...

  9. 如何使用git 生成patch 和打入patch

    平时我们在使用git 管理项目的时候,会遇到这样一种情况,那就是客户使用git 生成patch 给到我们,那我们就需要把客户给到patch 打入到我们的project ,基于这样一个场景,我把git ...

  10. 如何用git命令生成Patch和打Patch(git format-Patch和git am)

    在程序员的日常开发与合作过程中,对于code的生成patch和打patch(应用patch)成为经常需要做的事情. 什么是patch?简单来讲,patch中存储的是你对代码的修改 什么是生成patch ...

最新文章

  1. 世界上最遥远的距离(泰戈尔)
  2. 10行代码AC——7-2 说反话-加强版 (20 分)——解题报告
  3. Codeforces Round #530 (Div. 1) 1098A Sum in the tree
  4. Spark应用日志级别设置
  5. springboot快速入门(一)——HelloWorld搭建
  6. docker简介以及优缺点
  7. 计算机应用培训课程安排表,计算机培训教学计划
  8. 终于找到个好办法备份数据库了
  9. YII学习笔记6.20日
  10. 计算机组成原理试题和答案2017,【2017年整理】计算机组成原理试题及答案9.doc...
  11. Flutter初步-第一个电视直播APP
  12. 浅议一种低成本的48V蓄电池组电压电流采集模块
  13. 学术论文的定义、特点、写作方法以及写作格式
  14. 2021-03-03-Beamforming algorithms - beamformers
  15. 最小生成树算法之Prim算法
  16. 如何在家免费使用知网?
  17. 十一月 Z 星月度速览 | 个性化推荐技术解读、Mivus demo 服务框架切换缘解、精选好书推荐、AI 收藏夹……...
  18. CAD梦想画图中的“阵列命令”
  19. Filter过滤器导致CSS样式失效
  20. docker 容器常用命令及基本操作

热门文章

  1. SIFT特征原理与理解
  2. 如何从零设计结构清晰、操作友好的权限管理模块
  3. python笔记之循环控制
  4. 树莓派(Raspberry Pi)日期时间不准的修正方法
  5. 是的,我们真的在遭遇有史以来最大的DDoS攻击,并且还在加剧
  6. Python学习--识别“字符串字典列表元组“
  7. python学习之记事本
  8. 【STM32 .Net MF开发板学习-09】AD模拟量采集
  9. LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM
  10. 最小二乘方法和RANSAC的改进算法PROSAC和LMEDS