Git版本管理(02)patch操作和分支操作整理

这篇具有很好参考价值的文章主要介绍了Git版本管理(02)patch操作和分支操作整理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 git patch操作

1.1 git diff比较

使用git diff用于显示当前工作区与暂存区或提交历史之间的差异,如果使用它生成patch,则需要使用git apply命令来引入patch,比如:

$git diff A.cpp >commit.patch

1.2 git patch打包

使用git format-patch生成patch,如下所示:

# 打包最近的一个patch:
$git format-patch HEAD^
# 打包最近的两个patch
$git format-patch HEAD^^
# 打包最近的三个patch
$git format-patch HEAD^^^
# 打包最近的n个patch
$git format-patch -n
# 打包版本n1与n2之间的patch
$git format-patch -n1 -n2
# 某次提交以后的所有patch,不包含此次提交,两者等价
$ git format-patch -s 5d7c81a2b
$ git format-patch 5d7c81a2b

打包好后会生成0001-XXX.patch 这样格式的patch,使用git am(自动提交) /git apply 来merge patch即可。

1.3 git am操作总结

@1 批量am操作

如果patch有很多且都是这种0001、0002,即由git format-patch批量生成,则直接执行命令:

$git am  ./patch/*.patch

注意:这里的*.patch需要是生成时就做了自动排序的,比如git format-patch批量生成。

如果有如下报错:

git/rebase-apply/patch:272730: trailing whitespace.
struct gpio_pins {    
.git/rebase-apply/patch:272752: trailing whitespace.
    
.git/rebase-apply/patch:272814: trailing whitespace.
    gpio_direction_output(data->ipd_hall_en,1);    
.git/rebase-apply/patch:272841: trailing whitespace.
        
.git/rebase-apply/patch:272874: trailing whitespace.
    printk(KERN_ERR"GpioCtl_open\n");    
warning: squelched 39 whitespace errors
warning: 44 lines add whitespace errors.

则执行:

$git am --whitespace=fix 0001-xxx.patch

会自动修复一部分 whitespace errors

@2 冲突修复

如果git am时报错,如下所示:

warning: quoted CRLF detected
Applying: update code
error: patch failed: LINUX/android/kernel/ship_prebuilt/secondary_kernel/scripts/.asn1_compiler.cmd:1
error: LINUX/android/kernel/ship_prebuilt/secondary_kernel/scripts/.asn1_compiler.cmd: patch does not apply
error: patch failed: LINUX/android/kernel/ship_prebuilt/secondary_kernel/scripts/.bin2c.cmd:1
error: LINUX/android/kernel/ship_prebuilt/secondary_kernel/scripts/.bin2c.cmd: patch does not apply
...

那么接下怎么做呢?先执行

$git apply --reject 0001-xxx.patch

这时会在文件目录下产生 .rej 后缀的文件,里面就是无法自动合并的冲突,需要手动修改。手动修改正确后再将rej文件删除即可。

因为属于modified状态,因此需要执行

$git add xxx

操作之后再继续执行
 

$git am --continue

就这样,直到所有patch都正确merge即可。

1.4 git diff和git format-patch的区别

git diff和git format-patch是Git中用于生成补丁和差异的命令,它们之间的主要区别如下:

  • git diff:git diff命令用于显示当前工作区与暂存区或提交历史之间的差异。可以显示文件的修改内容,包括添加、删除和修改的行。可以使用不同的选项和参数来控制差异的显示方式,比如显示具体的文件差异、忽略空白字符等。git diff通常用于查看尚未暂存或提交的更改,以帮助你了解当前工作区的状态和修改内容。
  • git format-patch:git format-patch命令用于生成补丁文件(patch files),它将一系列提交转换为可应用的补丁文件。git format-patch会为每个提交创建一个单独的补丁文件,每个补丁文件包含了该提交的所有修改内容。生成的补丁文件一般以.patch扩展名结尾,可以通过邮件或其他方式传递给他人,以便他们应用这些补丁到他们的代码库中。补丁文件包含了修改的具体内容,包括添加、删除和修改的行,以及与之相关的提交信息。git format-patch命令可以使用不同的选项和参数来控制生成补丁文件的方式,比如指定要处理的提交范围、生成多个补丁文件等。

总结来说:git diff用于显示当前工作区与暂存区或提交历史之间的差异,用于查看尚未暂存或提交的更改。git format-patch用于将提交转换为补丁文件,每个补丁文件包含了一个提交的所有修改内容,用于传递和应用补丁。这两个命令在不同的场景下有不同的用途,根据你的需求选择适合的命令来查看差异或生成补丁。文章来源地址https://www.toymoban.com/news/detail-774226.html

2 git分支操作

2.1 基本操作

# 在master分支下保证当前代码与线上同步。
$git pull origin master 
# 查看远程分支
$git branch -r
# 查看本地和远程的所有分支
$git branch -a

2.2 新建 / 切换分支

#新建分支
$git branch <分支名> 
#切换到新建的分支
$git checkout/switch <分支名> 
#优化操作,创建分支的同时再切换到该分支
$git checkout -b <分支名> 

2.3 提交分支到远端

# 把本地分支推到远端,让远端也有一个你的分支,用来后面提交你的代码
$git push origin <分支名> 

2.4 合并分支

# 合并分支,在当前分支下将 <分支>合并到当前分支,合并冲突后手动解决冲突
# 解决后使用git commit -m "Merge branchname into current branch"来完成了分支的合并操作
# 如果有冲突则需要先解决冲突再最后提交,其中
# 介于 <<<<<<<HEAD 和 ======= 之间的内容是代码块1中内容,
# 介于 ======= 和 >>>>>>> 之间的内容是代码块2中内容。
$git merge <分支名>

2.5 删除分支

# 删除分支,注意,只有当该分支的修改已经合并到其他分支时,才能被安全地删除。如果分支的修改尚未合并,可以使用强制删除的命令
git branch -d <分支名>  
# 分支的修改尚未合并,强制删除分支
git branch -D <分支名>   

2.6 重命名本地分支

$git branch -m <oldbranch> <newbranch>

到了这里,关于Git版本管理(02)patch操作和分支操作整理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • GIT —— 基本操作,分支管理,远程操作

    最近找实习,在完善简历,遂发一发存货,有待持续完善,我认为这部分非常的有意义 创建 配置 将配置生效于 当前机器的 所有仓库 删除配置/删除全局配置 .git :版本库,不允许手欠做任何修改! stage/ 或 index/ :暂存区,索引 gitcode/ : 工作区 修改的工作区内容会写入**对

    2024年02月11日
    浏览(69)
  • Chromium的Git版本分支合并、切换等管理

    源码同步 1)git 初始配置 2)创建目录 3)拉取代码 fetch chromium 4)同步依赖库 gclient sync 5)源码更新 进入src目录,运行 git rebase-update。 同步完成后再运行gclinet sync -D 更新第三方库等。 远程tag 创建本地相应版本支使用命令: git checkout -b 114.0.5735.134 114.0.5735.134 后面需要运行

    2024年02月08日
    浏览(39)
  • git diff两个分支有差异git merge却显示没有可以合并的内容

    problem: 用git diff可以发现两个分支还是有很多不一样的地方,可用git merge显示not something we can merge 输入gitk查看,发现preview已经在这个分支前面了。。。虽然不太懂,但这样是没办法将preview合并当前分支的,只能这个分支合并preview。。。 解决:因为也不会别的解决方法,因

    2024年02月12日
    浏览(50)
  • git补丁操作:git生成patch和应用patch

    一、生成patch 1、拉取代码仓 2、在clone到本地的代码目录中,例如对README.md文件进行了修改。然后使用 git status 命令查看工作目录和暂存区的状态。   (示例修改是在README.md文件开头添加了如下内容)   3、生成patch   查看README.patch的内容(可以用Notepad++)   二、应用patch

    2024年02月12日
    浏览(63)
  • 如何通过TortoiseGit工具查看Git管理的版本分支图

    先上一张图: 选中仓库,鼠标右击 - TortoiseGit - (版本分支图)Revision graph,即可打开版本分支图。 红色:当前分支,也就是当前正在使用的分支。 绿色:本地分支,也就是存在于本地 Git 仓库中的分支,它们存储在你的计算机上。 粉红:远端分支,也就是存在于远程 Git 仓库

    2024年02月04日
    浏览(65)
  • Git 分支管理:优化版本控制与应急处理的关键策略

    在 Git 中,分支是主仓库的新/独立版本。 假设你有一个大型项目,需要对其进行设计更新。 没有使用 Git 时: 复制所有相关文件以避免影响实时版本 开始进行设计工作,并发现代码依赖于其他文件中的代码,这些文件也需要更改! 复制相关文件,确保每个文件依赖项引用正

    2024年03月09日
    浏览(57)
  • 【小吉带你学Git】idea操作(2)_版本和分支的相关操作

    🎊专栏【Git】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题🥰 编译环境可能因为idea的版本不同而不同,请以实际的为准。 将IDEA与Git集成有很多用处,它能够为开发人员带来许多便利和优势。以下是将

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

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

    2024年02月11日
    浏览(51)
  • 五、Git本地仓库基本操作——分支管理

    我们在初始化git仓库的时候,会默认创建一个master分支,HEAD指针这时就会默认执行master分支。当我们在master分支提交(commit)了更新之后,master分支就会指向当前当前最新的commit。看下图比较好理解: 但是随着时间的推移,我们可能会一个版本在原来的基础上改动很大,或

    2024年02月04日
    浏览(58)
  • Git学习(一)基于本地操作:Git初识、Git安装(Linux-ubuntu)、Git 基本操作、分支管理

    目录 Git 初识 Git 安装(Linux-ubuntu) Git 基本操作 创建 Git 本地仓库 配置 Git 认识工作区、暂存区、版本库 添加文件 查看 .git 文件 修改文件 版本回退 撤销修改 情况一:对于工作区的代码,还没有 add 情况二:已经 add ,但没有 commit 情况三:已经 add ,并且也 commit 了  删除文

    2024年04月08日
    浏览(62)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包