Git 版本控制:基础介绍与常用操作
目录
Git 的基本概念
Git 安装与配置
Git 常用命令与操作
1. 初始化本地仓库
2. 版本控制工作流程
3. 分支管理
4. 解决冲突
5. 回退和撤销
6. 查看提交日志
前言
在软件开发过程中,开发者常常需要在现有程序的基础上进行修改和扩展。但如果不加以管理,很容易出现以下两种问题:
- 担心修改错误:怕修改了代码后,原始文件也被弄坏。
- 版本混乱:每次修改后,我们都需要保存一个副本,但随着修改的增多,版本数量也随之增加,如何管理这些版本成了难题。
为了解决这些问题,版本控制工具应运而生。Git 是其中最流行的一个,它能帮助我们高效地管理代码版本,确保项目开发过程中的每一步都可追溯、可恢复。
Git 的基本概念
Git 是一个分布式版本控制系统,用于跟踪文件的变化,尤其是在多人协作开发时显得尤为重要。它提供了一个清晰的工作流程,能够让每个人都保持同步并避免冲突。
1. Git 的工作区和仓库
Git 的工作区域包含以下几个部分:
- 工作区 (Working Directory):即你本地的代码文件夹,开发者在这里进行编码。
- 暂存区 (Staging Area):你已经修改并准备提交的文件。通过
git add命令可以把文件加入暂存区。 - 本地仓库 (Local Repository):本地保存的版本库,提交的内容存储在这里。
- 远程仓库 (Remote Repository):如 GitHub、GitLab 等托管代码的服务器,团队成员可以从中拉取(pull)或推送(push)代码。

Git 安装与配置
-
下载 Git
前往 Git 官网下载安装包,根据操作系统选择对应版本。 Git 官网https://git-scm.com/downloadshttps://git-scm.com/downloadshttps://git-scm.com/downloads
https://git-scm.com/downloads -
安装 Git
安装过程有较多的配置项,安装界面如何勾选请参考我的这篇博客,如下:
Git的安装步骤详解(复杂的安装界面该如何勾选?)-CSDN博客文章浏览阅读79次。用户可以指定创建新仓库时使用的初始分支名称,例如。https://blog.csdn.net/Future_yzx/article/details/145404243?sharetype=blogdetail&sharerId=145404243&sharerefer=PC&sharesource=Future_yzx&spm=1011.2480.3001.8118
-
配置 Git 用户信息
安装后,需要配置 Git 的全局用户名和邮箱,确保每次提交记录时能够标记出具体的用户。git config --global user.name "Your Name" git config --global user.email "email@example.com" -
配置 SSH 密钥
为了方便与远程仓库(如 GitHub、GitLab 等)进行交互,我们需要配置 SSH 密钥。ssh-keygen -t rsa # 按提示生成 SSH 密钥 cat ~/.ssh/id_rsa.pub # 将生成的公钥复制到远程仓库的 SSH 密钥配置中
Git 常用命令与操作
1. 初始化本地仓库
git init # 初始化一个空的 Git 仓库
2. 版本控制工作流程
-
将文件添加到暂存区:
git add . # 添加当前目录下所有文件 git add fileName # 添加某个指定文件 -
提交修改到本地仓库:
git commit -m "提交备注" -
查看状态:
git status # 查看当前仓库的状态 -
推送本地修改到远程仓库:
git push # 推送到远程仓库 -
拉取远程仓库的修改:
git pull # 拉取远程仓库最新的修改
3. 分支管理
Git 允许我们在不同的分支上进行开发,分支操作使得多个开发者可以并行工作,而不会互相影响。
-
查看本地分支:
git branch # 查看所有本地分支 -
创建并切换到新分支:
git checkout -b new-branch # 创建并切换到新分支 -
切换到已存在的分支:
git checkout existing-branch # 切换到指定的分支 -
合并分支:
git checkout master # 切换到 master 分支 git merge new-branch # 合并新分支到 master -
删除分支:
git branch -d branch-name # 删除本地分支 git push origin --delete branch-name # 删除远程分支
4. 解决冲突
出现CONFLICT => 表明该文件有冲突,被至少2人修改。
解决方法:
- 查看日志,去线下和对应修改人员沟通,确定如何修改。
- 切忌在协作开发时,随意修改或者删除他人代码
下面为大家演示一个冲突解决案例:
① 现在我们在新建一个分支,dev1
git checkout -b dev1
② 查看:
$ git branchdev
* dev1master
③ 我们在div1分支下,对文件里边的内容进行修改

