博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git am
阅读量:3730 次
发布时间:2019-05-22

本文共 2520 字,大约阅读时间需要 8 分钟。

1.背景

一般而言,为了保留git log的记录,我们在做patch的时候会使用git format patch的命令来生成一个patch,在应用patch的时候会选择git am来打上patch.一般的patch会包含N个文件的补丁,假设

有其中一个文件发生了conflict,那么am的过程就会停止,这时候需要我们手动去解决冲突,然后才能继续.

2.用到的命令

git format-patch -N   //制作一个补丁,N表示生成几个patch,默认是一笔commit一个patchgit am (--continue | --skip | --abort) PATCH_NAME  //打补丁git apply --reject  PATCH_NAME  //强制应用补丁git add FILE_NAME //添加到缓冲区   
1
2
3
4
5

3.过程

1.>git format-patch -1 生成一个patch:0001-modify-contents.patch,又或许这个patch是别人给你的   
1
2
3

2.>git am 0001-modify-contents.patch    出现下面的log,说明am的过程发生了错误    Applying: modify contents    error: file1.c: does not match index    error: patch failed: file2.c:0    error: file2.c: patch does not apply    error: patch failed: file3.c:0    error: file3.c: patch does not apply    Patch failed at 0001 modify contents    The copy of the patch that failed is found in: .git/rebase-apply/patch    When you have resolved this problem, run "git am --continue".    If you prefer to skip this patch, run "git am --skip" instead.    To restore the original branch and stop patching, run "git am --abort".   
1
2
3
4
5
6
7
8
9
10
11
12
13
14

3.>git status 可以看到下面的log.说明am过程暂时停止了,但是还处在am的对话中.       You are in the middle of an am session.      (fix conflicts and then run "git am --continue")      (use "git am --skip" to skip this patch)      (use "git am --abort" to restore the original branch)   
1
2
3
4
5
6

4.>git apply --reject 0001-modify-contents.patch    出现下面的log,说明file1,file2,file3发生了冲突,无法自动合并:    Checking patch file1.c...    error: while searching for:    error: patch failed: file1.c:0    Checking patch file2.c...    error: while searching for:    error: patch failed: file2.c:0    Checking patch file3.c...    error: while searching for:    error: patch failed: file3.c:0    Applying patch file1.c with 1 reject...    Rejected hunk #1.    Applying patch file2.c with 1 reject...    Rejected hunk #1.    Applying patch file3.c with 1 reject...    这时候在当前的目录下针对patch fail的文件会生成fileX.rej.这些文件的内容就是发生冲突的地方, 手动修正就好.   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

5.将修正好的fileX.c add到缓冲区里去.  >git add .   假设本文件夹下还有一些是untracked的文件的话,还是建议用git add 特定的文件比较好   
1
2
3
4

6.>git am --resolved     然后就会显示:    Applying: XXXXX.    XXXXX就是那笔patch本身的log信息    然后git log 就能看到那笔patch打上去了   
1
2
3
4
5
6

转载地址:http://gbzin.baihongyu.com/

你可能感兴趣的文章
Django-rest-framework简单使用
查看>>
Django REST Framework提供的视图
查看>>
Django REST Framework之视图
查看>>
GIT版本管理工具教程
查看>>
Django xadmin安装及使用
查看>>
一文搞懂JWT
查看>>
Django Form表单组件详解
查看>>
富文本编辑器的快速上手
查看>>
DRF之认证权限组件
查看>>
DRF之限流组件
查看>>
DRF之过滤排序组件
查看>>
DRF之分页组件
查看>>
DRF之异常处理组件
查看>>
DRF之自动生成接口文档
查看>>
一文搞懂Celery
查看>>
django接入qq登陆
查看>>
FastDfs
查看>>
最简明的冒烟测试
查看>>
最全,最简明的图文算法总结
查看>>
购物车流程
查看>>