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

Git 深度解析 —— 从基础到进阶

目录

1. Git 基础概念

1.1 版本控制 (Version Control)

1.2 分布式版本控制 (Distributed Version Control)

1.3 核心概念

1.4 Git 工作流程

2. Git 常用命令

2.1 初始化仓库

2.2 添加文件

2.3 提交修改

2.4 查看状态

2.5 查看历史记录

2.6 切换分支

2.7 创建分支

2.8 合并分支

2.9 克隆仓库

2.10 推送修改

2.11 拉取更新

3. Git 进阶技巧

3.1 Git 撤销操作

3.2 Git 分支管理

3.3 Git 远程仓库

3.4 Git 冲突解决

3.5 Git 标签 (Tag)

3.6 Git 工作区 (Working Directory)、暂存区 (Staging Area) 和版本库 (Repository)

3.7 Git 配置

4. Git 图形界面工具

5. 补充资料

6. 小结


前言:

        Git 是一个强大的分布式版本控制系统,它广泛应用于软件开发领域,为开发者提供代码管理、协作、版本控制等功能。以下将从基础到进阶,深度剖析 Git 的基本概念、使用方式和进阶技巧,并辅以图片和官方文档链接进行补充。

1. Git 基础概念

1.1 版本控制 (Version Control)

  • 定义: 版本控制系统 (VCS) 用于记录文件或代码库的变更历史,方便追踪代码修改、恢复到之前的版本以及协作开发。

  • 作用:

    • 跟踪代码变更:记录每次修改,方便追踪代码演进。

    • 回滚版本:轻松恢复到之前的版本,避免代码丢失或错误。

    • 协作开发:方便团队成员协同工作,避免代码冲突。

1.2 分布式版本控制 (Distributed Version Control)

  • 定义: 与集中式版本控制系统 (如 SVN) 不同,Git 是分布式的,每个开发者本地都拥有完整的代码库副本,包括所有历史记录。

  • 优势:

    • 离线工作:开发者可以在没有网络连接的情况下进行代码修改和提交。

    • 更快的速度:本地操作不需要连接服务器,速度更快。

    • 更高的安全性:每个开发者都拥有完整代码库副本,即使服务器丢失数据,也可以从任何一个开发者本地恢复。

1.3 核心概念

  • 仓库 (Repository): 存储所有文件和历史记录的目录。

  • 分支 (Branch): 用于创建代码库的独立开发线,允许并行开发和实验性修改。

  • 提交 (Commit): 将修改后的代码保存到仓库中的一个快照,记录变更信息。

  • 远程仓库 (Remote): 存放于服务器上的代码库副本,用于团队成员之间同步代码。

  • 拉取请求 (Pull Request): 开发者将本地分支的修改提交到远程仓库,供团队成员审查和合并。

1.4 Git 工作流程

  1. 克隆仓库 (Clone): 从远程仓库复制一份完整的代码库到本地。

  2. 创建分支 (Branch): 从主分支或其他分支创建新的分支,进行独立开发。

  3. 修改文件 (Modify): 在本地分支中修改文件。

  4. 添加文件 (Add): 将修改后的文件添加到暂存区,准备提交。

  5. 提交修改 (Commit): 将暂存区中的文件提交到本地仓库,记录变更信息。

  6. 推送修改 (Push): 将本地分支的修改推送到远程仓库。

  7. 拉取更新 (Pull): 从远程仓库获取最新的代码变更。

  8. 合并分支 (Merge): 将其他分支的修改合并到当前分支。

2. Git 常用命令

2.1 初始化仓库

git init

2.2 添加文件

git add <file>

2.3 提交修改

git commit -m "提交信息"

2.4 查看状态

git status

2.5 查看历史记录

git log

2.6 切换分支

git checkout <branch>

2.7 创建分支

git checkout -b <new-branch>

2.8 合并分支

git merge <branch>

2.9 克隆仓库

git clone <url>

2.10 推送修改

git push

2.11 拉取更新

git pull

3. Git 进阶技巧

