当前位置: 首页 > news >正文

git 命令实战

大家好,我是 17。

今天和大家一起用前面学过的命令做过实践。

git 命令实战

你在分支 A,一个同事在分支 B fix 了一个bug。你不方便 merge 分支B,只想更新这个 fix bug 的提交。

最先想到的是 cherry-pick,但还有两个办法,git restore,和 patch。相比较来说,如果 fix 已经提交到远程,cherry-pick 是最佳的,git restore 也可以,但是还得提交一次。如果网络不通,那只能用 patch了。


修改上次提交的 message 可以用 git commit --amend,那如果是修改上上次提交的 message 呢?

方案一 reset + chery-pick

git log --oneline081b00b (HEAD -> master) 第二次提交
451ddbc                  第一次提交

如果要修改第一次提交的提交信息,需要先退回到第一次提交,再修改提交信息

git reset --hard HEAD^
git commit --amend -m '第一次提交补充'

修改完第一次提交的信息,我们用第二条提交的 commid id 恢复第二条信息

git cherry-pick 081b00b

也许你会问,直接 把 HEAD reset 到 081b00b 可以吗?答案是不可以。因为执行 cherry-pick 后,虽然内容和 message 都一样,但这本质上却是一个新的提交。无法从这个提交回到 081b00b。

方案二 rebase

用 rebase 有一个前提,提交次数 >2

git rebase -i HEAD~2 

在 dev 分支上开发完了,发现提交记录太多太乱了,提交主干的时候想合成一个提交,将来查的时候也好查。

git merge-base master dev输出:caa12ecabf18b0b7247f07481b01946f8b548d94git reset --soft caa12ecabf18b0b7247f07481b01946f8b548d94git commit 'feat:登录'

示例把所有修改合成一个提交,也可以分成几次提交。如果那样的话,需要用 --mixed 参数 ,把暂存区也还原。


用分支开发的时候,合并到主干可能会产生分叉。如果不想分叉呢?也是可以做到的。

场景一 从master创建分支 dev 后,master 没有修改,合并的时候,不会有分叉。

场景二 从master创建分支 dev 后,master 有修改,合并的时候,有分叉,为了避免出现分叉,不直接在 master 分支执行 merge,而是在 dev 分支 执行 rebase ,然后在 master 再执行 merge。

git switch dev 
git rebase master
git switch master
git merge dev

这样在 master 分支上就不会有分叉了。

rebase 的过程相当于把 dev的提交一个一个的重新提交到 master 分支,可能有冲突。解决冲突的办法有二,可以手动解决,也可以自动解决(前面讲 checkout 时有讲)。解决完了 git rebase --continue


我有好几个分支,git 怎么知道我在哪个分支呢?

 cat .git/HEAD输出:ref: refs/heads/dev2

原来是 HEAD 的功劳。HEAD 可以理解成一个引用,它一般情况下是指向分支,有时也指出 commit id。

当你执行 git commit 的时候生成节点 A,A 把 HEAD 认作父节点 ,HEAD 再指向 A。

当你执行 git reset B 的时候 HEAD 指向 B。

当你执行 git checkout C 的时候,HEAD 指向 commit C,这时因为没有分支指向 C,HEAD 这时的状态叫 detatch(分离) 状态。

当你执行 git checkout dev 的时候,HEAD 指向 分支 dev。

美化

毫无章法的提交会让人感觉混乱。如果所有的提交都整齐划一就会让人有正规军的感觉。适当的美化可以让我们用很小的付出得到较大的回报,在实际项目中提交的信息一定要注意用统一清晰的格式。

提交信息格式化

具体的内容可能参看阮一锋老师的文章 Commit message 和 Change log 编写指南

实操作的时候,注意要结合实际。

提交历史要清晰

在代码 push 之前,最好是先做个检查,对提交做一些调整。可以用之前介绍过的 rebase。一个好的提交历史不仅可以让后面查找的时候方便,也会给别人留下严谨的印象。

相关文章:

git 命令实战

大家好,我是 17。 今天和大家一起用前面学过的命令做过实践。 git 命令实战 你在分支 A,一个同事在分支 B fix 了一个bug。你不方便 merge 分支B,只想更新这个 fix bug 的提交。 最先想到的是 cherry-pick,但还有两个办法,git restore&am…...

基于机器学习LSTM的古代汉语切分标注算法及语料库研究 完整代码+数据+论文

完整代码:https://download.csdn.net/download/qq_38735017/87382302摘 要近年来,深度学习的浪潮渗透在科研和生活领域的方方面面,本文主要研究深度学习在自然语言处理,尤其是古汉语自然语言处理方面的应用。本文旨在利用计算机帮…...

魔百和M401A刷入Armbian系统EMMC开启wifi

文章目录一、Armbian系统写入U盘二、U盘内uEnv.txt文件修改三、盒子从U盘进行启动四、设置用户名和密码五、Armbian系统写入EMMC六、 重启系统reboot(不可以拔U盘)七、盒子关机拔出U盘八、插入USB无线网卡,连接wifi上次盒子刷了5.15版本的armbian系统,可…...

超实用的小红书内容营销策略分享!纯干货

抓住小红书内容流量密码就是掌握了财富,越来越多的品牌方和商家都在小红书上收获了相当可观的用户流量,如果你的小红书营销没有什么起色,那绝对是没有走对方向。 小红书是一个内容为王的平台,如果你还不懂下面这些小红书内容营销…...

高压放大器在介电泳效应的细胞分选研究中的应用

实验名称:高压放大器在介电泳效应的细胞分选研究中的应用研究方向:生物医学测试目的:细胞分选在分析化学和生物医药领域有着非常重要的应用。在众多的分选方法中,微流控分选方法以其响应速度快、样品需求少等优点成为研究热门。微…...

