啰嗦下:发现自己的blog被转载了,不过没有注明出处,有点痛并快乐着的感觉。这里正式申明下:转载请注明出处,感谢。如有商用目的请务必知会本人。

在android大环境下工作,迟早都会接触到git工具,这里说一下本地获取修改补丁的几种方式。
        工作中用到的补丁大致可以分为两种,一种是patch文件,即补丁文件拿过来利用某些命令将这个补丁打入当前代码中,另外一种是修改前和修改后的文件对比包,这个对比包可以让我们快速查看到修改点的同时看到修改的上下文。先说说获取修改前和修改后文件的两种常用方法。第一种:调试完成代码之后,在当前仓库下执行如下语句:
        git stash;
就能恢复到修改前的状态,得到修改文件之后,再执行:
        git stash pop;
这又恢复了修改之后的状态了。如果你有多个仓库需要管理,可以使用repo forall命令帮助执行。
        再说说另外一种方法。有时候修改完代码之后,不想马上就提交,可以另外其一个分支,在这个分支上提交,结束之后再切回原来的分支。一般常用命令如下:
        repo start name . (注意name之后有一个".",表示当前工程。或者使用git checkout -b name 远程分支名称)
        git commit -a
        git checkout name (或者在新建一个分支)
这两种方法一般本地团队使用比较好。如果涉及到跨公司跨地域的交流,建议还是用下面的patch文件方式。

个人理解android开发接触到的patch,一般可以分为两种,一种是UNIX下的patch,可以使用git diff或者其他UNIX的diff命令生成(本人只用过git diff命令,后面的看书有提到过但是自己木有用过),一种是git 工具生成的patch,也可以说是git专用的patch,使用git format-patch命令生成。先来看看git diff生成patch的过程。一般常用命令如下:
        git diff  > patch
        git diff  --cached > patch
        git diff  branchname --cached > patch
这个时候当前目录下就会有一个patch文件,这是一个非git环境也可以使用的patch。对于这种patch,在git上使用要用git apply命令,如下:
        git apply patch
由于这是一个类似UNIX下更新文件的操作,所以执行完上述操作之后,实际上是等于手动修改了文件,还要做一些git commit之类的操作。另外请注意,git apply 是一个事务性操作的命令,也就是说,要么所有补丁都打上去,要么全部放弃。ProGit上说明在实际打补丁之前,可以先用git apply --check 查看补丁是否能够干净顺利地应用到当前分支中:git apply --check patch,如果执行完该命令之后没有任何输出,表示我们可以顺利采纳该补丁,接下来就是git上的提交了。
        在接着说说git format-patch生成的补丁,这是git专用的,也是日常工作中最常接触到的补丁类型。常用命令如下:
        1)两个节点之间的提交: git format-patch  节点A   节点B
        2)单个节点: git format-patch -1 节点A (-n就表示要生成几个节点的提交)
        3)最近一次提交节点的patch :git format-patch HEAD^ 依次类推……
使用git format-patch命令生成的patch文件,包含了提交的附加信息:比如作者,时间等。再次基础上使用git am命令即可将此补丁应用到当前分支。注意应用完之后,你会发现当前分支多了一次提交记录,并且有完整的信息,而不是简单的修改文件。在对比一下,git diff 和git format-patch生成的patch一个重要不同之处,实际使用中会发现git diff一次只会生成一个patch文件,不管差别了多少个提交,都是一个;而git format-patch是根据提交的节点来的,一个节点一个patch。
        补充小技巧:  如果有额外信息需要补充,但又不想放在提交消息中说明以免搞乱了提交说明。可以编辑这些补丁文件,在第一个“---” 行之前添加说明即可。这样的信息能阅读,但在执行完git am命令之后该节点的提交信息不回包含上述信息。 
————————————————
版权声明:本文为CSDN博主「Andrew这个昵称」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/maybe_windleave/article/details/8703778

git 生成patch和使用patch相关推荐

  1. 使用Git生成patch和应用patch

    1. 在git源码目录下执行 git format-patch <old_sha>...<new_sha> -o <patch_dir> 如 git format- ...

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

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

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

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

  4. git补丁操作:git生成patch和应用patch

    一.生成patch 1.拉取代码仓 git clone xxx代码仓地址 2.在clone到本地的代码目录中,例如对README.md文件进行了修改.然后使用 git status 命令查看工作目录和 ...

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

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

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

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

  7. git 生成patch和打patch的方法

    主要还是为了记住一些命令 git format-patch HEAD^ 成功之后会在当前目录生成一个*.patch文件 打patch的时候需要执行git am xxx.patch 这是patch打成功 ...

  8. git生成patch和打patch

    日常开发与合作过程中,对于code生成patch和打patch(应用patch)成为经常需要做的事情,使用方法(直接给出一些examples): 生成patch git diff > xxx.p ...

  9. 如何生成Patch及打patch

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

最新文章

  1. iphone开发UITable内嵌不同风格Table
  2. 深圳启动全国首届人工智能大赛!536万奖金!这座城市对人才的投入从不吝啬...
  3. Chrome反压缩JS代码:Pretty Print显示可读代码
  4. 大对象简介+大对象的4种类型+lob类型的优点+lob的组成
  5. Centos7单用户模式修改root密码
  6. SQL Server查询正在执行的存储过程并停止
  7. python xlrd读取excel-使用Python xlrd模块读取Excel格式文件的方法
  8. 进入51cto之后的发展方向
  9. WeTool V6.0.0免费版多功能微信好有管理软件
  10. 广播 BroadCastReceiver
  11. 科学宿命论-我们到底有没有自由意志
  12. python如何创建txt_如何通过读取.txt文件为每个键创建包含多个“列表”的Python字典?...
  13. 深入了解-微信开发者工具
  14. 安静品生活,这个周末在《Cabbage Harvest》里种菜如何?
  15. 用vue+element-ui快速写一个注册登录页面
  16. 小程序开发华为P20、voiv下Echarts图表不显示数据、坐标轴等问题
  17. 甘特图是什么?如何快速搭建?
  18. JavaSE探赜索隐之乾坤袋(集合)
  19. 用c语言实现基本数据结构(哈希表)
  20. Win10改用microsoft账户登录发生了错误怎么解决?

热门文章

  1. 【bzoj4571SCOI2016美味】
  2. 简单易用的倒计时js代码
  3. [jquery]if条件句
  4. 手机QQ浏览器“有码女神”惊现!意在推广二维码
  5. Aspx页面中直接编写javascript脚本
  6. posix自定义消息队列_消息队列开源框架,基于Io,节约服务器资源
  7. 高级经济师计算机水平考试,【2017上海高级经济师评审职称外语、计算机成绩不再为前置条件】- 环球网校...
  8. redis缓存java对象_Redis缓存系统-Java-Jedis操作Redis,基本操作以及 实现对象保存...
  9. fastreport文本字数太多换行_Flutter实战】文本组件及五大案例
  10. 【控制】《复杂运动体系统的分布式协同控制与优化》-方浩老师-第11章-意图场模型干预下的人机共享控制