【git】代码patch包生成和合入

这篇具有很好参考价值的文章主要介绍了【git】代码patch包生成和合入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

patch合入

git am

git am会直接将patch的所有信息打上去,而且不用重新git add和git commit,author也是patch的author而不是打patch的人

常用命令

git am 0001-limit-log-function.patch           # 将名字为0001-limit-log-function.patch的patch打上
git am --signoff 0001-limit-log-function.patch # 添加-s或者--signoff,还可以把自己的名字添加为signed off by信息,作用是注明打patch的人是谁,因为有时打patch的人并不是patch的作者
git am ~/patch-set/*.patch                     # 将路径~/patch-set/*.patch 按照先后顺序打上
git am --abort                                 # 当git am失败时,用以将已经在am过程中打上的patch废弃掉(比如有三个patch,打到第三个patch时有冲突,那么这条命令会把打上的前两个patch丢弃掉,返回没有打patch的状态)
git am --resolved                              # 当git am失败,解决完冲突后,这条命令会接着打patch

如有提示“patch does not apply”,表示patch冲突,手动解决完冲突后,继续合入

git am --continue

或者忽略

git am --skip

或者停止合入

git am --abort

git apply

git apply是将补丁文件应用到代码库中,但不会自动创建提交记录。而且使用git apply可以快速地测试一个补丁,检查它是否会导致任何问题或冲突,但是需要手动创建提交记录来记录这个补丁被应用了。但是git apply并不会将commit message等打上去,打完patch后需要重新git add和git commit。

常用命令

git apply --stat 0001-limit-log-function.patch          # 查看patch的情况
git apply --check 0001-limit-log-function.patch         # 检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上

打入patch

git apply xxx.patch

如果git与需要打patch的文件不在一个目录(git 在framework下,patch要打入到frameworks/base/下)

git apply --check --directory=base/ xxx.patch
git apply --directory=base/ xxx.patch

如果有冲突,可以先导出冲突

git apply --reject xxxx.patch

此时在代码工程路径下生成.rej结尾的冲突文件,手动修改完冲突点后

git add 修改文件

然后解决冲突后合入

git am --resolved

patch生成

git format-patch

常用命令

git format-patch HEAD^       #生成最近的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 <r1>..<r2>  #生成两个commit间的修改的patch(包含两个commit. <r1>和<r2>都是具体的commit号)
git format-patch -1 <r1>     #生成单个commit的patch
git format-patch <r1>        #生成某commit以来的修改patch(不包含该commit)
git format-patch --root <r1> #生成从根到r1提交的所有patch

git diff

将所有修改文件打包成patch

git diff > test.patch

只生成一个文件的patch

git diff test.c > test.patch

使用实例

当需要将一笔commit的修改打入到新的代码仓库时:

1.生成那笔提交的patch包

git format-patch -1 commit_id

2.将生成的patch包放入代码仓库中,然后检测能否正常合入

git apply --check xxxx.patch

如果有这样的类似报错,说明有冲突

git合入patch文件,版本管理,git

3.使用am命令合入patch,有冲突的文件则会生成.rej文件

git am XXX.patch --reject

4.手动处理完冲突后,将待提交完成add到暂存区,然后am continue就可以将这一笔提交的全部信息(包括原提交的作者信息和描述)都合入到新代码仓库中了

git add xxxx/xxxx
git am --continue











参考文章:

https://zhuanlan.zhihu.com/p/104055075文章来源地址https://www.toymoban.com/news/detail-761731.html

到了这里,关于【git】代码patch包生成和合入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 代码版本管理工具 git

    1.  去B站看视频学习,只看前39集: 01-Git概述(Git历史)_哔哩哔哩_bilibili 2.学习Linux系统文本编辑器的使用 vi编辑器操作指令分享 (baidu.com) (13条消息) nano编辑器的使用_SudekiMing的博客-CSDN博客 windows 下载安装 Git 官方下载地址: Git - Downloading Package 安装图解: https://www.cnblogs

    2024年02月04日
    浏览(62)
  • 局域网搭建Git代码版本管理仓库

    零、前期准备 前期准备: 1、 准备两个电脑, 一个远程PC , 一个本地PC 2、 本地PC安装git小乌龟 ( TortoiseGit) 一、局域网建立共享文件夹 1、 远程PC建立共享文件夹 远程PC新建一个名字叫做share的文件夹 右键打开属性界面 选择共享 选择Everyone 点击添加 点击共享 二、创建版本

    2024年02月07日
    浏览(38)
  • Visual Studio2022 使用git进行代码版本管理

    存储库位置: 就是自己创建的Git仓库的位置,例如,我的远程仓库在Gitee上面,找到远程仓库要下载的项目,点克隆,把HTTPS 路径复制,粘贴到存储库位置。 路径: 克隆下来的项目,存储在本地仓库的目录(本地仓库) 拉取和提取的区别: 拉取: 如果当前存在 未同步的代码

    2024年02月08日
    浏览(52)
  • 【Shell 命令集合 文件管理】Linux 补丁文件应用命令 patch命令使用指南

    Shell 命令专栏:Linux Shell 命令全解析 在Linux中, patch 命令用于将补丁文件应用到源代码文件中,从而实现对源代码的修改。 patch 命令的详细描述如下: patch 命令用于将补丁文件应用到源代码文件中,以实现对源代码的修改。补丁文件通常是由开发者或者社区提供的,用于修

    2024年02月09日
    浏览(109)
  • 使用Git对Word或Excel文件进行版本管理

    我们在使用Word编辑文档,或者使用Excel表格计算时,时常想,要是有个版本管理工具能把我们的文档或表格管理起来就好了,好让我们可以“昨日重现”,而不至人为失误而后悔不迭。 git就是一个使用便捷,功能强大的工具,在编程界可谓鼎鼎大名,可以说是程序员的必备工

    2024年02月10日
    浏览(52)
  • 代码管理git生成ssh key (公钥私钥)配置GitLab

    git在我们日常项目管理中起了很大的作用,是我们能够更好地管理我们的代码,git的管理是基于ssh密钥进行的,所以在使用前我们需要进行ssh配置。 首先我们需要配置user name和email 配置完成我们需要去查看我们本地是否已经存在.ssh文件夹(一般存在c盘用户下面,也可使用命令

    2024年02月16日
    浏览(65)
  • Git的常用命令,及还原文件的指定版本,及分支管理

    一.git 常用命令 二.还原文件的指定版本(从版本库中恢复文件) 怎么查看最后一次提交id 显示下面的结果 然后使用下面命令,就会恢复之前的修改 三.分支管理 创建分支分为两种情况 一.第一种情况 创建仓库时就把分支创建出来 2.第二种情况 已有仓库,在创建分支 3.修改分

    2024年02月11日
    浏览(52)
  • Git的下载安装配置与上传文件以及命令 idea使用git项目版本操作管理

    Git - Downloads (git-scm.com) https://git-scm.com/downloads  下载速度比较慢,可以用迅雷下载,速度很快 我这里是用的压缩包版本,直接解压到要放的文件夹即可,文件名尽量不要使用中文,以防后续使用出现错误。  打开环境变量,在系统变Path,添加你的git安装路径/bin win+r输入cmd,

    2024年02月04日
    浏览(66)
  • 【代码管理】Git删除仓库中的大文件压缩仓库大小

    Git 仓库中有时会不小心加入了一些大文件,例如模型文件,视频文件 模型文件有可能以 .weights 结尾,或者 .onnx 结尾等等 视频文件有可能以 .avi 结尾,或者 .mp4 结尾 大文件如果一直在仓库中,仓库体积会非常大,下面我们提供一个脚本,专门用于清理 仓库中的文件使用。

    2024年04月26日
    浏览(39)
  • git使用patch进行补丁操作

    在软件开发中,代码协作和版本管理是至关重要的。Git 是一个流行的分布式版本控制系统,它提供了各种功能来简化团队合作和代码管理。但是如何给已有项目打补丁,如何在线上运行的项目做增量修改是运维以及开发者需要掌握的一个比较高级的git技术,本文将介绍如何使

    2024年02月04日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包