【git】学习笔记

CAN总线错误帧全解析:从数据包到硬件层的故障树分析 本文深入解析CAN总线错误帧的故障树分析方法,从数据包到硬件层全面剖析错误机制。通过物理层信号测试、数据链路层错误解码和应用层协议排查,提供系统化的诊断框架。结合CANoe配置和示波器波形分析,帮助工程师快速定位总线故障,提升系统可靠性。 阅读详情

一、基础篇

1、提交:git commit

git commit

2、创建分支: git branch

git branch [<分支名字>]

#比如:
git branch newImage

3、切换分支 :git checkout / git switch

说明:git 2.23+推荐使用git switch

git checkout <分支名>
# 或(Git 2.23+ 推荐)
git switch <分支名>
git switch <要切换的分支名字>

4、创建一个新的分支同时切换到新创建的分支:git checkout -b

git switch -b <新分支名字>

5、合并分支:git merge / git rebase

  • 方法一:git merge <要合并的分支>
# 将新分支bugFix合并到main分支
# 首先要先切换到main分支
git switch main
git merge bugFix
  • 方法二:git rebase
    在这里插入图片描述
    注意,提交记录 C3 依然存在(树上那个半透明的节点),而 C3’ 是我们 Rebase 到 main 分支上的 C3 的副本。

现在唯一的问题就是 main 还没有更新,下面咱们就来更新它吧……
在这里插入图片描述

# 目前存在两个分支bugFix(进行了一次提交)、main(进行了一次提交),目前在main分支,现要合并到main分支
# 首先要先切换到bugFix分支,再rebase到main上
git switch bugFix
git rebase main

# 或者直接将bugFix分支合并到main上
git rebase main bugFix

二、高级篇

1、分离的HEAD

  • 我的理解就是:就是将原本指向分支,改为指向某个分支上具体的提交记录。
    - HEAD:总是指向当前分支上最近一次的提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。HEAD 通常情况下是指向分支名的(如 bugFix)。
    在这里插入图片描述
    在这里插入图片描述

2、相对引用

  • ^操作符
    在这里插入图片描述
    在这里插入图片描述
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/94edbccc9cdb4e33b62de6a481b07406.png

比如,要想切换到bugFix分支的parent节点,那么可以这样做:

git checkout bugFix^
  • ~操作符

如果想在提交树中移动很多步的话,就可以使用~操作符,该操作符后面可以跟一个数字(可选,不跟数字时与 ^ 相同,向上移动一次),指定向上移动多少次。

强制修改分支位置:git branch -f git

比如:以下命令会将main分支强制指向HEAD的第 3 级 parent 提交。

git branch -f main HEAD~3

3、撤销变更: git reset / git revert

需要先移动到本次要撤销提交的分支,再进行撤销提交操作。

  • git reset
    在这里插入图片描述
  • git revert
    在这里插入图片描述

三、拓展

1、 整理提交记录:git cherry-pick

  • 到现在我们已经学习了 Git 的基础知识 —— 提交、分支以及在提交树上移动。 这些概念涵盖了 Git 90% 的功能,同样也足够满足开发者的日常需求

  • 然而, 剩余的 10% 在处理复杂的工作流时(或者当你陷入困惑时)可能就显得尤为重要了。接下来要讨论的这个话题是“整理提交记录” —— 开发人员有时会说“我想要把这个提交放到这里, 那个提交放到刚才那个提交的后面”, 而接下来就讲的就是它的实现方式,非常清晰、灵活,还很生动。

本系列的第一个命令是 git cherry-pick, 命令形式为:

git cherry-pick <提交号>...

如果你想将一些提交复制到当前所在的位置(HEAD)下面的话, Cherry-pick 是最直接的方式了。我个人非常喜欢 cherry-pick,因为它特别简单。

咱们还是通过例子来看一下!
在这里插入图片描述

2、交互式的 rebase:git rebase -i

  • 当你知道你所需要的提交记录(并且还知道这些提交记录的哈希值)时, 用 cherry-pick 再好不过了 —— 没有比这更简单的方式了。

  • 但是如果你不清楚你想要的提交记录的哈希值呢? 幸好 Git 帮你想到了这一点, 我们可以利用交互式的 rebase —— 如果你想从一系列的提交记录中找到想要的记录, 这就是最好的方法了

  • 交互式 rebase 指的是使用带参数 --interactive 的 rebase 命令, 简写为 -i

