【Linux】Git原理与使用

article/2025/7/4 23:17:16

  编程不仅是解决问题的艺术,更是对复杂性进行优雅管理的哲学。

前言

  这是我自己学习Git工具的笔记。后期我会继续把Git工具笔记开源至博客上。

版本控制器Git

1. Git是一款去中心化的分布式版本控制系统

2. Git提交时,仅会记录并提交文件的变动部分

Git的本地使用

安装 

//安装Git
sudo yum install git -y

创建本地仓库 

//创建本地仓库.git
git init

配置本地仓库 

//设置用户名和邮件地址
git config --global user.name "your name"
git config --global user.email "your-email@example.com"
//删除用户名和邮件地址
git config --global --unset user.name "your name"
git config --global --unset user.email "your-email@example.com"
//查看配置列表
git config -l

区域划分 

1. 工作区:指的是用于编写代码或文件的目录

2. 暂存区 指的是 .git目录下的index文件。暂存区有时也被称作 索引,它用于 存放即将提交到仓库的文件变更
3. 版本库 也称为 仓库。在工作区中有一个 隐藏目录.git,它并不属于工作区本身,而是 Git 的版本库所在
4. 这个版本库中的所有文件都可以被 Git管理和追踪,无论是内容的修改、文件的删除等操作, Git都能记录变化,使得你可以在任何时候查看历史记录,或恢复到之前的某个状态。

add+commit

//将目标文件从工作区移动到暂存区 
git add xxx
//查看本地仓库的缓存区
git status
//将当前暂存区中的更改正式提交到本地的Git仓库,并为此次提交附上一条描述性的消息
git commit -m "日志信息"
//显示项目的提交历史记录
git reflog

查看改动

//如果你只是修改了xxx而没有执行git add xxx,那么git diff xxx将显示这些修改的内容
git diff xxx

版本回退 

//回退版本库
git reset --soft file.id(HEAD^)(HEAD^^)
//回退版本库、暂存区
git reset --mixed file.id(HEAD^)(HEAD^^)
//回退版本库、暂存区、工作区
git reset --hard file.id(HEAD^)(HEAD^^)
//把工作区的文件恢复到最近一次提交的版本
git checkout -- file.name

1. 版本回退的本质在于移动HEAD指针以指向历史中的某个提交,从而改变当前分支的状态。

2. 进行版本回退的前提通常是该提交尚未推送到远程仓库(即commit后未执行push),这样可以在不影响他人工作的前提下调整项目状态。

3. 版本回退的主要目的是为了修正本地代码而不影响远程仓库的内容,确保在推送更新前所有更改都符合预期。

分支管理 

分支管理的优点 

1. 分支就像是一个分身,你可以让本体专注于学习C++,同时让分身去学习Java。到了一定阶段后,只要将分身的成果合并回本体,就能够同时掌握C++和Java的知识。

master主分支 

1. 在Git中,每次提交都会形成一条时间线,这条线就是一个分支。

2. HEAD并不直接指向提交,而是指向当前所在分支,而该分支则指向最新的提交。

3. 随着不断提交,分支向前延伸,HEAD也随之始终指向当前最新的提交。

创建合并删除分支 

//查看现有分支
git branch
//创建新的分支xxx
git branch xxx
//切换分支xxx
git checkout xxx
//合并分支到主分支上
git merge xxx
//删除分支xxx
git branch -d xxx

远程仓库 

//将远程的仓库添加到本地
git clone warehouse_link
//将本地仓库的提交推送到远程仓库
git push

致谢

  感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!


http://www.hkcw.cn/article/IVAqKYGPIO.shtml

相关文章

“等待-通知”机制优化(一次性申请)循环等待

1. “等待-通知”机制优化(一次性申请)循环等待 等待‑通知 释放锁 阻塞 唤醒 重新抢锁 所有 wait/notify 都属于 锁对象 的等待队列。 用 notifyAll(),写成 while(…) wait() —— 黄金法则。 面对自旋消耗 CPU 的场景,优…

麒麟信安安装谷歌浏览器

参考文档 麒麟信安系统Chrome离线安装包:高效便捷的浏览器解决方案-CSDN博客 项目文件预览 - 麒麟信安系统Chrome离线安装包:本仓库提供了一个适用于麒麟信安系统的Chrome浏览器离线安装包。该安装包包含了所有必要的依赖文件,并且已经对系统中已有的依…

智启未来:当知识库遇见莫奈的调色盘——API工作流重构企业服务美学

目录 引言 一、初识蓝耘元生代MaaS平台 1.1 平台架构 1.2 平台的优势 1.3 应用场景 二、手把手教你如何在蓝耘进行注册 (1)输入手机号,将验证码正确填入即可快速完成注册 (2)进入下面的页面表示已经成功注册&…

LangGraph framework

目录 Agent 架构Router(路由)工具调用代理(Tool-calling Agent)工具调用记忆机制(Memory)规划机制(Planning) 自定义 Agent 架构人类参与(Human-in-the-loop)…

零基础开始的网工之路第十七天------计算机网络知识