④ 然后上传:
git add .
git commit -m"div1进行提交"
git checkout master
git merge dev1
git push
⑤ 上传成功之后,我们在切换到dev分支之下,我们可以看到 div 分支下的文件内容 已经和dev1分支下的文件中的内容不一致了,现在我们重写一个新的内容
⑥ 同样进行上传,然后当我们在合并分支的时候会出现CONFLACT冲突,如下图:

⑦ 打开我们的文件,可以看到git自动帮我们标记出了具体的冲突内容:

⑧ 产生冲突后,我们必须手动解决冲突,只需要我们保留我们想要的结果

⑨ 更改完错误以后需要我们commit提交,然后上传
造成冲突的原图:
在不同分支之下,更改了相同的文件
5. 回退和撤销
-
撤销未提交的修改:
git checkout fileName # 撤销某个文件的修改 git checkout . # 撤销所有文件的修改 -
回退到上一个提交:
git reset --hard HEAD^ # 回退到上一个版本
6. 查看提交日志
-
查看提交历史:
git log # 查看详细的提交日志 git log --oneline # 简洁格式查看提交历史 -
查看命令历史:
git reflog # 查看 Git 命令历史
总结
Git 是一个强大的版本控制工具,它能够帮助开发者高效地管理代码版本,追踪代码修改,避免版本冲突,并且支持多人协作开发。掌握 Git 的基本操作和工作流程对于现代软件开发至关重要。如果你刚刚开始接触 Git,建议多练习命令行操作,理解每一个命令的意义,逐步建立起版本控制的思维方式。
希望本文能帮助你更好地理解 Git,并使用它进行版本管理和团队协作。
相关文章:
Git 版本控制:基础介绍与常用操作
目录 Git 的基本概念 Git 安装与配置 Git 常用命令与操作 1. 初始化本地仓库 2. 版本控制工作流程 3. 分支管理 4. 解决冲突 5. 回退和撤销 6. 查看提交日志 前言 在软件开发过程中,开发者常常需要在现有程序的基础上进行修改和扩展。但如果不加以管理&am…...
讲清逻辑回归算法,剖析其作为广义线性模型的原因
1、逻辑回归算法介绍 逻辑回归(Logistic Regression)是一种广义线性回归分析模型。虽然名字里带有“回归”两字,但其实是分类模型,常用于二分类。既然逻辑回归模型是分类模型,为什么名字里会含有“回归”二字呢?这是因为其算法原…...
数据结构(1)——算法时间复杂度与空间复杂度
目录 前言 一、算法 1.1算法是什么? 1.2算法的特性 1.有穷性 2.确定性 3.可行性 4.输入 5.输出 二、算法效率 2.1衡量算法效率 1、事后统计方法 2、事前分析估计方法 2.2算法的复杂度 2.3时间复杂度 2.3.1定义 2.3.2大O渐进表示法 2.3.3常见时间复…...
K8s运维管理平台 - xkube体验:功能较多
目录 简介Lic安装1、需要手动安装MySQL,**建库**2、启动命令3、[ERROR] GetNodeMetric Fail:the server is currently unable to handle the request (get nodes.metrics.k8s.io qfusion-1) 使用总结优点优化 补充1:layui、layuimini和beego的详细介绍1.…...
spring源码阅读系列文章目录
对于spring认识首先要了解 spring相关概念术语,然后是如下的几句话牢记并反射出来: Bean怎么来的,通过BeanDefinitionBeanDefinition有Spring框架内置的,有手动定义或者自动配置扫描出来的(写个Demo工程)B…...
快速提升网站收录:利用网站新闻发布功能
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/63.html 利用网站新闻发布功能快速提升网站收录是一个有效的策略。以下是一些具体的建议,帮助你更好地利用这一功能: 一、保持新闻更新频率 搜索引擎尤其重视网站的…...
【14】WLC3504 HA配置实例
1.概述 本文档使用 Cisco WLC 3504 实现无线控制器的高可用性。这里所指的HA是指WLC设备box-to-box的冗余。换句话说,即1:1的设备冗余,其中一个 WLC 将处于Active活动状态,而第二个 WLC 将处于Standby-hot热待机状态,通过RP冗余端口持续监控活动 WLC 的运行状况。两个 WLC…...
什么是LPU?会打破全球算力市场格局吗?
在生成式AI向垂直领域纵深发展的关键节点,一场静默的芯片革命正在改写算力规则。Groq研发的LPU(Language Processing Unit)凭借其颠覆性架构,不仅突破了传统GPU的性能天花板,更通过与DeepSeek等国产大模型的深度协同&a…...
智慧物业管理系统实现社区管理智能化提升居民生活体验与满意度
内容概要 智慧物业管理系统,顾名思义,是一种将智能化技术融入社区管理的系统,它通过高效的手段帮助物业公司和居民更好地互动与沟通。首先,这个系统整合了在线收费、停车管理等功能,让居民能够方便快捷地完成日常支付…...
Vue3 表单:全面解析与最佳实践
Vue3 表单:全面解析与最佳实践 引言 随着前端技术的发展,Vue.js 已经成为最受欢迎的前端框架之一。Vue3 作为 Vue.js 的最新版本,带来了许多改进和新的特性。其中,表单处理是 Vue 应用中不可或缺的一部分。本文将全面解析 Vue3 …...
MySQl的日期时间加
MySQL日期相关_mysql 日期加减-CSDN博客MySQL日期相关_mysql 日期加减-CSDN博客 raise notice 查询目标 site:% model:% date:% target:%,t_shipment_date.site,t_shipment_date.model,t_shipment_date.plant_date,v_date_shipment_qty_target;...
实战:如何利用网站日志诊断并解决收录问题?
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/50.html 利用网站日志诊断并解决收录问题是一种非常有效的方法。以下是一个实战指南,帮助你如何利用网站日志来诊断并解决网站的收录问题: 一、获取并分析网站日志 …...
每日一题——有效括号序列
有效括号序列 题目描述数据范围:复杂度要求: 示例题解代码实现代码解析1. 定义栈和栈操作2. 栈的基本操作3. 主函数 isValid4. 返回值 时间和空间复杂度分析 题目描述 给出一个仅包含字符 (, ), {, }, [, ] 的字符串,判断该字符串是否是一个…...
PyTorch数据建模
回归分析 import torch import numpy as np import pandas as pd from torch.utils.data import DataLoader,TensorDataset import time strat = time.perf_counter()...
OpenAI 实战进阶教程 - 第二节:生成与解析结构化数据:从文本到表格
目标 学习如何使用 OpenAI API 生成结构化数据(如 JSON、CSV 格式)。掌握解析数据并导出表格文件的技巧,以便适用于不同实际场景。 场景背景 假设你是一名开发人员,需要快速生成一批产品信息列表(如名称、价格、描述…...
二叉树--链式存储
1我们之前学了二叉树的顺序存储(这种顺序存储的二叉树被称为堆),我们今天来学习一下二叉树的链式存储: 我们使用链表来表示一颗二叉树: ⽤链表来表⽰⼀棵⼆叉树,即⽤链来指⽰元素的逻辑关系。通常的⽅法是…...
Windows 中的 WSL:开启你的 Linux 之旅
今天在安装windows上安装Docker Desktop的时候,遇到了WSL。下面咱们就学习下。 欢迎来到涛涛聊AI 一、什么是 WSL? WSL,全称为 Windows Subsystem for Linux,是微软为 Windows 系统开发的一个兼容层,它允许用户在 Win…...
2.3学习总结
今天做了下上次测试没做出来的题目,作业中做了一题,看了下二叉树(一脸懵B) P2240:部分背包问题 先求每堆金币的性价比(价值除以重量),将这些金币由性价比从高到低排序。 对于排好…...
前端力扣刷题 | 6:hot100之 矩阵
73. 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 法一: var setZeroes function(matrix) {let setX new Set(); // 用于存储需要置零的行索引let setY new Set(); //…...
docker gitlab arm64 版本安装部署
前言: 使用RK3588 部署gitlab 平台作为个人或小型团队办公代码版本使用 1. docker 安装 sudo apt install docker* 2. 获取arm版本的gitlab GitHub - zengxs/gitlab-arm64: GitLab docker image (CE & EE) for arm64 git clone https://github.com/zengxs…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
