自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

祯的博客

一名热爱编程的大学牲

  • 博客(573)
  • 收藏
  • 关注

原创 MySQL 表的约束

本文系统介绍了MySQL表约束的九大类型及其应用场景。主要内容包括:空属性(NOT NULL)、默认值(DEFAULT)、列描述(COMMENT)等基础约束的使用方法;主键(PRIMARY KEY)的唯一标识作用与复合主键实现;自增长(AUTO_INCREMENT)的自动编号机制;唯一键(UNIQUE KEY)与主键的区别及其允许多个NULL值的特性;外键(FOREIGN KEY)如何维护表间引用完整性。

2025-09-21 22:25:01 320

原创 虚函数表(vtable)机制

C++虚函数表机制解析:通过虚表指针和虚函数表实现动态多态。对象包含虚表指针指向存储虚函数地址的虚表,虚函数重写本质是地址覆盖。虚表在构造函数初始化列表阶段生成,存储在代码段(只读数据区)。虚表指针位于对象起始位置,虚表内容包含继承、重写和新增的虚函数地址。测试验证显示虚表地址接近代码段地址,与堆栈数据段地址明显不同。理解虚表的内存布局和初始化时机对掌握C++对象模型至关重要。

2025-09-20 17:54:20 324

原创 MySQL数据类型

本文详细介绍了MySQL中各种数据类型的作用、分类及使用场景。主要内容包括:数据类型作为约束机制的价值,数值类型(整型、小数、位类型)的存储特性与范围限制,字符串类型(CHAR/VARCHAR)的定长与变长区别,日期时间类型的格式与自动更新特性,以及枚举和集合类型的多选功能。文章通过大量示例演示了各类型的具体用法,对比了不同数据类型的存储效率与精度差异,并提供了类型选择的最佳实践建议。特别强调了数据类型在保证数据完整性、规范输入和优化存储方面的重要性。

2025-09-20 17:51:11 563

原创 继承和多态常见面试问题解析

本文主要探讨了C++面向对象编程中的核心概念与实现机制,重点分析了多态、虚函数、继承等关键特性。文章分为概念考察和问答题解析两大部分,通过代码示例详细讲解了动态绑定、虚函数表、虚继承等实现原理,并解答了关于构造函数、析构函数、静态成员函数等常见问题。特别强调了多态的实现机制、虚函数调用规则(如默认参数的静态绑定)以及抽象类的作用,为理解C++面向对象编程提供了全面的技术解析。

2025-09-18 17:29:29 800

原创 虚函数表在单继承与多继承中的实现机制

本文深入解析了C++中虚函数表在不同继承方式下的实现机制。主要内容包括:1. 单继承虚表:派生类继承基类虚表并扩展,重写函数覆盖基类对应项,新增函数添加在末尾;2. 多继承虚表:派生类为每个基类维护独立虚表,重写函数会更新所有相关虚表;3. 菱形虚拟继承:最复杂情况,涉及虚基表和多个虚表指针;4. 虚表存储特性:位于代码段,包含函数指针数组以NULL结尾;5. 调试技巧:通过内存窗口或代码打印查看完整虚表内容。文章建议优先使用单继承和组合替代复杂继承结构,并提供了验证虚表存储位置的方法。

2025-09-17 22:13:17 824

原创 动态绑定与静态绑定

本文对比分析了C++中的静态绑定与动态绑定机制。静态绑定在编译期确定函数调用(如函数重载),具有高效性但缺乏灵活性;动态绑定通过虚函数表在运行期确定调用(如多态),提供灵活性但有性能开销。通过代码实例展示了两种绑定的汇编实现差异,并对比了关键特性。动态绑定支持代码扩展、统一接口和设计模式实现,是面向对象编程的核心。理解两种绑定的区别对掌握C++多态至关重要,开发者应根据需求在效率与灵活性间权衡选择。

2025-09-17 20:31:50 516

原创 多态的原理与实现机制

本文深入解析C++多态的实现机制:1)多态通过虚函数表实现运行时动态绑定,父类指针/引用调用虚函数时根据实际对象类型查找对应虚表;2)必须满足虚函数重写和父类指针/引用调用两个条件;3)对象切片(Person p2=Johnson)会创建新Person对象,其虚表指针始终指向Person类虚表,因此无法实现多态;4)指针/引用直接操作原对象,保留原虚表指针,支持多态。核心在于对象类型决定虚表指针初始化,拷贝构造按类型而非原对象初始化虚表。