比如:

git rebase -i HEAD~4
  • 如果你在命令后增加了这个选项, Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。

  • 在实际使用时,所谓的 UI 窗口一般会在文本编辑器 —— 如 Vim —— 中打开一个文件。 在该窗口中可以对提交记录拖拽更改提交顺序,以及删除某个不想要的提交。

3、 本地栈式提交

来看一个在开发中经常会遇到的情况:我正在解决某个特别棘手的 Bug,为了便于调试而在代码中添加了一些调试命令并向控制台打印了一些信息。

这些调试和打印语句都在它们各自的提交记录里。最后我终于找到了造成这个 Bug 的根本原因,解决掉以后觉得沾沾自喜!

最后就差把 bugFix 分支里的工作合并回 main 分支了。你可以选择通过 fast-forward 快速合并到 main 分支上,但这样的话 main 分支就会包含我这些调试语句了。你肯定不想这样,应该还有更好的方式……

实际我们只要让 Git 复制解决问题的那一个提交记录就可以了。跟之前我们在“整理提交记录”中学到的一样,我们可以使用

# 打开一个UI界面,将在UI页面中进行的操作复制到想要复制的节点下
git rebase -i <想要复制到的节点/分支>

# 复制想要的提交到HEAD下
git cherry-pick <提交号>... 
# 比如
git cherry-pick c1 c2

来达到目的。

cherry-pick 可以将提交树上的任何地方的提交记录提取过来追加到 HEAD 上(只要不是 HEAD 上游的提交就没问题)

4、git tag

相信通过前面课程的学习你已经发现了:分支很容易被人为移动,并且当有新的提交时,它也会移动。分支很容易被改变,大部分分支还只是临时的,并且还一直在变。

你可能会问了:有没有什么可以永远指向某个提交记录的标识呢,比如软件发布新的大版本,或者是修正一些重要的 Bug 或是增加了某些新特性,有没有比分支更好的可以永远指向这些提交的方法呢?

当然有了!Git 的 tag 就是干这个用的啊,它们可以(在某种程度上 —— 因为标签可以被删除后重新在另外一个位置创建同名的标签)永久地将某个特定的提交命名为里程碑,然后就可以像分支一样引用了。

更难得的是,它们并不会随着新的提交而移动。你也不能切换到某个标签上面进行修改提交,它就像是提交树上的一个锚点,标识了某个特定的位置。

创建标签:

git tag V1 C1  # 建立一个标签,指向提交记录 C1,表示这是我们 1.0 版本

在这里插入图片描述

5、 Git Ddescribe

由于标签在代码库中起着“锚点”的作用,Git 还为此专门设计了一个命令用来描述离你最近的锚点(也就是标签),它就是 git describe!

Git Describe 能帮你在提交历史中移动了多次以后找到方向;

  • git describe 的​​语法是:
git describe <ref>

<ref> 可以是任何能被 Git 识别成提交记录的引用,如果你没有指定的话,Git 会使用你目前所在的位置(HEAD)。

它输出的结果是这样的:

<tag>_<numCommits>_g<hash>

tag 表示的是离 ref 最近的标签, numCommits 是表示这个 ref 与 tag 相差有多少个提交记录, hash 表示的是你所给定的 ref 所表示的提交记录哈希值的前几位。

当 ref 提交记录上有某个标签时,则只输出标签名称
在这里插入图片描述

6、多分支合并(rebase)

让我们把所有这些分支上所做的工作都通过rebase合并到main分支上吧。但是你的领导给你提了点要求一他们希望得到有序的提交历史,也就是我们最终的结果应该是C6’在C?上面,C5′在C6上面,依此类推。

在这里插入图片描述

git rebase main bugFix
git rebase bugFix side
git rebase side another
git rebase another main

7、选择 parent 提交记录

示例1:

git checkout main^

在这里插入图片描述

git checkout main^2

在这里插入图片描述

示例2:

在这里插入图片描述
上图的操作符还支持链式操作,以上的3条指令可以用下面1条指令替代:

git checkout HEAD~^2~2

