Git 版本控制:基础介绍与常用操作

目录

Git 的基本概念

Git 安装与配置

Git 常用命令与操作

1. 初始化本地仓库

2. 版本控制工作流程

3. 分支管理

4. 解决冲突

5. 回退和撤销

6. 查看提交日志


前言

在软件开发过程中,开发者常常需要在现有程序的基础上进行修改和扩展。但如果不加以管理,很容易出现以下两种问题:

  1. 担心修改错误:怕修改了代码后,原始文件也被弄坏。
  2. 版本混乱:每次修改后,我们都需要保存一个副本,但随着修改的增多,版本数量也随之增加,如何管理这些版本成了难题。

为了解决这些问题,版本控制工具应运而生。Git 是其中最流行的一个,它能帮助我们高效地管理代码版本,确保项目开发过程中的每一步都可追溯、可恢复。

Git 的基本概念

Git 是一个分布式版本控制系统,用于跟踪文件的变化,尤其是在多人协作开发时显得尤为重要。它提供了一个清晰的工作流程,能够让每个人都保持同步并避免冲突。

1. Git 的工作区和仓库

Git 的工作区域包含以下几个部分:

  • 工作区 (Working Directory):即你本地的代码文件夹,开发者在这里进行编码。
  • 暂存区 (Staging Area):你已经修改并准备提交的文件。通过 git add 命令可以把文件加入暂存区。
  • 本地仓库 (Local Repository):本地保存的版本库,提交的内容存储在这里。
  • 远程仓库 (Remote Repository):如 GitHub、GitLab 等托管代码的服务器,团队成员可以从中拉取(pull)或推送(push)代码。

Git 安装与配置

  1. 下载 Git
    前往 Git 官网下载安装包,根据操作系统选择对应版本。 Git 官网https://git-scm.com/downloadshttps://git-scm.com/downloadshttps://git-scm.com/downloadshttps://git-scm.com/downloads

  2. 安装 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

  1. 配置 Git 用户信息
    安装后,需要配置 Git 的全局用户名和邮箱,确保每次提交记录时能够标记出具体的用户。

    git config --global user.name "Your Name"
    git config --global user.email "email@example.com"
    
  2. 配置 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,并使用它进行版本管理和团队协作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/67566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(笔记+作业)书生大模型实战营春节卷王班---L0G2000 Python 基础知识

学员闯关手册:https://aicarrier.feishu.cn/wiki/QtJnweAW1iFl8LkoMKGcsUS9nld 课程视频:https://www.bilibili.com/video/BV13U1VYmEUr/ 课程文档:https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/Python 关卡作业:htt…

仿真设计|基于51单片机的高速路口货车称重系统仿真

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现(protues8.7) 程序(Keil5) 全部内容 资料获取 具体实现功能 (1)LCD1602液晶第一行显示当前的车辆重量,第二行显示车辆重量…

Ubuntu Server 安装 XFCE4桌面

Ubuntu Server没有桌面环境,一些软件有桌面环境使用起来才更加方便,所以我尝试安装桌面环境。常用的桌面环境有:GNOME、KDE Plasma、XFCE4等。这里我选择安装XFCE4桌面环境,主要因为它是一个极轻量级的桌面环境,适合内…

2025:影刀RPA使用新实践--CSDN博客下载

文章目录 一键CSDN博客下载器程序说明指导说明使用步骤 获取方法 一键CSDN博客下载器 程序说明 配置信息:CSDN账号(手机号/邮箱/用户名)、密码、博客文件类型支持markdown格式、html格式(默认值markdown格式)、博客保…

深度学习的应用

目录 一、机器视觉 1.1 应用场景 1.2 常见的计算机视觉任务 1.2.1 图像分类 1.2.2 目标检测 1.2.3 图像分割 二、自然语言处理 三、推荐系统 3.1 常用的推荐系统算法实现方案 四、图像分类实验补充 4.1 CIFAR-100 数据集实验 实验代码 4.2 CIFAR-10 实验代码 深…

前端js高级25.1.30

原型:函数的组成结构 通过这个图我们需要知道。 假设我们创建了一个Foo函数。 规则:Function.protoType是函数显示原型。__proto__是隐式对象。 Function、Object、Foo函数的__proto__指向了Function.protoType说明。这三个都依托function函数来创建。…

为AI聊天工具添加一个知识系统 之80 详细设计之21 符号逻辑 之1

