git 使用总结

生成patch

git diff:生产本次modify的内容

#只想将test.c 文件的modify 生成patch文件
git diif test.c > test.c.patch	

将所有modify 文件生成patch文件
git diff > all.patch

git format-patch:生成commit的内容

生成最近1次的commit的patch
git format-patch HEAD^

生成最近2次的commit的patch
git format-patch HEAD^^

生成最近3次的commit的patch
git format-patch HEAD^^^

生成最近4次commit的patch
git format-patch HEAD^^^^

将两个commit以及中间的所有commit生成patch
git format-patch <commit1_hash>..<commit2_hash>

生成单个commit的patch
git format-patch -1 <commit_hash>

将某个commit(不包括)之后的提交,打成patch
git format-patch <commit_hash>

将某个commit(包括)之前的所有提交,打成patch
git format-patch --root <commit_hash>

打patch

检查patch

查看patch的情况
git apply --stat xx.patch

检查patch与当前分支合并时,是否有冲突
git apply --check xx.patch

git apply 对应 git diff

打上新来的改动
git apply xx.patch

git am 对应 git format-patch

合并新来的commit patch
git am *.patch

合并时,签上打patch人的名字
git am --signoff *.patch

放弃本次打的patch
git am --abort

当git am 失败,解决完冲突后,接着执行未完成的patch
git am --resolved

git apply 与 git am的区别

git apply只更新改动内容,打完之后需要自己git addgit commit
git am是更新的commit,会将commit的所有信息打上去,author也是patch的author而不打patch的人。

打patch发生冲突

如果不想打这次patch了,直接git am --abort
如果还想继续,采用以下方法:

  1. 根据git am失败的信息,找到发生冲突的具体patch文件,然后git apply --reject <patch_name>,发生冲突的部分会保存为patch_name.rej文件;
  2. 根据patch_name.rej文件,修改该patch文件来解决冲突;
  3. 执行git am --abort命令,取消第一步的操作;
  4. 再重新执行git am *.patch命令即可

从别的分支里挑出某个commit进行合入

git cherry-pick commit_hash

posted @ 2021-05-28 17:03  海林的菜园子  阅读(186)  评论(0编辑  收藏  举报