Redis三 高级篇-3. 最佳实践

《Redis三 高级篇-3. 最佳实践》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《Redis三 高级篇-3. 最佳实践》《Redis三 高级篇-3. 最佳实践》1、Redis键值设计1.1、优雅的key结构1.2、拒绝BigKey1.2.1、BigKey的危害1.2.2、如何发现BigKey①redis-cli…...

基于 VPX 总线的工件台运动控制系统研究与开发-以光刻运动台为例(一)

工件台系统是光刻机的关键子系统之一,工件台运动控制系统对实现光刻机性能指标具有至关重要的作用,因此研发工件台运动控制系统具有极其重要的工程应用价值。论文根据工件台控制系统必须具备的并行性、同步性和实时性等技术需求,建立了基于 V…...

回溯算法理论基础

目录什么是回溯法回溯法的效率回溯法解决的问题如何理解回溯法回溯法模板什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯是递归的副产品,只要有递归就会有回溯。 所以以下讲解中,回溯函数也就是递归函数,指…...

【STM32笔记】低功耗模式下GPIO省电配置避坑实验(闲置引脚配置为模拟输入其实更耗电)

【STM32笔记】低功耗模式下GPIO省电配置避坑实验(闲置引脚配置为模拟输入其实更耗电) 前文: blog.csdn.net/weixin_53403301/article/details/128216064 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解…...

AI算法创新赛-人车目标检测竞赛总结02

源码目录--AI0000026/ --models/ #存放原始模型文件 --scripts/ #存放模型编译、量化所用到的命令脚本,标签格式转换的脚本。 --data/ #存放B榜数据集102张图片 --bmodel/ #存放编译或量化生成的xxx.bmodel --test/ #存放执行推理的代码,会调用bmodel/中…...

Python 编程必备:盘点nginx和gunicorn的几大用法,建议收藏

程序员是新兴技术工种中比较高薪的一个,在互联网公司,程序员往往与秃头,压力大,找不到女朋友等等挂钩。 最近,最新技能类榜单出炉,这是一个关于程序员自己给自己贴的几个标签。 其中,不难看出…...

USB3.0移动硬盘启动Win7的方法(AHCI/AMD USB3.0/Win7)

古董电脑(intel处理器,无USB3.0接口)突然坏了,已经没有维修价值了,硬盘还是完好的。欲把硬盘拆下来,装到USB3.0硬盘盒上,然后在新电脑(AMD R5-4650G/A520)上从USB3.0硬盘盒上启动。 一、需要工具 SATA数据线PS/2鼠标…...

Python学习-----函数3.0(嵌套函数、闭包、装饰器)

目录 1.函数嵌套 2.闭包 3.装饰器 这一节,我会详细Python中讲解函数的进阶内容,包括嵌套函数、闭包和装饰器。一起来学习吧!!! 1.函数嵌套 概念:函数里面再定义一个函数 作用:当我们在一个多…...

最新版EasyRecovery数据恢复软件使用测评介绍

我们在逐渐适应信息电子化的同时,也有一些潜在的麻烦接踵而来,其中较为常见的就是文件和数据的保存问题。显然,设备的存储空间是有限的,这就不可避免地会出现数据被删除、覆盖或丢失的现象,如果丢失的是重要数据&#…...

关于知识图谱TransR

论文题目 Learning Entity and Relation Embeddings for Knowledge Graph Completion 论文链接 TransR 文中指出,不管是TransE还是TransH都是将实体和关系映射同一空间,但是,一个实体可能具有多个层面的信息,不同的关系可能关注…...

始于日志,不止于日志,Elastic Stack全面介绍

1、Elastic Stack是什么? 说Elastic Stack之前,先说一下ELK Stack。这个词相信很多人都是耳熟能详的,作为一个著名的日志系统解决方案,应用非常广泛。 “ELK”是三个开源项目的首字母缩写词:Elasticsearch、Logstash…...

FDX-B|EMID格式低频RFID 读卡模块LD6900技术选型与说明

FDX-B|EMID格式低频RFID 读卡模块LD6900是华翔天诚推出一款基于 RFID 无线射频识别技术的低频(LF)读卡模块,工作频率支持 134.2KHZ、125KHZ,符合 ISO 11784/5 国际标准,支持对 FDX-B、EMID 两种协议格式电子标签的读取…...

《SQL基础》11. 索引

SQL - 索引索引概述结构B-TreeBTreeHash思考分类语法SQL性能分析SQL执行频率慢查询日志profile详情explain执行计划索引失效情况范围查询索引列运算字符串不加引号模糊查询or连接条件数据分布影响使用规则最左前缀法则SQL提示覆盖索引前缀索引设计原则索引 概述 索引&#xf…...

【前端】进阶Mac OS软件商城页面_缤纷多彩的创意UI

非常漂亮的仿Mac OS界面&#xff0c;更改下参数就可以变成你需要的界面。 还可以一键更换背景主题 灵感来源于米科瓦伊加文齐奥夫斯基 附上css、html、js源码 下面是html文件 <!DOCTYPE html> <html lang"en" > <head><meta charset"…...

格创东智与金羽新能合作|先进工业互联网助力固态电池智能化运营

2022年12月&#xff0c;浙江金羽新能源科技有限公司&#xff08;以下简称金羽新能&#xff09;与格创东智签订战略合作框架协议&#xff0c;并在湖州安吉举行金羽新能固态电池MES项目启动会。 固态电池是一种使用固体电极和固体电解质的电池。相较传统锂电池&#xff08;液态电…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...