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: deleted: ), skipping inexact rename detection
Finished one revert.
[detached HEAD aab6b2f] Revert "xen/pciback: Support pci_reset_function, aka FLR or D3 support."
files changed, insertions(+), 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 - cd9db80e5257682a7f7ab245a2459648b3c8d268
-xen-pciback-Support-pci_reset_function-aka-FLR-or-D3.patch
(前部有统计信息;结尾有“--1.7.”这样的git版本标志。) [root@jay-linux linux.git]# git diff cd9db80e525^ cd9db80e525 > diff.patch
在commit SHA-1值不重复(冲突)的情况下,可以只写前面几位字符即可(如上面的git diff命令中那样使用)。
第一种方式,除了最重要最基本的diff信息之外,还有如下信息:
From a8d30220510cb1d8eac18746570cb52214ac65d7 Mon Sep ::
From: Jay <smile665@gmail.com>
Date: Tue, Jun :: +
Subject: [PATCH] move libvirt config files to a dedicated directory ---
config/libvirt/hotplug.xml | ++
config/libvirt/rhel6u3_virsh.xml | ++++++++++++++++++++++++++++++++++
config/libvirt/win8_virsh.xml | ++++++++++++++++++++++++++++++++++++++
files changed, insertions(+), deletions(-)
create mode config/libvirt/hotplug.xml
create mode config/libvirt/rhel6u3_virsh.xml
create mode config/libvirt/win8_virsh.xml (中间是基本diff的信息)
diff --git a/config/libvirt/hotplug.xml b/config/libvirt/hotplug.xml
new file mode
index ..dc85c22 (最后的git版本信息)
--
1.7.
更多信息,可以:man git-format-patch 和 man git-diff
git根据commit生成patch(转载)的更多相关文章
- git 生成patch 和打入patch
转载:https://blog.csdn.net/liuhaomatou/article/details/54410361 平时我们在使用git 管理项目的时候,会遇到这样一种情况,那就是客户使用gi ...
- git 生成patch和应用patch【转】
本文转载自:http://www.jianshu.com/p/814fb6606734 1.在git源码目录下执行 1.1.两个commit间的修改(包含两个commit) git format-pa ...
- 如何使用git 生成patch 和打入patch【转】
本文转载自:http://blog.csdn.net/liuhaomatou/article/details/54410361 平时我们在使用git 管理项目的时候,会遇到这样一种情况,那就是客户使用 ...
- 如何使用git 生成patch 和打入patch 标签: gitpatch【转】
本文转载自:http://blog.csdn.net/liuhaomatou/article/details/54410361 平时我们在使用git 管理项目的时候,会遇到这样一种情况,那就是客户使用 ...
- git diff 生成patch, git apply patch 打补丁方法说明,以及分支管理的简单操作。
git diff 简易操作说明 先git log 查看commit ID, 记录你想要打的补丁的ID 比如说: git log commit 4ff35d800fa62123a28b7bda2a04e ...
- 如何用git命令生成Patch和打Patch
在程序员的日常开发与合作过程中,对于code的生成patch和打patch(应用patch)成为经常需要做的事情.什么是patch?简单来讲,patch中存储的是你对代码的修改,生成patch就是记录 ...
- 【Git】生成Patch和使用Patch
1.生成Patch(俗称快照) 先来看看repo manifest 的用法 <1>cd /工作目录/项目目录/.repo/manifests <2>repo manifest ...
- git 生成patch和打patch
有这样的 目录层次 x/xx/xxx/xxx/ttt.c而 我的 当前位置 是在 x/下 ,执行git diff> test.patch 在test.patch补丁文件里的路径信息是这样的:- ...
- python解析git log后生成页面显示git更新日志信息
使用git log可以查到git上项目的更新日志. 如下两个git项目,我想把git的日志信息解析成一个便于在浏览器上查看的页面. https://github.com/gityf/lua https ...
随机推荐
- Codevs 1695 Windows2013
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 话说adamyi编的Windows 2013超时了(- -!),所以他不得不在自 ...
- 【BZOJ1031】字符加密Cipher(后缀数组)
题意:将一个长度为2n(复制粘贴后)的字符串的所有长度为n的后缀从小到大排序,并依次输出它们的最后一个字母. n<=100000 思路:裸SA,模板真难背 P党不得不写成C++风格 ..]of ...
- MongoDB学习day05--MongDB开启权限验证,创建用户
一.MongoDB账户权限配置 1.创建超级管理员用户 use admin db.createUser({ user:'admin', pwd:'123456', roles:[{role:'root ...
- 如何使用sqlalchemy获取某年某月的数据总和
代码如下: # 基于Flask的SQLAlchemy # models class History(db.Model): __tablename__ = 'historys' id = db.Colu ...
- Puppet基于Master/Agent模式实现LNMP平台部署
前言 随着IT行业的迅猛发展,传统的运维方式靠大量人力比较吃力,运维人员面对日益增长的服务器和运维工作,不得不把很多重复的.繁琐的工作利用自动化处理.前期我们介绍了运维自动化工具ansible的简单应 ...
- Office WORD EXCEL批量查找和替换技巧实例
1 删除多余的空行 如果是在WORD中,则查找^p^p替换为^p. 如果是在EXCEL里,则为全部选中,然后点击编辑,定位,定位条件,空值. 将全部选中空白的行,如图所示 再次点击编辑,删除,删除 ...
- Java入门 第一季第五章 编程练习解析
这是我学习慕课网Java课程的笔记.原视频链接为:http://www.imooc.com/learn/85 5-1 基本写法 自己主动补全快捷键:alt + / 5-2 输入输出 使用Scanner ...
- SQL yog过期后教你怎么让他不过期
打开注册表 安装sqlyog后,进入注册表编辑器,进入\HEYK_CURRENT_USER\Software\,找到以{}括起来的那项直接干掉! 1, regedit 2,修改 3,
- JS应用之禁止抓屏、复制、打印
JS应用之禁止抓屏.复制.打印项目需要禁止抓屏.复制.打印的要求,复制.打印做起来可能顺手一点网上各种各样的脚本俯首皆是.但抓屏怎么禁止?PrintScreen是一个特殊的键,它是没有keyCode的 ...
- js 变量、函数提升
js 变量.函数提升 先简单理解下作用域的概念,方便对变量与函数提升的概念的理解 function foo() { var x = 1; if (x) { var x = 2; } console.l ...