2025-09-17 20:15:41 1043

原创 单例模式(Singleton Pattern)

单例模式是一种设计模式,确保一个类只有一个实例,并提供全局访问点。本文介绍了单例模式的两种实现方式:饿汉模式和懒汉模式。饿汉模式在程序启动时就创建实例,线程安全但可能浪费资源;懒汉模式在首次调用时创建实例,C++11后线程安全且更节省资源。文章详细解析了两种模式的代码实现、核心特点及适用场景,并对比了它们的优缺点。单例模式适用于需要全局唯一对象的场景,如配置管理、线程池等。建议根据实际需求选择实现方式,确保代码效率和安全性。

2025-09-15 22:27:57 1217

原创 MySQL表的操作

本文详细介绍了MySQL表的DDL操作,包括创建、修改和删除表。主要内容涵盖:1. 表的创建语法,支持指定存储引擎(如InnoDB/MyISAM)、字符集和列注释;2. 查看表结构的DESC和SHOW CREATE TABLE命令;3. 修改表操作(新增/修改/删除列、修改表名);4. 删除表的注意事项,特别是临时表与永久表的区别。文章通过具体示例演示了表操作的全过程,并强调在修改表结构时可能对数据造成的影响,建议谨慎操作。

2025-09-15 17:34:14 1375

原创 抽象类与纯虚函数

C++中抽象类和纯虚函数是实现多态的关键机制。通过将虚函数声明为纯虚函数(=0),类成为抽象类,无法实例化。派生类必须实现所有纯虚函数才能实例化对象,这确保了接口规范的一致性。抽象类具有两大核心意义:一是表示宽泛的抽象概念(如"水果"类),二是强制制定具体实现标准。使用时需区分接口继承(纯虚函数,强制重写)和实现继承(普通函数,直接继承)。建议根据需求谨慎选择,只在需要多态时使用虚函数,确保代码结构的合理性。

2025-09-15 11:36:15 610

原创 MySQL库的操作

本文系统介绍了MySQL数据库的创建与管理操作。主要内容包括:1. 数据库创建语法及参数说明,支持指定字符集和校验规则;2. 字符集与校验规则的查看方法及其区别;3. 校验规则对数据操作的影响示例,演示了大小写敏感性的差异;4. 数据库的修改、删除、备份与恢复操作;5. 表的备份与恢复方法;6. 数据库连接状态查看等实用命令。文章特别强调了SQL语句的格式要求,推荐使用utf8mb4字符集,并提供了详细的命令行操作示例。

2025-09-14 22:19:26 927

原创 MySQL入门基础指南

本文系统介绍了数据库基础知识和MySQL的核心概念。主要内容包括:数据库的定义与优势(相比文件存储)、主流数据库分类、MySQL架构(连接层/服务层/引擎层/存储层)、客户端与服务端的交互机制、数据库管理命令及SQL语言分类(DDL/DML/DCL)。重点解析了MySQL的数据存储结构(库/表/行列关系)、存储引擎特性对比,以及通过实例演示数据库的创建、表操作和查询等基础用法。文章还涉及服务器管理、连接认证机制等实用内容,为MySQL初学者提供了全面的入门指导。

2025-09-14 16:25:07 1032

原创 MySQL在Ubuntu 20.04 环境下的卸载与安装

本文详细介绍了在Ubuntu系统上安装和配置MySQL数据库的完整流程。主要内容包括:卸载默认安装包、获取MySQL官方APT源、安装MySQL服务、查看配置文件位置、启动服务及设置开机自启、多种登录方式(包括临时密码获取和空密码登录)、重要配置修改(如字符编码和存储引擎)等。特别强调了Ubuntu与CentOS系统在MySQL管理上的区别,并提供了详细的命令解释和操作注意事项。整个过程从环境检查开始,到最终验证配置生效结束,适合初学者快速掌握MySQL在Ubuntu上的部署方法。

2025-09-13 20:40:08 2666

原创 揭秘C++多态机制:虚函数的魔法世界

