需要的小工具

一、git reset /HAARD/…

$ git reset --hard HEAD	#恢复当前版本,删除工作区和缓存区的修改
$ git reset --soft HEAD^	#恢复上一个版本,保留工作区,缓存区准备再次提交commit
$ git reset --mixed HEAD	#恢复当前版本,保留工作区,清空缓存区
$ git reset --hard 1094a	#切换到特定版本号,并删除工作区和缓存区的修改

#场景1:修改仅存在工作区
$ git checkout -- readme.txt # 单文件
#场景2:修改存在暂存区、工作区
$ git reset HEAD readme.txt
$ git checkout -- readme.txt
#场景3:修改存在版本库、暂存区、工作区
$ git reset --hard 1094a

二、git apply /am /patch

一:生成patch 和打patch 

有这样的 目录层次 x/xx/xxx/xxx/test.c

我的当前位置是在 x/  下 ,执行   git diff> test.patch
在test.patch补丁文件里的路径信息是这样的:
 - - - a/xx/xxx/xxx   

+++b/xx/xxx/xxx   

如果 应用 test.patch 的时候的 位置 是在 x/ 下,

执行:

patch -p1 < test.patch
--------------------------------------

git diff> test.patch,这是产生patch的方式。

注意,使用gitdiff产生的patch都应该在执行 patch 命令时,  指定-p1,当 位置是 【在哪里制作的patch,就在哪里 执行】


git apply 0006-Philips-VSO-library-Report-only-the-actual-data-to-a.patch
git am --reject 0006-Philips-VSO-library-Report-only-the-actual-data-to-a.patch

三、 Reversed (or previously applied) patch detected! Assume -R? [n]

-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.”之类的现象 。

四、切换分支失败

直接git reset --hard master,直接从仓库中拉出覆写暂存区和工作区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值