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/downloadshttps://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…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...