本文系统性地讲解了C++多态机制的核心概念与实现原理。多态分为编译时多态(函数重载、模板)和运行时多态(虚函数),重点剖析了虚函数通过基类指针/引用实现动态绑定的机制。文章详细阐述了虚函数重写规则、协变返回值、虚析构函数等关键概念,通过购买票务和动物叫声等生动示例说明多态行为,并对比了重载、重写和隐藏的区别。特别强调了虚函数表(vtable)的底层实现原理,以及C++11引入的override/final关键字如何增强代码安全性。最后通过典型面试题解析,深入探讨了默认参数静态绑定与虚函数动态绑定的交互机制。

2025-09-13 12:59:49 1033

原创 继承与组合:C++编程中的复用艺术

本文探讨了C++中的多继承与菱形继承问题,比较了继承(is-a)与组合(has-a)两种代码复用方式。继承实现白箱复用但破坏封装性,组合实现黑箱复用且耦合度低。建议优先使用组合,仅在需要多态特性时使用继承。同时分析了菱形继承导致的数据冗余和二义性问题,以及通过虚拟继承的解决方案。最后提供了相关面试题解答,包括菱形继承问题、虚拟继承机制,以及继承与组合的选择标准。

2025-09-03 00:15:00 757

原创 虚拟继承:破解菱形继承之谜

本文探讨了C++中虚拟继承机制及其在解决菱形继承问题中的应用。主要内容包括:1. 虚拟继承的引入背景,解决传统菱形继承导致的数据冗余和访问二义性问题;2. 虚拟继承的正确实现方式,强调virtual关键字应加在中间层类继承基类时;3. 详细分析虚拟继承的内存布局,包括虚基表指针和偏移量计算机制;4. 讨论构造函数调用顺序、指针偏移等进阶话题,以及标准库中的实际应用案例。文章指出,虽然虚拟继承有效解决了菱形继承问题,但也增加了实现复杂度,建议在实际开发中优先考虑组合而非继承来避免此类问题。

2025-09-03 00:00:00 977

原创 继承体系中的静态成员奥秘

在继承体系中,基类定义的静态成员变量会被所有派生类共享。无论派生出多少子类,整个继承体系内仅存在该静态成员的一个实例。通过代码示例可见,Person类中的静态成员_count在Student和Graduate等派生类中都指向同一内存地址,用于统计所有实例化对象的总数。与普通成员不同,静态成员必须类外初始化,且适合跨继承体系的状态管理。

2025-09-02 00:30:00 407

原创 继承方式与模型:单多继承与菱形问题

本文介绍了面向对象编程中的三种继承方式:单继承、多继承和菱形继承。单继承结构简单清晰,多继承能组合多个父类特性但复杂度较高。重点分析了菱形继承带来的数据冗余和二义性问题,通过实例展示了如何通过作用域限定符临时解决二义性,但无法消除数据冗余。文章指出支持多继承必然支持菱形继承,建议避免设计菱形结构,并提及某些语言通过不支持多继承来规避此类问题。

2025-09-02 00:30:00 377

原创 派生类默认成员函数

本文系统介绍了C++中派生类的默认成员函数特性。重点分析了构造函数、拷贝构造函数、赋值运算符重载和析构函数的调用机制,强调派生类必须显式调用基类对应函数来完成基类部分操作。文章详细说明了构造与析构的顺序(基类→派生类构造,派生类→基类析构),并指出函数隐藏、参数传递等注意事项。最后提供了两种实现不可继承类的方法:C++98通过私有化构造函数,C++11使用final关键字。全文深入剖析了派生类成员函数的核心机制,对理解继承体系下的对象构造与析构过程具有重要指导意义。

2025-09-02 00:15:00 584

原创 友元关系不继承:继承与友元

友元关系不具有继承性,基类的友元不能自动访问派生类的私有和保护成员。示例显示,Display函数作为基类Person的友元,无法直接访问派生类Student的成员。解决方法是在Student类中显式声明Display为友元。总结指出,若需要访问派生类非公有成员,必须在派生类中单独声明友元关系。友元关系既不具备传递性也不具备继承性。

2025-09-02 00:15:00 191

原创 六大设计原则

