我是靠谱客的博主 苗条超短裙,最近开发中收集的这篇文章主要介绍Git 补丁 —— diff 和 patch 使用详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、diff 和 patch 的区别

        Git 提供了两种补丁方案,一种是通过 git diff 生成的 .diff 文件,第二种是通过 git format-patch 生成的 .patch 文件。

  • 通过 git diff 生成的文件不含有 commit 信息,可以指定文件生成 diff,也可以指定单个 commit, 多个 commit 生成 。
  • 通过 git format-patch 生成的 .patch 文件 含有 commmit 信息。一个 commit 对应一个 patch 文件。

二、生成补丁

1. git diff

(1) 指定文件生成 patch 文件

git diff <filename> > test.patch 或 test.diff

eg. 比如我们修改了 Test.java,Test1.java 文件,我们只想 patch Test.java 文件,那么我们可以使用以下的命令

git diff Test.java > test.patch

想把所有的修改文件打成 patch,即 Test.java,Test1.java 文件,只需要使用下面的命令

git diff  > test.patch

(2) 指定 commit id 生成 patch

使用命令行

git diff  【commit id 1】 【commit id 2】 >  patch/diff文件名

2. git format-patch

当前分支所有超前master的提交:

git format-patch -M master

某次提交以后的所有 patch:

git format-patch [commit id]

[commit id] 指的是 commit id,可以通过 git log 查看。

从根到指定提交的所有patch:

git format-patch --root [commit id]

某两次提交之间的所有patch:

git format-patch [commit id 1]..[commit id 2]

eg.  git format-patch 365a..4e16    //–365a和4e16分别对应两次提交的commit id

某次提交(含)之前的几次提交:

git format-patch –n [commit id]

–n 指 patch数,

生成某次 commit 的 patch 文件:

git format-patch -1 [commit id]

git format-patch 生成的补丁文件默认从1开始顺序编号,并使用对应提交信息中的第一行作为文件名。如果使用了-- numbered-files 选项,则文件名只有编号,不包含提交信息;如果指定了–stdout选项,可指定输出位置,如当所有patch输出到一个文件;可通过 -o <dir> 指定 patch 的存放目录。

git format-patch -3

过程是,将HEAD和HEAD^相比,生成0003.xxx.patch, 将HEAD^和HEAD^^相比,生成0002.xxx.patch, 将HEAD^^和HEAD^^^相比,生成0003.xxx.patch

git am时可以依编号从小到大进行,也可以git am path/*.patch(git am会自动依编好从小到大进行)

三、应用补丁

1. 检查 patch/diff 文件:

git apply --stat xxx.patch

检查能否应用成功

git apply --check xxx.patch/xxx.diff

2. 打补丁:

针对 git diff 生成的补丁:

git apply xxx.patch/xxx.diff

针对 git format-patch 生成的补丁:

git am xxx.patch

四、冲突解决

定位和解决git am冲突的方法_一程山水一程歌-CSDN博客

五、其他

1、包含二进制文件时的diff和apply

git diff HEAD^..HEAD --binary > foobar.patch

https://cloud.tencent.com/developer/article/1423939
https://www.jianshu.com/p/ec04de3f95cc

最后

以上就是苗条超短裙为你收集整理的Git 补丁 —— diff 和 patch 使用详解的全部内容,希望文章能够帮你解决Git 补丁 —— diff 和 patch 使用详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部