示例3:

要求:在提交树的某个节点创建新的分支

在这里插入图片描述
实现方式:

git branch bugWork main^^2~

四、远程仓库

在这里插入图片描述

1、远程仓库的命名规范

  • <remote name>/<branch name>
    在这里插入图片描述
    在这里插入图片描述

2、git fetch:从远程仓库获取数据

在这里插入图片描述

先来看一下示例:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、git pull

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、push

在这里插入图片描述

示例1:

在这里插入图片描述

历史偏离

在这里插入图片描述
示例:
在这里插入图片描述

如何解决上述问题呢?可以使用git rebase

在这里插入图片描述

或者使用 git merge
在这里插入图片描述

或者直接使用git pull --rebase

在这里插入图片描述

SAP PI 系统复制,不只是把数据库拷过去,而是一次集成拓扑的重新落位 文章摘要:SAP PI/PO系统刷新生产数据到测试环境时,标准系统复制无法自动处理集成中枢特有的环境绑定问题。系统复制后,PI仍保留生产环境的连接配置,可能导致测试系统向生产环境发送消息。SAP提供的CTC模板可自动化部分后续配置,但无法替代人工对接口风险的全面评估。关键在于系统复制前绘制接口风险地图,复制后进行分层次验证:禁用生产连接、重定向测试接口、复核安全配置,并通过代表性链路测试确保系统行为符合预期。这需要结合SAP标准流程与业务语义判断,形成完整的治理闭环。 阅读详情

相关推荐

FreeModbus源码详解