本文介绍了软件设计中的六大经典原则:单一职责原则(一个类只做一件事)、开闭原则(对扩展开放,修改关闭)、里氏替换原则(子类可替代父类)、依赖倒置原则(依赖抽象而非具体)、迪米特法则(减少对象交互)和接口隔离原则(接口最小化)。这些原则通过降低耦合、提高内聚性,使系统更易维护和扩展。文章结合实例(如网络聊天系统、电商促销等)阐述了各原则的应用方法,强调通过抽象构建框架,用实现扩展细节的核心理念,为构建高质量软件提供方法论指导。

2025-09-02 00:00:00 862

原创 继承体系中的隐藏机制解析(继承中的作用域)

本文介绍了C++继承中的成员隐藏机制。当派生类与基类存在同名成员时,派生类成员会隐藏基类同名成员,需使用作用域限定符访问被隐藏的基类成员。成员函数只需名称相同即构成隐藏,与参数无关。文章通过代码示例展示了变量和函数的隐藏现象,并强调应避免在继承中使用同名成员。最后通过选择题解析了隐藏与重载的区别,说明函数签名由函数名和参数列表决定,返回类型不属于签名部分。

2025-09-02 00:00:00 774

原创 日志系统的必要性、技术实现

日志系统是软件开发与运维中的重要工具,主要用于生产环境调试、客户端问题复现、高频操作排查、分布式系统问题定位以及辅助新开发人员理解代码。其技术实现主要包括控制台输出、文件/数据库存储两种方式,其中文件存储又分为同步和异步日志。同步日志会阻塞主线程并增加系统开销,而异步日志通过生产者-消费者模型,将日志写入操作交由独立线程处理,有效提升程序性能,避免主线程阻塞和磁盘IO影响。

2025-09-01 00:30:00 2135

原创 不定参宏函数、C/C++风格不定参函数

本文系统介绍了不定参函数的三种实现方式:C风格宏函数、C风格不定参函数和C++可变参数模板。在C宏函数部分,重点讲解了__VA_ARGS__和##运算符的用法,以及__FILE__和__LINE__宏的应用;C风格函数部分详细解析了va_list、va_start等宏的使用方法和内存管理机制;C++模板部分则深入探讨了可变参数模板、递归展开、完美转发等现代C++特性。通过对比分析,文章指出C++模板方法在类型安全性和灵活性上的优势,同时保留传统方法在特定场景下的适用性,为开发者提供了全面的技术参考。

2025-09-01 00:30:00 1017

原创 DevOps研发平台流程实战指南(企业级项目管理)

本文介绍了使用Gitee企业版DevOps平台进行团队协作开发的完整流程。主要内容包括:1)平台准备工作,如创建企业、项目及代码仓库;2)成员管理方法,包括企业成员和项目成员的添加;3)基于Gitflow模型的开发实践,涵盖需求开发、分支管理、代码评审和测试流程;4)不同环境下的Bug修复策略,包括测试环境、预发布环境和生产环境的Bug处理方案;5)紧急修复生产Bug的特殊流程。文章还提供了主流DevOps平台(腾讯Coding、阿里云效)的参考链接和阿里飞流Flow分支模型的拓展阅读资源。

2025-09-01 00:15:00 1086

原创 项目介绍、开发环境、核心技术、环境搭建

本文介绍了一个功能完备的C++日志系统项目。该系统支持多级别日志消息分类(DEBUG/INFO/WARNING/ERROR),提供同步和异步两种记录模式,可写入控制台、文件及滚动文件等多种存储介质。系统采用多线程并发处理日志写入,确保线程安全,并具有灵活的扩展性。开发环境基于Linux系统,使用g++编译器和Makefile构建工具。核心技术包括:类层次设计、C++11特性、双缓冲区技术、生产消费模型等,并应用单例、工厂等设计模式。项目不依赖第三方库,环境搭建简单,可快速部署使用。

2025-09-01 00:15:00 1031

原创 多人协作开发指南二

本文介绍了Git多人协作开发和远程分支清理的实用指南。在多人协作部分,详细说明了如何通过独立feature分支实现并行开发,包括分支创建、推送、切换和合并的具体操作流程,重点讲解了本地分支与远程分支建立跟踪关系的两种方法(git checkout -b和git branch --set-upstream-to)。在远程分支清理部分,提供了两种解决方案:推荐使用git remote prune命令先查看再清理,或直接使用git fetch --prune同步并清理本地缓存的已删除远程分支。

