Git 原理与实践

Git核心原理与高效开发实践指南 版本控制系统是软件开发的基础设施,其中Git作为分布式架构的典范,通过对象模型(blob/tree/commit/tag)和有向无环图(DAG)实现高效的代码版本管理。理解Git的暂存区机制和分支原理,能够显著提升团队协作效率,特别是在持续集成(CI/CD)和代码审查场景中。本文从分布式版本控制的核心概念切入,解析Git如何通过SHA-1哈希和引用机制实现历史追溯,并演示rebase、交互式暂存等工程实践技巧,帮助开发者构建清晰的提交历史和高效的工作流。 阅读详情

工作过程中发现很多小伙伴会git理解不深,操作过程中往往使用一些 删除分支,文件备份的方法保证自己的代码。本文将结合工程实践讲解git的原理 本文长期更新,欢迎研讨交流。

一:git 强制回退

一不小心提交了多于的代码到master分支,怎么处理呢。

这时候远程代码已经提交到远程仓库了,这就需要强制回退,

idea里没有对应的操作菜单。

造成原因:

test 分支切换到master分支时 idea 有未提交的代码

idea 选择了smart 模式切换分支,导致代码在本地带到了master分支,进而被意外提交。

用命令实现:

1、获取某个历史版本的id(即change-id,每个版本唯一)

方法1:使用git log命令查看所有的历史版本,输入q便可退出。

git log

方法2:使用gitk图形化界面查看节点信息。(在安装 Git 的同时,你也装好了它提供的可视化工具,gitk 和 git-gui。)

—>假设查到历史版本的id是124bb0f757e661ef12cdbe99a805c156297d1f11

2、本地恢复到该节点状态

git reset --hard 124bb0f757e661ef12cdbe99a805c156297d1f11

3、强推到远程分支

<此时如果分支较远或者改动较多,使用git push origin可能会报错失败,此时可使用强推>

git push -f -u origin master

这个操作需要输入用户名 密码

原理分析:git 版本记录 可以理解为记录每个操作节点

无论何种操作都会被记录在git 操作日志里。

二、 git revert 和 git reset 对比

git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
作为一次最新的提交
* git revert HEAD 撤销前一次 commit
* git revert HEAD^ 撤销前前一次 commit
* git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,
版本会递增,不影响之前提交的内容


git revert 和 git reset的区别

  1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
  2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
  3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
无涯教程-Git - Revert命令 在Git中,术语"revert"用于还原某些更改, git revert命令用于应用还原操作,这是一个撤消类型命令。但是,这不是传统的撤消选择。在此过程中,它不会删除任何数据。相反,它将创建一个具有相反效果的新更改,从而撤消指定的提交。通常,git revert是一个提交。这对于跟踪项目中的错误很有用。如果要从历史记录中删除某些内容,那么git revert是错误的选择。而且,我们可以说git revert记录了一些新的更改,这些更改与先前进行的提交相反。 阅读详情

相关推荐

【Git】git revert 命令(撤销 commit 改动)

git revert 命令,用于撤销 commit 改动,回退版本

qq_45677671的博客 6044

Git 之 revert

revert 可以撤销指定的提交内容,撤销后会生成一个新的commit。 1、两种commit: 当讨论 revert 时,需要分两种情况,因为 commit 分为两种:一种是常规的 commit,也就是使用 git commit 提交的 commit;另一种是 merge commit,在使用 git merge 合并两个分支之后,你将会得到一个新的 merge commit merge commit 和普通 commit 的不同之处在于 merge commit 包含两个 parent commi

赶路人儿 5万+

Git原理及实践(Fork模式)

1.简介: Git是目前最先进的分布式版本控制系统,在git的管理下,每个人的电脑上都有一个完整的版本库,配合云上一台充当“中央服务器”的电脑(方便交换和修改)。 git是用于记录文件变更的版本控制系统, 支持文件版本跟踪,记录,回退,合并 等操作,并在此基础上实现了版本切换,差异比较,分支管理,分布式协作等功能。 2.版本库结构: keywords: 管理,追踪,二进制文件 .git git init .; 多次add,一次性commit到本地master; 在工作目录中修改文件。 暂存文件,将

zhang_jiayuan的博客 1362

git回滚reset、revert、四种模式,超级详细

了解知识 Git四个工作区域 Workspace: 工作区,就是你平时存放项目代码的地方 Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息 Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本 Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换 一、问题描述 在利用github实现多人合作程序开发的过程中,我们有时会出

Ly 10万+

Git分支删除原理与安全实践:从指针机制到误删恢复