3.1 Git 撤销操作

  • git revert <commit_id>: 撤销某个提交,生成一个新的提交来抵消之前的提交。

  • git reset --hard <commit_id>: 将本地仓库重置到指定提交,会丢失该提交之后的修改。

  • git checkout <branch> <file>: 丢弃某个文件的修改。

3.2 Git 分支管理

  • 创建分支: git checkout -b <new-branch>

  • 切换分支: git checkout <branch>

  • 合并分支: git merge <branch>

  • 删除分支: git branch -d <branch>

  • 查看所有分支: git branch

3.3 Git 远程仓库

  • 添加远程仓库: git remote add <name> <url>

  • 查看远程仓库: git remote -v

  • 推送代码: git push <remote> <branch>

  • 拉取代码: git pull <remote> <branch>

3.4 Git 冲突解决

  • 冲突发生原因: 两个开发者同时修改了同一个文件中的相同部分。

  • 冲突解决方法: 手动修改冲突的文件,然后使用 git add 和 git commit 命令提交修改。

3.5 Git 标签 (Tag)

  • 定义: 标签用于标记代码库中的特定版本,通常用来标记发布版本或重要里程碑。

  • 创建标签: git tag <tag_name> <commit_id>

  • 查看标签: git tag

  • 删除标签: git tag -d <tag_name>

3.6 Git 工作区 (Working Directory)、暂存区 (Staging Area) 和版本库 (Repository)

  • 工作区: 开发者修改代码的区域。

  • 暂存区: 用于存放即将提交的修改。

  • 版本库: 存放所有代码和历史记录的区域。

3.7 Git 配置

  • 全局配置: git config --global user.name "Your Name"

  • 本地配置: git config user.name "Your Name"

4. Git 图形界面工具

除了命令行界面,还有许多图形界面工具可以简化 Git 的操作,例如:

  • GitHub Desktop: GitHub Desktop | Simple collaboration from your desktop · GitHub

  • GitKraken: GitKraken Legendary Git Tools | GitKraken

  • SourceTree: Sourcetree - A free Git & Mercurial client | Atlassian

5. 补充资料

  • Git 官方文档: https://git-scm.com/doc

  • Pro Git: https://git-scm.com/book/en/v2

  • GitHub 学习资源: git · GitHub Topics · GitHub

6. 小结

        Git 是一个强大的版本控制系统,通过深入学习 Git 的基础概念、使用方式和进阶技巧,开发者可以更加高效地管理代码,进行团队协作,并更好地理解软件开发流程。

注意: 以上信息只是 Git 的部分内容,更详细的解释和操作请参考 Git 官方文档和相关教程。

相关文章:

Git 深度解析 —— 从基础到进阶

目录 1. Git 基础概念 1.1 版本控制 (Version Control) 1.2 分布式版本控制 (Distributed Version Control) 1.3 核心概念 1.4 Git 工作流程 2. Git 常用命令 2.1 初始化仓库 2.2 添加文件 2.3 提交修改 2.4 查看状态 2.5 查看历史记录 2.6 切换分支 2.7 创建分支…...

PCIE-变量总结

1.changed_speed_recovery&#xff1a; 表示链路双方已经将链路速率协商为更高的速率。 在configuration.complete状态下此变量会reset成0&#xff1b; 当前状态在recovery.rcvrlock状态&#xff1a; 在经过24ms的timeout之后&#xff0c;任何一个已经configured的lane&…...

【iOS】AFNetworing初步学习

文章目录 前言OC的网络请求步骤单例封装网络请求使用AFNetworking进行网络请求 前言 在暑假&#xff0c;学习了一些简单的网络请求的内容&#xff0c;本周学习了AFNetworking的基本使用&#xff0c;通过本篇博客进行一个简单的介绍。 OC的网络请求步骤 简单的网络请求主要有…...

【数据结构】堆的创建

Heap.h #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<assert.h>//创建堆结构体 typedef int HPDateType; typedef struct Heap {HPDateType* a;int size;int capacity; }HP;//堆的初始化 void HPInit(HP* php);//堆的销毁 voi…...