本篇按照FreeModbus协议栈的工作流程,对源代码进行总结解析;FreeModbus协议栈作为从机,等待主机传送的数据,当从机接收到一帧完整的报文后,对报文进行解析,然后响应主机,发送报文给主机,实现主机和从机之间的通信; 1:demo.c中三个函数,完成协议栈的准备工作; eMBInit()函数:(mb.c) /*函数功能: *1:实现RTU模式和ASCALL模式的协议栈初始化; *2

2万+

Git 学习笔记

个人对 Git 初步学习的理解以及记录

m0_73959697的博客 2110

2.4G跳频算法 2.4G切信道算法 (简例示意nRF52832)

2.4G跳频算法 nRF52832示例 2.4G自适应信道算法

Peter.Min 956

GIT 学习笔记

GIT 学习笔记 --- 思维导图

weijinhua_123的博客 458

滤波器初步入门(非常全面)

主要关注的是-3dB这个点,-3dB就是截止频率所对应的点,我们把功率降至50%以下的信号定义为被衰减掉了(但要跟实际情况相结合,有些信号衰减-3db不够,需要衰减更多)-3dB这个点对应我们的电压来说是0.707。设计电路可以留一定的余量,如果你把4k设计为截止频率,那么4k时候衰减倍数为-3dB通常是不够的,你可以将截止频率设为2k,那么4k的衰减就可以达到15dB(假设),根据自己的需要去设计对应的截止频率。理想的滤波器是当输入的信号频率大于截止频率时,大于部分的频率对应的电压信号直接归0。

yybyybds的博客 5720

BLHeli_S电调刷Bluejay固件实战:解锁双向DShot与RPM滤波全攻略

本文详细介绍了如何为BLHeli_S电调刷写开源Bluejay固件,以解锁双向DShot协议与RPM滤波等关键功能。内容涵盖硬件兼容性检查、固件刷写全流程、双向DShot启用与OSD报错解决方案,并对48kHz与96kHz PWM频率的选择提供了实战建议,帮助穿越机玩家在不更换硬件的前提下显著提升飞行性能与操控体验。

weixin_29188997的博客 512

Git学习笔记之——常见指令

Git学习笔记之-------常见指令 工作区\暂存区\仓库 说明 git config --global user.name “名称” 注册用户名 git config --global user.email “邮箱” 注册用户邮箱 git init 在当前文件夹建立Git项目 git mv game.py wordgame.py 本地安全地修改文件名 git ...

iot小胡的博客 377

LTX-2.3 V1.6:8G显存本地AI视频生成工具与int8量化加速实践

这次我们来看一个本地部署的AI视频生成工具——LTX-2.3文字图片生成带音频视频工具V1.6版本。这个工具最大的特点是支持int8量化加速,相比原版提速2-4倍,效果更好,而且8G显存就能运行,不需要搭建复杂环境,解压即可使用。 对于想要在本地电脑上快速生成带音频视频内容的用户来说,这个工具解决了几个关键痛点:首先是硬件门槛低,8G显存意味着大多数主流游戏显卡都能胜任;其次是部署简单,避免了Python环境配置、依赖包冲突等常见问题;最后是性能优化明显,int8加速让生成速度大幅提升。 本文会重点演示如何

hqmln的博客 1235

git学习笔记

git学习下载 Git-2.19.1-64-bit 包 以及git安装步骤和git常用命令

解决bug的路上 243

华为防火墙NAT避坑指南:当双ISP出口遇到服务器发布,这些细节不注意会翻车

本文深入解析华为防火墙在双ISP出口环境下服务器发布的实战配置,重点探讨no-reverse参数对Server-Map表的影响、源进源出功能的实现及线路切换时的会话保持问题。通过策略路由和智能选路技术,确保HTTP/FTP服务在多运营商链路中的高可用性,避免路径不对称和NAT映射冲突等常见陷阱。

weixin_30897233的博客 550

C++从入门到进阶的系列书籍推荐(22本书)

要多读书,读好书!一本书要多读几遍才好,每次都可能有新的收获!特别在是有一定的工作年限和工作经验之后!读书百遍,其义自见! 下面就给大家推荐一下C++程序员进阶需要读的经典书籍: 1、C++入门书籍 C++是在C语言的基础上发展而来的,要学习C++之前需要先学习C语言。有了C语言基础之后再去学习C++。 1.1、C语言程序设计(谭浩强) 该书被公认为学习C语言程序设计的优秀教材,被全国大多数高校选用,是学习C语言的主流用书。本书比较通俗易懂,是初入者必备的书籍。 ........

dvlinker的技术专栏 4万+

Git学习笔记

试一下啊

qiren5210的博客 144

【C#程序员入门AI】AI应用的操作系统:Semantic Kernel 2026实战

用户ID用户信息

人工智能AI技术 1249

Git学习笔记大全

本文是一份全面的Git学习指南,系统介绍了Git的核心概念和操作指令。主要内容包括:版本控制原理(集中式与分布式对比)、Git核心概念(仓库、提交、分支等)、基础操作(创建仓库、提交更改)、进阶操作(分支管理、合并冲突)、高级功能(储藏修改、标签管理)以及远程操作(推送拉取)。文章详细讲解了50+常用Git指令,涵盖配置、提交、分支、撤销、合并等日常开发场景,并附有操作示例和注意事项。适合Git初学者系统学习,也可作为开发者的速查手册,帮助掌握这个强大的分布式版本控制工具。

2402_88633912的博客 1235

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

git和github学习笔记

git和github学习笔记 仅为学习笔记和重要内容参考,如果想学习git相关知识,请移步廖雪峰的git教程 安装git windows下下载二进制安装 创建git仓库 在git bash工具窗口内,切换到某文件夹下,输入git init在该文件夹下生成.git文件夹 git常用命令 语句 含义 git status 查看状态 git log 查看日志 git reflog...

ShadowKiller' blog 771

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

尚硅谷Git学习笔记:Git入门者的实战宝典

尚硅谷Git学习笔记:Git入门者的实战宝典 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在当今软件开发领域,版本控制是至关重要的环节。Git作为一种分布式版本控制系统,被广泛应用于各类项目开发中。尚硅谷Git学习笔记开源项目,正是一个为Git初学者量身定制的宝贵学习资源。本项目提供了《git尚硅谷笔记.pdf》文件的下载,它汇集了尚硅谷Git相关课程的精华,是学习...

gitblog_06726的博客 502

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

GIT学习笔记

文件冲突,合并失败,手工解决。git config --global init.defaultBranch master #设置版本库默认分支。git config --list #查看已有Git配置。git config --global user.email mark@tedu.cn #设置用户邮箱。git log --oneline #本地版本库提交记录(极简)

2403_89264530的博客 624
上一篇: 【GitHub】资源查找
下一篇: 【软件评测师】下午题总结
Lucifer__hell
博客等级 码龄8年 53粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值