Git分支本质是轻量级提交指针,删除操作实际是移除引用而非数据;其安全性根植于DAG可达性分析与reflog元数据保留机制。理解本地分支、远程分支、合并状态和引用保留四大核心概念,是规避误删、实现精准清理的技术前提。该机制支撑了CI/CD自动化清理、团队协作规范制定及灾难级误操作恢复(如72小时内通过reflog或tag重建)。本文聚焦生产环境高频场景——如何安全删除已合并分支、同步远程状态、应对‘origin/xxx仍显示’等典型问题,并提供可落地的检查清单、钩子脚本与审计方案。

weixin_30595035的博客 381

git --- revert用法

比如你改代码改错了,并没有发现,叫代码提交到了github,结果队友发现了,需要将你的某次提交回退,就可以使用,使用后作为一次新的提交,可以很方便的push到github,并不会有冲突的问题。

M2嵌入式 4575

Git 核心原理与实践

Git作为分布式版本控制系统,由Linus Torvalds开发,专为高效管理代码而生。其核心特性包括: 分布式架构:每个开发者拥有完整仓库副本,支持离线工作 高效存储:采用快照机制而非差异存储,支持海量分支(瞬间创建) 三阶段工作流:工作区→暂存区→仓库,通过git add/commit流转

Mr_-G,一名勤奋底层软件开发工程师的博客 1309

stata 代码实现熵值法计算 含常见问题解答

2.标准化①正向指标②负向指标。

m0_74825360的博客 1217

Git技术深度指南:从原理到协作实践

git

JAVA爱好者的专栏 1058

stata:stata软件教程(人大十八讲)(1) 第一章 stata入门

第一章 stata入门1.1 安装1.2 启用和退出1.3 打开和查看数据1.4 寻求帮助与网络资源1.5 命令示例1.6 几个环境设置1.7 复习与练习1.8 附录 注:教材为:Stata 统计分析教程 stata软件教程(人大十八讲) 中国人民大学出版社 陈传波 1.1 安装 1.2 启用和退出 1.3 打开和查看数据 1.4 寻求帮助与网络资源 1.5 命令示例 1.6 几个环境设置 1.7 复习与练习 1.8 附录 ...

qq_47805483的博客 1万+

Jetson Nano官方镜像下载&烧录

在NVIDIA Jetson Nano开发者套件上安装NVIDIA官方Ubuntu镜像

weixin_44222088的博客 8843

深入理解Git:从原理到实践的全面指南[1]

本文深入剖析Git的核心概念和底层实现原理,包括对象模型、分支管理、合并策略等关键特性。通过理解Git的数据结构和工作机制,帮助开发者更好地处理版本控制中的各种复杂场景,从基础使用者进阶为Git专家。

weixin_43176516的博客 2061

YOLOv11 网络结构详解:一文看懂 Backbone、Head、C3k2、SPPF 和 Detect 检测头

在使用 YOLOv11 进行目标检测时,我们经常会接触到或这样的模型配置文件。backbone和head分别是什么意思?ConvC3k2SPPFC2PSA这些模块分别起什么作用?P3/8、P4/16、P5/32 代表什么?为什么最后 Detect 要同时接收 3 个不同尺度的特征图?YOLOv11n、YOLOv11s、YOLOv11m、YOLOv11l、YOLOv11x 的区别在哪里?

learnerYC的博客 1808

CICD与Git集成:从原理到实践

本文详细介绍了Git与CICD集成的原理及实现方法。通过Webhook机制,当代码推送到Git仓库时,CICD系统能自动触发构建、测试和部署流程。文章以GitHub和Jenkins为例,分步骤讲解了仓库配置、Webhook设置和CICD工具配置的具体操作,并提供了配置示例代码。此外,还针对Webhook触发失败和权限不足等常见问题给出了解决方案。掌握这些集成方法能显著提升软件开发效率和质量。

fykam的博客 1023

燧原科技云燧ESL64-O超节点:国产AI芯片与OEX光互联架构解析

分布式AI训练通过将计算任务拆分到多个节点并行执行来加速模型训练,其核心原理涉及数据并行和模型并行等策略。在技术价值层面,分布式训练能显著提升大规模深度学习任务的效率,但传统GPU集群常因网络通信瓶颈导致性能受限。OEX光互联架构作为解决通信瓶颈的关键创新,采用硅光技术实现高带宽、低延迟的节点内互联,优化了AI训练中的集合操作。这种硬件级优化特别适用于千亿参数大模型训练和科学计算等场景,能有效降低AI集群的总体拥有成本(TCO)。云燧ESL64-O超节点正是基于国产自研AI芯片与OEX架构的集成方案,为大规

weixin_29071809的博客 370

【华为OD技术面试手撕真题】3、小行星碰撞 | 手撕真题+思路参考+代码解析(C & C++ & Java & Python & JS)

小行星碰撞,本专栏更新每年华为OD机试的高频手撕代码题,每个题目都会使用五种语言进行解答(C & C++& Java & Python & JS),思路分析都非常详细, 实现最低的时间复杂度和高通过率,每个解题思路超过百字,内含各个编程语言的八股文面试题,欢迎大家订阅学习, 代码可以直接运行使用,全网限时最低价,持续更新

