使用git的时候,需要删除几个id,会对到之前的代码,但又想保留现在的代码,以便后面从新合并,所以就将现在的代码打包成patch,留到下次合并。

参考链接

http://www.jianshu.com/p/e5d801b936b6

http://www.cnblogs.com/y041039/articles/2411600.html

生成patch

可以用git diff命令或者git format-patch生成patch。

git format-patch
git format-patch <id>:从id这个版本到现在的patch。

如果有多个id的log信息,那么就会生成多个patch文件。

git patch命令生成的patch是根据时间节点来的,而且在打patch的时候,一个patch对应一个时间节点。

使用git log查看id信息。

git format-patch HEAD^ # 最近的1次commit的patch
git format-patch HEAD^^ # 最近的2次commit的patch
git format-patch HEAD^^^ # 最近的3次commit的patch
git format-patch HEAD^^^^ # 最近的4次commit的patch
git diff
git diff命令不管有几个时间节点,都只会生成一个patch文件。

git diff <id1> <id2> > file.patch

旧的id1在前。

使用patch

先检查patch文件:git apply --stat newpatch.patch

检查能否应用成功:git apply --check newpatch.patch

使用git am会有patch里面的log信息,包括comment等。

打补丁

git am --signoff < newpatch.patch 或者 git am --s < newpatch.patch

git apply newpatch.patch

使用git apply 命令打入patch就不会记录commit的记录,而使用git am的记录就会有记录。

patch失败

先检查patch文件:git apply --stat newpatch.patch

检查能否应用成功:git apply --check newpatch.patch

如果不成功,我的解决方法:

git am newpatch.patch

运行这条命令之后,是不会打patch,因为前面的git apply --check已经检查出不成功,git am也会进行检查,不成功就不会打patch。但是会进入git am的操作。

git apply --reject newpatch.patch 这条命令会将可以打的patch打上,然后不能打patch的文件在对应的目录生成.rej文件。对比rej文件,手动更改patch。

git status查看当前状态。

当前不在任何分支上。
您正处于 am 操作过程中。
(解决冲突,然后运行 "git am --continue")
(使用 "git am --skip" 跳过此补丁)
(使用 "git am --abort" 恢复原有分支) 尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动) 修改: CORE/MAC/src/pe/lim/limSendManagementFrames.c 未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容) CORE/MAC/src/pe/lim/limSendManagementFrames.c.rej

然后git add将更改的文件加入stage,并将.rej文件删除。

最后使用

git am --continue.这样patch就成功打入了,而且也会记录里面的commit信息。

Tony Liu

2017-12-20

git patch 使用的更多相关文章

  1. I.MX6 git patch

    /********************************************************************** * I.MX6 git patch * 说明: * 之前 ...

  2. linux git patch 和patch以及git diff 命令

    1.git log 查看commit id,修改前为id1,修改后id2 2.根据id1到id2有几次提交来生成几个patch,否则的话会根据所有节点生成很多patch 比如: commit id2 ...

  3. git patch生成方法

    先把改动commit掉,然后生产改动patch给提交代码的同事,详细操作过程例如以下: 改动代码的同事: git format-patch al821_xxx origin/al821_xxx 会生成 ...

  4. git patch

    http://www.cnblogs.com/y041039/articles/2411600.html

  5. git apply、git am打补丁.diff 和 .patch【转】

    本文转载自:https://www.jianshu.com/p/e5d801b936b6 前提: 生成patch: git format-patch -M master 生成指定patch,0163b ...

  6. git命令详解(转)

    Git使用 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看远程所有 ...

  7. git备忘录

    1.git: patch does not apply git apply --ignore-space-change --ignore-whitespace mychanges.patch 2.Ge ...

  8. Git 操作常用命令

    Git使用 1. git pull    更新服务器代码到本地a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支 2. git push ...

  9. 【转】git命令

    Git使用 1. git pull    更新服务器代码到本地a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支 2. git push ...

随机推荐

  1. 4-4-串的KMP匹配算法-串-第4章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第4章  串 - KMP匹配算法 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码 ...

  2. 微信JSAPI 公众号支付 H5支付以及APP支付 WEBAPI接口开发测试

    统一下单入口 调用该方法入口: public void WxPayAPI() { //string PayPrice ="99.9"; ////订单号 //string Payor ...

  3. 每天一个linux命令(6) ar命令

    当我们的程序中有经常使用的模块,而且这种模块在其他程序中也会用到,这时按照软件重用的思想,我们应该将它们生成库,使得以后编程可以减少开发代码量.这里介绍命令ar,用来对库操作. ar命令可以用来创建. ...

  4. 【Spring】Spring Session的简单搭建与源码阅读

    搭建一个简单的Spring Session例子 引入依赖包 <dependencies> <dependency> <groupId>org.springframe ...

  5. 添加Fragment报已有父view,需先移除的错

    错误LOG: 12-13 17:05:28.754: E/AndroidRuntime(8344): FATAL EXCEPTION: main 12-13 17:05:28.754: E/Andro ...

  6. 【Windows】windows核心编程整理(下)

    windows核心编程整理(上) windows核心编程整理(下) 线程的堆栈 每当创建一个线程时,系统就会为线程的堆栈(每个线程有他自己的堆栈)保留一个堆栈空间区域,并将一些物理存储器提交给这个以保 ...

  7. 【Deep Learning】Hinton. Reducing the Dimensionality of Data with Neural Networks Reading Note

    2006年,机器学习泰斗.多伦多大学计算机系教授Geoffery Hinton在Science发表文章,提出基于深度信念网络(Deep Belief Networks, DBN)可使用非监督的逐层贪心 ...

  8. Zabbix之Python脚本端口自动发现

    Zabbix监控服务端口,可以手动添加配置,但是如果一个服务器上需要监控的端口数较多,那么利用Zabbix自动发现,比较高效,下面是自动发现port的Python脚本. #!/usr/bin/pyth ...

  9. spring 过滤器

    Spring的web包中中有很多过滤器,这些过滤器位于org.springframework.web.filter并且理所当然地实现了javax.servlet.Filter,不过实现的方式有以下几类 ...

  10. java 多线程 23 : Timer

    前言 定时/计划功能在Java应用的各个领域都使用得非常多,比方说Web层面,可能一个项目要定时采集话单.定时更新某些缓存.定时清理一批不活跃用户等等.定时计划任务功能在Java中主要使用的就是Tim ...