Linux下Git操作

一、基本命令 1、创建 git 目录&#xff08;工作区&#xff09; mkdir gitcode 2、创建本地仓库&#xff0c;生成 .git 隐藏目录 git init 3、设置配置项 git config user.name "xxx" git config user.email "....." 4、查看配置项 git config -l …...

缺失d3dx9_42.dll如何修复,d3dx9_42.dll故障的6种修复方法分享

在电脑使用过程中&#xff0c;许多游戏玩家和软件用户可能都遇到过d3dx9_42.dll丢失的问题。这个问题会导致游戏或软件无法正常运行&#xff0c;给用户带来诸多不便。本文将详细解读d3dx9_42.dll丢失的原因、影响及解决方案&#xff0c;帮助大家顺利解决这个问题。 一、d3dx9_4…...

深入理解Android WebView的加载流程与事件回调

文章目录 一、WebView 加载流程时序图二、WebView 加载流程回调函数说明三、AwContents3.1 主要功能和职责3.2 架构和实现3.3 使用场景 四、利用WebView回调函数检测白屏4.1 使用onPageStarted和onPageFinished检测加载时间4.2 利用onReceivedError和onReceivedHttpError检测加…...

机器视觉相机自动对焦算法

第一&#xff0c;Brenner梯度法、 第二&#xff0c;Tenegrad梯度法、 第三&#xff0c;laplace梯度法、 第四&#xff0c;方差法、 第五&#xff0c;能量梯度法。 此实例通过使用Halcon实现5种清晰度算法函数&#xff1a; 1. 方差算法函数&#xff1b; 2. 拉普拉斯能量函数…...

StarTowerChain:开启去中心化创新篇章

官网&#xff1a; www.startower.fr 在当今创新驱动的时代&#xff0c;StarTowerChain 以其独特的去中心化创新模式&#xff0c;为我们带来了新的希望和机遇。去中心化&#xff0c;这个充满活力与创造力的理念&#xff0c;正引领着我们走向未来的创新之路。 StarTowerChain …...

SpringCloudStream使用StreamBridge实现延时队列

利用RabbitMQ实现消息的延迟队列 一、安装RabbitMQ 1、安装rabbitmq 安装可以看https://blog.csdn.net/qq_38618691/article/details/118223851,进行安装。 2、安装插件 安装完毕后,exchange是不支持延迟类型的,需要手动安装插件,需要和安装的rabbitmq版本一致 https:…...

MATLAB中head函数用法

目录 语法 说明 示例 显示矩阵的前八行 显示表的前三行 返回表的前八行 head函数的功能是获取数组或表的顶行。 语法 head(A) head(A,k) B head(___) 说明 head(A) 在命令行窗口中显示数组、表或时间表 A 的前八行&#xff0c;但不存储值。 head(A,k) 显示 A 的前 k …...

golang 基本数据类型

1. go语言的数据类型简介 golang的数据类型分为两大类&#xff0c;一类是基本数据类型和符合数据类型&#xff1b; 按照传递的内容分&#xff1a;传递本身数据和传递地址&#xff1b; golang和java很相似&#xff0c;都是值传递&#xff0c;不过分为传递的值和传递的地址&a…...

各种查询sql介绍

1. 关联查询&#xff08;JOIN&#xff09; 关联查询用于从多个表中检索数据。它基于两个或多个表之间的共同字段&#xff08;通常是主键和外键&#xff09;来组合数据。 内连接&#xff08;INNER JOIN&#xff09;&#xff1a; sql SELECT a.name, b.order_date FROM custome…...

Guava防击穿回源-异步防击穿