KJ.JK 8166

Git SSH认证原理与安全实践指南

SSH(Secure Shell)作为现代分布式系统安全通信的基石,采用非对称加密技术实现身份认证与数据加密。其核心原理基于RSA或椭圆曲线算法生成密钥对,公钥用于加密验证,私钥则严格本地保管。这种机制不仅解决了传统密码认证的安全隐患,还能有效防御中间人攻击。在Git版本控制系统中,SSH认证成为开发者与GitHub/GitLab等平台交互的标准安全协议,支持高频代码提交场景。通过配置多账户密钥管理和实施密钥轮换策略,可以进一步提升工程实践中的安全性。对于需要更高安全级别的场景,建议采用ED25519算法或

weixin_30294295的博客 421

RK3588平台开发系列讲解(项目篇)常见模型结构

📢 AI 模型常采用人工神经网络来模拟人脑神经的记忆和处理信号的能力。常见的人工神经网络类型有深度神经网络(Deep Neural Network,DNN)、卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)等。

内核笔记 1756

从SVN迁移到Git:原理、工具与自动化实践指南

版本控制系统是软件工程中管理代码变更的核心基础设施,其核心原理在于记录文件的历史版本、追踪变更并支持团队协作。从集中式的SVN到分布式的Git,不仅是工具的切换,更是工作流和协作模式的演进。这种迁移的技术价值在于提升开发效率、改善分支管理能力并适应现代DevOps实践。在实际应用场景中,企业常面临历史数据迁移、权限映射和流程切换等挑战。本文聚焦于SVN到Git的迁移,深入解析了git-svn等工具链的自动化实践,并探讨了如何通过脚本化和系统化方法规避常见风险,实现平滑过渡。

weixin_33720078的博客 365

18年陕西省TI杯电赛无人机赛题视觉部分

更新: 相同任务另外两种不同的视觉方法: https://blog.youkuaiyun.com/qq_41895747/article/details/97613077 https://blog.youkuaiyun.com/qq_41895747/article/details/97614971 任务:识别前方的方框,无人机从方框中飞出去 视觉任务:识别特定方框,返回方框中心坐标 # -*- codin...

沉迷单车的追风少年 1506

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

从SVN到Git的自动化迁移:原理、实战与最佳实践

版本控制系统是现代软件开发的基石,它通过记录代码的每一次变更,实现了团队协作与历史追溯。从集中式的SVN到分布式的Git,技术演进带来了更强大的分支管理和离线操作能力,但也带来了历史数据迁移的挑战。自动化迁移技术的核心价值在于解决手动操作的高成本、易出错问题,确保提交历史、分支标签和作者信息的完整保留。这项技术广泛应用于企业技术栈升级、多版本控制系统整合及遗留项目现代化改造等场景。本文基于思特奇的数据迁移系统专利思想,深入剖析了git-svn工具链的工作原理,并提供了从环境准备到脚本实现的完整实战指南,帮助

weixin_34056162的博客 337

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

一文读懂Git原理及最佳实践

一文带你读懂Git的基本使用以及常见注意事项

runofsun的博客 415

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Git版本控制核心原理与高效开发实践指南

版本控制系统是现代软件开发的基础设施,Git作为分布式版本控制的代表,通过内容寻址文件系统和快照机制实现高效代码管理。其核心原理基于SHA-1哈希算法构建版本对象模型,每个提交(commit)形成不可变的数据节点。在工程实践中,Git的分支管理能力显著提升团队协作效率,支持功能分支工作流和敏捷开发。通过暂存区(staging area)机制,开发者可以精确控制提交内容,而变基(rebase)等高级功能则优化了版本历史。典型应用场景包括持续集成、代码审查和开源协作,配合GitHub等平台形成完整开发生态。掌握

weixin_28829339的博客 263

git ssh传输的原理与实践

git ssh的配置

gediseer的博客 1万+

Git 中的 Rebase 与 Merge:原理、区别与最佳实践

Git提供了merge和rebase两种代码合并方式,各有特点:merge会生成合并提交保留完整历史,适合公共分支;rebase则重写提交历史形成线性记录,更适合本地分支整理。核心区别在于是否修改历史、是否线性化提交记录。使用时应遵循"不rebase公共分支"原则:个人分支推荐rebase保持整洁,合并到主分支则用merge保留真实历史。冲突处理上,merge只需解决一次,而rebase可能多次处理冲突。最佳实践是开发时用rebase同步主分支,最终合并采用merge。

经天纬地,格物致理 895
上一篇: idea git分支图 使用说明(2)
下一篇: 合同中心设计概要
hamish-wu
博客等级 码龄15年 2814粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值