2025-09-01 00:00:00 682

原创 企业级开发模型:从软件生命周期到 Git 分支管理

本文探讨了软件开发从单兵作战到团队协作的演进过程,分析了开发与运维团队之间的矛盾根源,并介绍了DevOps理念如何打破壁垒实现高效协作。文章重点阐述了Git作为DevOps基石的关键作用,详细说明了企业级开发环境(开发、测试、预发布、生产)的分层设计,并提出了一套完整的Git分支管理规范(包括master、release、develop、feature、hotfix等分支的使用规则)。最后强调没有放之四海皆准的最佳实践,团队应根据实际需求选择合适的分支策略,在开发效率与系统稳定之间找到平衡。

2025-09-01 00:00:00 854

原创 Git 标签管理操作:从创建到删除

本文系统介绍了Git标签(tag)的概念与操作。标签是对提交记录的易记别名,分为轻量级标签(直接指向提交)和附注标签(包含元数据)。通过tree.git命令可直观观察标签存储机制:轻量级标签是.git/refs/tags/下的文本文件,内容为CommitID;附注标签则存储在.git/objects/中。文章详细演示了创建、查看、推送和删除标签的完整流程,并对比了两种标签的特性差异。通过底层存储结构分析,帮助读者深入理解Git标签的工作原理。

2025-08-31 00:30:00 840

原创 多人协作开发指南一

本文介绍了Git多人协作开发的完整流程。首先完成Git本地操作和Gitee账号准备工作,模拟双用户协作环境。重点讲解了分支管理策略,强调不应直接在master分支开发,需创建dev分支进行功能迭代。详细说明了协作开发流程:拉取远程分支、处理推送冲突、同步伙伴代码、合并到主分支以及清理无用分支。最后总结了多人协作的标准模式:推送修改→处理冲突→合并主分支→删除功能分支,并指出Pull Request机制在保证代码规范性中的重要作用。这套流程确保了团队开发的高效性和代码安全性。

2025-08-31 00:30:00 956

原创 高效管理 Git 忽略文件技巧

本文介绍了使用Git的.gitignore文件来管理需要忽略的文件的方法。首先说明了如何获取和编写.gitignore文件,包括使用通配符或精确路径指定要忽略的文件。其次介绍了验证忽略规则是否生效的方法。最后针对特殊情况提供了解决方案:1)使用-f参数强制添加被忽略的文件;2)通过check-ignore命令检查忽略规则;3)使用!前缀设置例外规则。合理配置.gitignore能有效避免敏感信息泄露和不必要文件被跟踪。

2025-08-31 00:15:00 944

原创 Git别名配置(git config 命令):效率翻倍的秘密

Git命令别名配置指南:Git提供了通过git config命令设置别名的功能,可将常用命令简化为简短形式。配置分为系统、全局和本地三个级别,优先级依次递增。典型配置如git config --global alias.st status将status简化为st。建议初学者先掌握完整命令再使用别名,并推荐常用别名如ci(commit)、br(branch)等。通过--list可查看现有配置,--unset可删除配置。合理使用别名能显著提升Git使用效率,但需注意不同级别配置的优先级关系。

2025-08-31 00:15:00 1057

原创 搞定 Git 克隆:一文解决 HTTPS 与 SSH 协议的所有选择与配置问题

本文详细介绍了Git克隆远程仓库的完整流程和操作指南。主要内容包括:1.基础克隆操作命令格式和获取远程仓库链接的方法;2.HTTPS与SSH协议的对比分析及选择建议;3.详细的SSH密钥配置步骤,包括生成、添加和测试;4.高级克隆选项和常见问题解决方案;5.多账号SSH密钥管理的配置方法。文章强调HTTPS协议适合公开项目或临时访问,而SSH协议更适合私有项目或长期协作,并提供了针对不同场景的专业建议和最佳实践。

2025-08-31 00:00:00 778

原创 Git 远程仓库操作:推送到远程仓库、拉取远程仓库到本地仓库