异步防击穿策略 在高并发环境下,缓存击穿(Cache Stampede)是一种常见的问题。当缓存中的热点数据失效或未命中时,大量并发请求同时访问后端数据源(如数据库),可能导致后端系统压力骤增,甚至出现崩溃。为了有效防止这种情况,可以利用Guava提供的异步缓存加载机制(类似…...

人工智能正在扼杀云计算的可持续性

可持续性曾是公共云计算中备受推崇的优势。企业和云提供商大肆宣扬他们的绿色计划&#xff0c;推广采用可再生能源的数据中心&#xff0c;以减少碳足迹。 近几个月来&#xff0c;这个话题已悄然淡出人们的视线。罪魁祸首是什么&#xff1f;对人工智能功能的无限需求正在推动云…...

C# 条形码、二维码标签打印程序

1、条码标答打印主界面 2、打印设置 3、生成QR代码 private void GetBarcode_T(string lr) { QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();//创建一个对象 qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //设置编码测量…...

嵌入式入门学习——6Protues点亮数码管,认识位码和段码,分辨共阴还是共阳(数字时钟第一步)

0 系列文章入口 嵌入式入门学习——0快速入门&#xff0c;Let‘s Do It&#xff01; 首先新建基于Arduino UNO的protues工程&#xff0c;见本系列第3篇文章 1 点“P”按钮找器件 2 输入“seg”或“digit”查找数码管器件 3 找到我们想要的6位7段数码管 4如图A、B…DP都是段码…...

poisson过程——随机模拟(Python和R实现)

Python实现 exponential()使用&#xff0c;自动poisson过程实现。 import numpy as np import matplotlib.pyplot as plt# Parameters lambda_rate 5 # rate parameter (events per time unit) T 10 # total time# Generate Poisson process times np.random.exponential(…...

100 种下划线 / 覆盖层动画 | 终极 CSS(层叠样式表)集合

还在为你的菜单项和链接寻找动画效果而感到疲惫吗&#xff1f; 不用再找了&#xff01;这里列出了 100 多种不同的动画。从简单的到更复杂的&#xff0c;你肯定能找到自己想要的。 无需 SVG&#xff08;可缩放矢量图形&#xff09;&#xff0c;无需 JavaScript&#xff08;脚…...

华为ICT大赛2024-2025网络赛道考试分析

华为ICT大赛2024-2025正在报名中&#xff0c;网络赛道的同学如何备考&#xff0c;了解考试内容呢&#xff1f; 一、考试概况 华为ICT大赛分为4个赛段&#xff0c;分别为省赛初赛、省赛复赛、中国总决赛&#xff0c;全球总决赛。其中对应的能力级别分别如下&#xff1a; 省赛…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据&#xff01;该数据集源自2025年4月发表于《地理学报》的论文成果…...

leetcode73-矩阵置零

leetcode 73 思路 记录 0 元素的位置&#xff1a;遍历整个矩阵&#xff0c;找出所有值为 0 的元素&#xff0c;并将它们的坐标记录在数组zeroPosition中置零操作&#xff1a;遍历记录的所有 0 元素位置&#xff0c;将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...

OPENCV图形计算面积、弧长API讲解(1)

一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积&#xff0c;这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能&#xff0c;常用的API…...

【AI News | 20250609】每日AI进展

AI Repos 1、OpenHands-Versa OpenHands-Versa 是一个通用型 AI 智能体&#xff0c;通过结合代码编辑与执行、网络搜索、多模态网络浏览和文件访问等通用工具&#xff0c;在软件工程、网络导航和工作流自动化等多个领域展现出卓越性能。它在 SWE-Bench Multimodal、GAIA 和 Th…...

【汇编逆向系列】四、函数调用包含单个参数之Double类型-mmword,movsd,mulsd,addsd指令,总结汇编的数据类型

一、汇编代码 上一节开始&#xff0c;讲到了很多debug编译独有的汇编方式&#xff0c;为了更好的区分release的编译器优化和debug的区别&#xff0c;从本章节开始将会提供debug和release的汇编用作对比 Debugb编译 single_double_param:00000000000000A0: F2 0F 11 44 24 08…...

【Oracle】数据仓库

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 数据仓库概述1.1 为什么需要数据仓库1.2 Oracle数据仓库架构1.3 Oracle数据仓库关键技术 2. 数据仓库建模2.1 维度建模基础2.2 星形模式设计2.3 雪花模式设计2.4 缓慢变化维度&#xff08;SCD&#xff09;处…...