目录 1、以太网MAC地址 2.交换机的工作模式 2.1、交换机以太网接口双工模式 2.2、交换机以太网接口速率 4.模式间的转换 5.命令行的层次关系 6.命令行帮助 7.常用命令 8.交换机以太网接口的工作模式配置 二.路由器配置 三.TCP协议 2.TCP的建立连接和断开连接 2.1建…

核心机制:滑动窗口

TCP 协议 1.确认应答 可靠传输的核心机制 2.超时重传 可靠传输的核心机制 3.连接管理 TCP/网络 最高的面试题 三次握手,建立连接(必须是 三次) 四次挥手,断开连接(可能是 三次) 核心机制四:滑动窗口 算法中的"滑动窗口" 出自 TCP 前面的三个…

JAVA核心知识点--元注解详解

📚博客主页:代码探秘者 ✨专栏:《JavaSe》 其他更新ing… ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏作者水平有限,欢迎各位大佬指点&…

微软markitdown PDF/WORD/HTML文档转Markdown格式软件整合包下载

本次和大家分享另一个微软发布的非常热门的文件文档转Markdown格式文档的软件markitdown,软件可以将PDF,word,ppt,Excel等十几种格式文档转换为markdown格式文档,我基于当前最新0.1.2版本制作了免安装一键启动整合包。…

(八)登录认证与学生写作画像

本次将赵昱琨同学之前完成的学生写作画像与智能学习路径规划的后端与目前已有的后端框架进行整合。同时为了实现学生写作画像与智能学习路径规划,需要在之前简易的登录系统上进行重构,所以本次大规模重写了登录模块,同时发现很多过去冗余的代…

【agent开发】部署LLM(一)

本周基本就是在踩坑,没什么实质性的进展 下载模型文件 推荐一个网站,可以简单计算下模型推理需要多大显存:https://apxml.com/tools/vram-calculator 我的显卡是RTX 4070,有12GB的显存,部署一个1.7B的Qwen3应该问题…

【Linux】pthread多线程基础

参考博客:https://blog.csdn.net/Alkaid2000/article/details/128121066 线程概述 与进程类似,线程(thread)是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。同一个程序中的所有线程均会独立执行相同程序,且共享同一份…

瑞萨CS+ for CC V8.13.00环境安装教程

前言:最近接触到瑞萨的芯片,需要安装对应的集成开发环境,发现这与ARM内核的单片机存在很大的不同,这里先简单介绍一下其IDE的安装配置方式。 1,官网下载 瑞萨半导体开发环境安装网址 CS | Renesas 当然在下载安装包之…

【知识点】第3章:基本数据类型

文章目录 知识点整理数字类型字符类型 练习题判断题程序题 知识点整理 数字类型 Python语言提供整数、浮点数、复数3种数字类型。 不同进制的引导符号: 不考查进制间的转换。 浮点数类型与数学中实数的概念一致,表示带有小数的数值。Python语言要求所…

【算法】回溯法

一、回溯法的基本思想 回溯法有“通用解题方法”的美称,解题过程是一个搜索过程。在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回(也就是递归返回),尝试别的路径。因此&#xff0…

AIGC 基础篇 高等数学篇 01函数与极限

声明:本文章仅用于博主本人复习,请不要将本文章当成预习篇或者讲解篇 此外,此文章不会包含全部的高等数学知识,仅仅是为了学习AI而进行的前期学习,因此知识含量不会很多,由于博主是第一次尝试做&#xff0…

如何在 Windows 11 Home 版上下载和安装 Hyper-V

Windows 11 Home 版与之前的微软操作系统版本一样,没有自带 Hyper-V 管理器。因此,如果您想在 Windows 11 Home 上下载和安装 Hyper-V,以下是详细的步骤教程。 Hyper-V 是微软提供的一种虚拟化解决方案,允许用户为各种操作系统创建虚拟机。与 VMware 或 VirtualBox 不同,…

C++ --- string类的简单实现

string类的简单实现 前言1、基本成员2、构造方法和析构方法2.1无参构造2.2有参构造2.3析构函数2.4拷贝构造函数 3、遍历方式3.1operator [ ]3.2iterator3.2.1正向迭代器3.2.2const正向迭代器 3.3范围for 4、常用方法,运算符重载c_str()size()reverse()push_back()po…

ESP32之Linux编译环境搭建流程

背景:为了解决 “windows环境中编译ESP32代码速度慢” 的问题,现搭建一个Linux环境,让windows下的VScode连接到Linux环境,VSCode负责编辑代码,虚拟机用于编译代码。 目录 一、安装VMware 1.1 获取VMware安装包 1.2…

Python-matplotlib中的Pyplot API和面向对象 API

matplotlib中的Pyplot API和面向对象 API Pyplot API(状态机模式)面向对象 API 详解二者差别核心区别方法命名差异注意事项差别举例 🍅 Pyplot API(状态机模式)和面向对象 API 是两种不同的编程接口.🍅 它们…

BUUCTF之[ACTF2020 新生赛]BackupFile

打开环境就一句话 找出源文件! 结合题目名字&#xff1a;BackupFile 先用dirsearct扫描网站文件 发现一个index.php.bak ,拼接url下载 打开发现php代码 <?php include_once "flag.php";if(isset($_GET[key])) {$key $_GET[key];if(!is_numeric($key)) {exit…