git patch

-p 指定目录级别(从路径全称中除去几层目录)

如,如果补丁文件包含路径名称 /curds/whey/src/blurfl/blurfl.c,那么:

-p 0 使用完整路径名

-p 1 除去前导斜杠,留下 curds/whey/src/blurfl/blurfl.c。

-p 4 除去前导斜杠和前三个目录,留下 blurfl/blurfl.c

-d Directory ---打补丁前,更改当前目录到指定目录

patch -N 表示严格指定应用补丁

-N  --forward  Ignore patches that appear to be reversed or already applied.

 

patch -R 表示严格指定还原补丁

-R  --reverse  Assume patches were created with old and new files swapped.

【已解决】打patch补丁时出错:Reversed (or previously applied) patch detected! Assume -R? [n]

【该提示出现的原因】

表示此处之前已经打过一次补丁,所以此处再次打补丁,就会有该提示。

【此处目标】

希望可以忽略次错误,不在重复打补丁,继续往下执行。

n=no=表示不R=不reverse?

patch -R 表示撤回打补丁,还原内容

例如:

现有基础内核版本2.6.21,想转成2.6.21.7内核stable版本,应该怎么办?

a) 去http://www.kernel.org/pub/linux/kernel/v2.6/下载patch-2.6.21.7;

b) Linux shell下面,cd到2.6.21内核源文件根目录(linux-2.6.21),将patch-2.6.21.7也放在本目

录(命令执行的当前止录),执行patch命令::patch -p1 < patch-2.6.21.7

(p1的意思是忽略patch文件(即diff文件)内容中的第一个路径)

c) 打完补丁后,即变成了2.6.21.7的内核了,如果想回退至2.6.21基础版本,执行如下命令即可:

patch -R -p1 < patch-2.6.21.7

(-R的参数意思表示回退这个patch)

【结果】

选择 n 以后,会出现

y=yes=继续应用,打patch;

n=no=不打patch

e=edit=修改patch?

v=view=查看patch?

a=accept all y=接受所有修改?

【此处目标】

选择y,打补丁。

【遗留】

使用先n后y的逻辑打补丁,基本上可以解决问题,但是会出现了“Hunk #1 FAILED at 1.”之类的现象 。

时间: 2024-10-13 11:51:54

git patch的相关文章

git patch生成方法

先把修改commit掉,然后生产修改patch给提交代码的同事,具体操作步骤如下: 修改代码的同事: git format-patch al821_xxx origin/al821_xxx 会生成:0001-HQ00656135-xxx-al821_xxx.patch这样的patch文件 把这个patch给提交代码的同事 提交代码的同事,执行: git am 0001-HQ00656135-xxx-al821_xxx.patch 然后可以检查这个提交记录有没有问题,如果没有问题 执行git pu

Git Patch使用: 生成,导入,解决冲突

1. Git Patch git patch包括2中: 标准diff 和git format-patch 2. 生成patch 2.1 git diff 生成标准patch 最简单, 但是很多信息没有 git diff > my.diff 2.2 git format-patch 生成git专用patch git format-patch -M master format-patch中包涵diff, git commit, time等等 From c0b96dc1b770c45c49bd2945

git patch生成和使用

前言 由于工作需要,基于源码进行改动的时候经常需要在git分支上打各种各样的patch来解决各种各样的问题.这里总结两种生成patch和打patch的方法. git diff 这种是Unix下的patch,在git分支下通过git diff命令生成.具体命令如下: git diff > diff.patch 对于git diff生成的patch,可以用如下两条命令进行merge: git apply diff.patch 或者 patch -p1 < diff.patch git format

git patch 的用法

1使用git format-patch生成所需要的patch:当前分支所有超前master的提交:git format-patch -M master某次提交以后的所有patch:git format-patch 4e16                --4e16指的是commit名从根到指定提交的所有patch:git format-patch                          --root 4e16某两次提交之间的所有patch:git format-patch 365a.

git patch 使用

1使用git format-patch生成所需要的patch:当前分支所有超前master的提交:git format-patch -M master某次提交以后的所有patch:git format-patch 4e16                --4e16指的是commit名从根到指定提交的所有patch:git format-patch                          --root 4e16某两次提交之间的所有patch:git format-patch 365a.

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

本文转载自:https://www.jianshu.com/p/e5d801b936b6 前提: 生成patch: git format-patch -M master 生成指定patch,0163bed3bf59ae74c36cc5138b4c24f1556d8304是commit id,-1是指从当前id开始,向下提交次数,包含此次且计数从1开始. 也就是说,我想要打出0163bed3bf59ae74c36cc5138b4c24f1556d8304当前的patch,则: git format

git命令

1. git pull    更新服务器代码到本地a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支 2. git push    将本地代码提交到服务器 3. git log    查看提交信息a). git log -p    查看历次的log信息及更改情况b). git log -p -4    查看距现在最近的4次的log信息及更改情况c). git log frameworks/    查看关于frameworks/目录修

Git实用技巧

1.git时光穿梭 在我本地的git库里有三次commit 如果此时我想要回退到第二次提交的状态,可运行 git reset --hard 8d100604b66cf4a3c8bb65549bb2c2dc58647e4c 但是此时我又想回到第三次提交的状态,可运行 git reflog 然后运行 git reset --hard f66c7a7 2.git patch git生成patch的两种方式:git diff  和 git format-patch

【转】git命令

Git使用 1. git pull    更新服务器代码到本地a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支 2. git push    将本地代码提交到服务器 3. git log    查看提交信息a). git log -p    查看历次的log信息及更改情况b). git log -p -4    查看距现在最近的4次的log信息及更改情况c). git log frameworks/    查看关于framewor