本文介绍了Git远程仓库的基本操作流程。首先详细说明了如何向远程仓库推送内容,包括文件创建、本地提交注意事项(需确保用户信息与远程一致),以及git push命令的具体使用方法。其次讲解了如何通过git pull命令获取远程仓库更新并与本地分支合并,特别演示了当远程仓库领先本地版本时的同步操作。文章还对比了SSH和HTTPS协议在推送时的差异,并提供了查看远程仓库信息的命令。这些操作确保了本地与远程仓库的版本同步,是团队协作开发中的基础技能。

2025-08-31 00:00:00 84

原创 Git 强制删除未合并分支技巧

在软件开发中,使用功能分支(feature分支)可以隔离新功能开发,保持主分支稳定。当需要放弃未完成的功能时,常规git branch-d无法删除未合并分支,需使用git branch-D强制删除。分支工作具有隔离开发环境、安全保障和高效性能等优势。建议为每个功能创建独立分支,定期提交,完成后及时合并删除,对废弃功能使用强制删除,以维持代码库稳定性。

2025-08-30 00:30:00 707

原创 揭秘Git分布式协作(分布式版本控制系统)的核心优势

本文介绍了分布式版本控制系统Git的核心概念及远程仓库协作流程。首先解析了分布式系统的特点:每个开发者本地拥有完整版本库,支持离线工作,通过中央服务器实现团队协作。随后详细说明远程仓库的使用方法,推荐国内开发者使用Gitee平台,并分步骤演示了在码云创建远程仓库的完整流程,包括仓库设置、成员管理、问题追踪和合并请求等关键功能。文章强调远程仓库在团队开发中的重要性,既能实现高效协作,又能提供数据备份保障。

2025-08-30 00:30:00 1359

原创 Git分支管理之合并策略:FastForward 模式与--no-ff

本文介绍了Git中的两种合并策略:FastForward模式和非FastForward模式。FastForward模式会保持线性提交历史,但不保留分支信息;而非FastForward模式会生成合并提交,明确记录分支合并行为,可通过--no-ff选项强制启用。文章还阐述了推荐的分支管理策略:主分支(master)保持稳定仅用于发布,开发分支(dev)用于日常集成,个人功能分支进行具体开发工作。这种分层管理方式既能保持主分支的稳定性,又能支持团队并行开发,建议根据项目需求选择合适的合并策略和分支管理模式。

2025-08-30 00:15:00 914

原创 Git 使用临时分支修复 Bug 的工作流程

本文介绍了如何在Git中高效处理开发过程中遇到的紧急Bug修复问题。核心流程包括:1)使用git stash保存当前工作现场;2)创建临时分支修复Bug并合并到主分支;3)恢复开发环境继续工作;4)同步主分支变更并解决冲突。关键建议:使用临时分支隔离修复工作,善用stash保存进度,先在功能分支解决冲突再合并到主分支,使用--no-ff保留合并历史。这种工作流程既能保证主分支稳定,又能灵活处理紧急修复和日常开发。

2025-08-30 00:15:00 716

原创 Socket编程核心API与结构解析

本文介绍了Socket编程的核心API和数据结构。主要内容包括:1)常用Socket API如socket()、bind()、listen()等函数的功能和参数说明;2)sockaddr结构的设计背景,它通过统一的地址结构支持多种通信协议(IPv4/IPv6/本地域套接字);3)多种本地IPC方式并存的历史原因;4)Socket接口采用sockaddr而非void*的设计考量,主要出于历史兼容性和类型安全的需要。Socket通过抽象地址结构实现了网络编程的统一接口,既保证了扩展性又维护了系统稳定性。

2025-08-30 00:00:00 1113

原创 Git 合并冲突

本文介绍了Git分支合并冲突的解决方法及gitlog命令的使用技巧。当合并分支出现冲突时,Git会标记冲突内容,需手动修改后重新提交。文章演示了冲突产生、解决和删除分支的过程。重点讲解了gitlog命令的多种用法:基础用法显示提交历史;图形化显示分支结构;筛选特定提交;显示变更详情等。特别推荐使用git log --graph --oneline --abbrev-commit命令查看清晰的分支合并图。掌握这些核心命令组合即可满足日常开发需求。

2025-08-30 00:00:00 1272

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除