本文要点 要点 前面我们讨论了本项目中的正则表达式。现在我们将前面讨论的正则表达式视为狭义的符号文本及其符号规则rule(认识的原则--认识上认识对象的约束),进而在更广泛的视角下将其视为符号逻辑及其符号原则principle(知识…

.NET Core缓存

目录 缓存的概念 客户端响应缓存 cache-control 服务器端响应缓存 内存缓存(In-memory cache) 用法 GetOrCreateAsync 缓存过期时间策略 缓存的过期时间 解决方法: 两种过期时间策略: 绝对过期时间 滑动过期时间 两…

自动驾驶---苏箐对智驾产品的思考

1 前言 对于更高级别的自动驾驶,很多人都有不同的思考,方案也好,产品也罢。最近在圈内一位知名的自动驾驶专家苏箐发表了他自己对于自动驾驶未来的思考。 苏箐是地平线的副总裁兼首席架构师,同时也是高阶智能驾驶解决方案SuperDri…

Sklearn 中的逻辑回归

逻辑回归的数学模型 基本模型 逻辑回归主要用于处理二分类问题。二分类问题对于模型的输出包含 0 和 1,是一个不连续的值。分类问题的结果一般不能由线性函数求出。这里就需要一个特别的函数来求解,这里引入一个新的函数 Sigmoid 函数,也成…

FPGA|使用quartus II通过AS下载POF固件

1、将开发板设置到AS下载挡位,或者把下载线插入到AS端口 2、打开quartus II,选择Tools→Programmer→ Mode选择Active Serial Programming 3、点击左侧Add file…,选择 .pof 文件 →start 4、勾选program和verify(可选&#xff0…

浅谈网络 | 容器网络之Flannel

目录 云原生网络架构深度解构:Flannel的设计哲学与实现机制Flannel架构解析:三层核心设计原则UDP模式(用户态隧道)VXLAN模式(内核态隧道)Host-GW模式(直连路由) 生产环境架构选型与调…

hive:基本数据类型,关于表和列语法

基本数据类型 Hive 的数据类型分为基本数据类型和复杂数据类型 加粗的是常用数据类型 BOOLEAN出现ture和false外的其他值会变成NULL值 没有number,decimal类似number 如果输入的数据不符合数据类型, 映射时会变成NULL, 但是数据本身并没有被修改 创建表 创建表的本质其实就是在…

2025创业思路和方向有哪些?

创业思路和方向是决定创业成功与否的关键因素。以下是一些基于找到的参考内容的创业思路和方向,旨在激发创业灵感: 一、技术创新与融合: 1、智能手机与云电视结合:开发集成智能手机功能的云电视,提供通讯、娱乐一体化体…

Three.js实战项目02:vue3+three.js实现汽车展厅项目

文章目录 实战项目02项目预览项目创建初始化项目模型加载与展厅灯光加载汽车模型设置灯光材质设置完整项目下载实战项目02 项目预览 完整项目效果: 项目创建 创建项目: pnpm create vue安装包: pnpm add three@0.153.0 pnpm add gsap初始化项目 修改App.js代码&#x…

年化19.3%策略集|ctpbee_api替换成openctp整合backtrader实盘方案(代码+数据)

原创内容第782篇,专注量化投资、个人成长与财富自由。 昨天我们把backtraderctpbee的实盘整合代码跑通了,年化19.3%,回撤仅8%的实盘策略,以及backtrader整合CTPBee做实盘(附python代码和数据) 这两周我们加…

Android Studio 正式版 10 周年回顾,承载 Androider 的峥嵘十年

Android Studio 1.0 宣发于 2014 年 12 月,而现在时间来到 2025 ,不知不觉间 Android Studio 已经陪伴 Androider 走过十年历程。 Android Studio 10 周年,也代表着了我的职业生涯也超十年,现在回想起来依然觉得「唏嘘」&#xff…

OpenEuler学习笔记(十四):在OpenEuler上搭建.NET运行环境

一、在OpenEuler上搭建.NET运行环境 基于包管理器安装 添加Microsoft软件源:运行命令sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm,将Microsoft软件源添加到系统中,以便后续能够从该源安装.…

Vscode编辑器下 Markdown无法显示图片

1.问题 在vscode 编辑器中无法预览 markdon 文件中的图片 2.解决方案 大部分出现这种情况是因为新版本的vscode会阻拦有风险的资源显示,将安全等级调低即可。 方式一: 1.打开任意 MD 文件,ctrl,调出设置 2. 输入 markdown.ch…

php-phar打包避坑指南2025

有很多php脚本工具都是打包成phar形式,使用起来就很方便,那么如何自己做一个呢?也找了很多文档,也遇到很多坑,这里就来总结一下 phar安装 现在直接装yum php-cli包就有phar文件,很方便 可通过phar help查看…