获取从FIRSST_COMMIT开始(不包含此次提交)到目前HEAD为止改动的所有文件
git diff --name-only  $FIRST_COMMIT | xargs -i cp --parents {} ../patch/ 2>/dev/null
当前分支所有超前master的提交:
git format-patch -M master
某次提交以后的所有patch:
git format-patch 4e16                --4e16指的是commit名
从根到指定提交的所有patch:
git format-patch                          --root 4e16
某两次提交之间的所有patch:
git format-patch 365a..4e16      --365a和4e16分别对应两次提交的名称
某次提交(含)之前的几次提交:
git format-patch –n 07fe             --n指patch数,07fe对应提交的名称
故,单次提交即为:
git format-patch -1 07fe
git format-patch生成的补丁文件默认从1开始顺序编号,并使用对应提交信息中的第一行作为文件名。如果使用了-- numbered-files选项,则文件名只有编号,不包含提交信息;如果指定了--stdout选项,可指定输出位置,如当所有patch输出到一个文件;可指定-o <dir>指定patch的存放目录;
2应用patch:
先检查patch文件:git apply --stat newpatch.patch
检查能否应用成功:git apply --check  newpatch.patch
打补丁:git am --signoff < newpatch.patch
(使用-s或--signoff选项,可以commit信息中加入Signed-off-by信息)
///
比如,一个典型的git am失败,可能是这样的:
$ git am PATCH
Applying: PACTH DESCRIPTION
error: patch failed: file.c:137
error: file.c: patch does not apply
error: patch failed: Makefile:24
error: libavfilter/Makefile: patch does not apply
Patch failed at 0001 PATCH DESCRIPTION
When you have resolved this problem run "git am --resolved".
If you would prefer to skip this patch, instead run "git am --skip".
To restore the original branch and stop patching run "git am --abort".
正如你所见,如果冲突发生,git只是输出上述信息,然后就停下来。一个小冲突会导致整个patch都不会被集成。
处理这种问题的最简单方法是先使用 git am --abort,然后手动的添加此patch, patch -p1 < PATCH,手动解决掉代码冲突,最后使用 git commit -a 提交代码。但是这样做有个问题就是你会失去PATCH中原本包含的commit信息(比如From,Date,Subject,Signed-off-by等)。应该有一种更聪明的方法。
在 .git/rebase-apply 目录下,存放着相应的补丁文件,名字是“0001” (在更新的git版本中,存放补丁文件的目录名有所改变,这里使用的git版本是 1.7.4.1)。
事实上,你可以使用 git apply 命令打patch(git apply 是git中的patch命令)。如同使用 patch -p1 命令时一样,然后手动解决代码冲突(检视生成的 .rej 文件,与冲突文件比较,修改冲突内容,并最终把文件加入到index中):
$ git apply PATCH --reject
$ edit edit edit
(译注:根据.rej文件手动解决所有冲突)
$ git add FIXED_FILES
$ git am --resolved
就这么简单!
想多一些解释,好吧。git am 并不改变index,你需要使用 git apply --reje

git patch操作相关推荐

  1. svn 及 git patch 文件

    项目开发中经常会遇到A同事编写的代码需要B同事review,然后由C同事提交,patch文件是一种很好的代码传递方式. 1  svn patch文件操作: 1)      生成svn patch文件 ...

  2. Git常用操作速查,没有人比我更简单!!

    目录 Git初始化 Git配置 init clone commit branch push pull checkout merge log rm reset --hard rebase 应用场景 其他 ...

  3. java代码操作git_JGit--实现Git命令操作的Java API

    问题来源:最近在做一个项目,其中有一块需要用户上传代码到服务器中,然后分析用户所传的代码,传代码最直接的方式就是用户打个包上传,但是后期再分析代码的时候还要代码实现解压上传的代码,操作起来比较复杂. ...

  4. [转]Git远程操作详解

    原文:http://www.ruanyifeng.com/blog/2014/06/git_remote.html Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多 ...

  5. 解决Git Revert操作后再次Merge代码被冲掉的问题

    解决Git Revert操作后再次Merge代码被冲掉的问题 参考文章: (1)解决Git Revert操作后再次Merge代码被冲掉的问题 (2)https://www.cnblogs.com/ja ...

  6. git每次操作提示输入密码问题解决

    git每次操作提示输入密码问题解决 参考文章: (1)git每次操作提示输入密码问题解决 (2)https://www.cnblogs.com/JaminXie/p/11103806.html 备忘一 ...

  7. Git 远程操作详解

    2019独角兽企业重金招聘Python工程师标准>>> Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详 ...

  8. Git远程操作详解【转】

    转自:http://www.ruanyifeng.com/blog/2014/06/git_remote.html 作者: 阮一峰 日期: 2014年6月12日 Git是目前最流行的版本管理系统,学会 ...

  9. python002 一 eg: Python 入门技巧__环境搭建__git使用、git本地操作、 自建gitlab服务器

    一,环境准备(准备python开发环境) 官网地址: http://www.python.org 进去之后点击导航栏的Downloads,也可以鼠标放到Downloads上弹出菜单选择Source c ...

最新文章

  1. 关于IBM 随机启动选项
  2. 使用eclipse 进行 Cesium 开发
  3. CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-1虚拟机安装及环境初始化
  4. RedisDesktopManager客户端可视化工具下载安装与使用
  5. boost::hana::make_type用法的测试程序
  6. android 特效绘图,Android绘图机制与处理技巧——Android图像处理之图形特效处理...
  7. mysql install安装报错_mysql安装报错
  8. Python logging模块切分和轮转日志
  9. encoding python3_关于 Python3 的编码
  10. html5 下拉框 美化,纯js超酷select下拉框美化插件
  11. Java 23 种设计模式概述 与 简单工厂模式
  12. 使用函数式编程优化代码
  13. 微信小程序搜索排名规则,教你怎么让排名靠前
  14. 5.19 对学生按姓名进行随机排序 [原创Excel教程]
  15. 目标检测: 一文读懂 CenterNet (CVPR 2019)
  16. PPT中修改已插入对象的图标
  17. WebRtc以Trickle ICE形式去进行pair
  18. Datax及Datax-web 下载使用
  19. 在内部局域网内搭建HTTPs
  20. flask + gunicorn部署(非常详尽)

热门文章

  1. 最强python技术前沿!什么是python怎么学?通过这篇文字就知道了
  2. 了解下C# 可空类型(Nullable)
  3. ASP.NET MVC – 视图简介
  4. 如何安装体验 Ubuntu on Windows
  5. HDU1878(判断一个无向图是否存在欧拉回路)
  6. 图论500题 ---- 并查集求路径上最大值最小不超过K的点对数 HDU Portal
  7. 树莓派系统安装_树莓派系统安装
  8. 安卓 linux init.rc,[原创]Android init.rc文件解析过程详解(二)
  9. 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解
  10. luogu P1231 教辅的组成(建图、拆点、最大流)