git基本使用(一):git的基本概念

        Git 是一种分布式版本控制系统,最初由 Linus Torvalds 于 2005 年为 Linux 内核开发。它主要用于跟踪文件的更改,特别是在软件开发过程中,可以帮助团队成员协同工作。它在实际项目开发中,应用非常广泛,我们这一节来掌握它的基本使用,为以后工作做个铺垫。

一、git安装

二、git基本概念

       git可以实现代码的版本控制,有利于实际项目的开发,实际上项目的开发分为很多个阶段,每个阶段便构成了代码的不同的版本,它保存了代码的整个开发过程,分模块,分阶段,这样,团队开发的效率就会得到提升,当多个开发者一起工作时,每个人都在不同的地方修改代码。没有版本控制,大家会不断覆盖彼此的工作。版本控制系统就像一个超级助手,帮每个人记录他们的修改,并在需要时合并这些修改,确保每个人的工作都能被正确地整合。可以把它比作一个“时间机器”或者一个超级智能的“备忘录”,用来记录和管理文件(特别是代码)变化的历史。想象你在写一本书,每次写完一部分都能按下一个按钮,保存当前的状态。这样,你随时可以回到任何一个保存过的版本,无论你后来对书做了多少修改。Git 就是这样的时间机器,每次你提交(commit)代码,它就会记录当前的状态,让你可以随时回到以前的版本。

2.1 相关概念

  1. git        是软件 ,linux上就是命令、windows上就是应用程序(进行代码版本控制)
  2. github  网站(国外的托管代码平台,存储代码)
  3. gitee    阿里,码云(国内的代码托管平台)

2.2 代码版本控制的发展阶段

2.2.1 集中式代码管理

       集中式版本控制系统(CVCS)依赖于一个中央服务器来存储所有的版本文件。用户从中央服务器中检出代码的工作副本,进行修改后再提交回中央服务器。多个开发人员在本地开发代码,只有代码的最新版本,都将代码上传至服务器,服务器会存储代码的各个历史版本,如果服务器坏掉了,在服务器的各个历史版本都没有了,以后想要找之前的版本,再进行开发其他的项目,就没办法进行了。

特点:

  1. 中央仓库: 所有代码都存储在一个中央仓库中。
  2. 简单管理: 管理和设置相对简单,适合小团队和项目。
  3. 依赖网络: 操作需要与中央服务器的连接,离线工作不便。
  4. 冲突处理: 冲突处理通常在提交到中央服务器时进行。

优点:

  • 易于理解和管理。
  • 适合小型团队,简单的工作流程。
  • 所有的版本历史保存在一个地方,易于备份和恢复。

缺点:

  • 单点故障:中央服务器若出现故障,整个团队的开发工作可能会中断。
  • 不支持离线工作:离线时无法提交代码,也无法获取最新的代码更新。

常见工具:

  • Subversion (SVN)
  • Perforce

2.2.2 分布式代码管理

      分布式版本控制系统(DVCS)允许每个用户拥有代码库的完整副本。用户可以在自己的本地仓库中进行修改和提交,然后再与其他用户或中央仓库进行同步。每个开发人员都会有代码的各个历史版本,你写好了最新版本,提交到服务器上,别人要用,就会下载,下载下来会把各个历史版本的代码都下载下来,这样的好处就是,不怕服务器坏掉,坏掉之后,开发人员再上传就好,因为开发人员都有各个历史版本的代码。

特点:

  1. 本地仓库: 每个开发者都拥有整个代码库的本地副本,包括历史记录。
  2. 离线工作: 允许在离线状态下进行提交和其他版本控制操作。
  3. 分布式协作: 支持开发者之间更灵活的协作和分支管理。
  4. 冲突处理: 冲突处理在本地仓库与其他仓库同步时进行。

优点:

  • 无单点故障:即使中央仓库不可用,开发者也可以继续工作。
  • 支持离线工作:开发者可以在任何时间进行提交和其他操作。
  • 更好的性能:大部分操作都是本地完成的,速度更快。
  • 灵活的协作:支持更复杂的分支和合并策略,适合大型项目和分布式团队。

缺点:

  • 初始学习曲线较陡:需要学习如何处理本地和远程仓库的同步。
  • 存储需求大:每个开发者都需要存储整个代码库的副本。
  • 复杂管理:大规模协作时,可能需要更复杂的管理和工具支持。

常见工具:

  • Git
  • Mercurial

2.3 git属于分布式代码管理工具

三、 git的使用

3.1 四个工作区

         git本地有四个工作域:工作区(working directory), 暂存区(stage/index), 本地仓库(repository)。远程仓库(远程服务器上的git仓库(remote directory))。其关系如下:

  1. 工作区,就是你平时存放项目代码的地方
  2. 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
  3. 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数 据。其中HEAD指向最新放入仓库的版本
  4.  远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

3.2 工作流程

git工作的一般流程:

  1. 在工作目录中添加,修改文件
  2. 将需要进行版本管理的文件放入暂存区
  3. 将暂存区的文件提交到git仓库

3.3  git基本命令

3.3.1   创建本地仓库,提交代码

注意事项: 第一次使用git命令提交代码之前,需要先设置用户名及邮箱,之后就不需要了:

   git status 查看状态, 如果工作区的代码和本地仓库最新版本的一致,就会显示无文件要提交,干净的工作区。给本地仓库提交一个版本,都会有一个唯一的编号,来标识。往暂存区可以add很多次,然后一次性提交很多到仓库。

经过以上几步,我们就可以将我们写的代码存放到本地的仓库中。我们进行简单总结:

  1. git init :             初始化仓库,将存放代码的目录变为一个可以通过git管理的仓库
  2. git add 代码文件名 : 将代码文件添加到暂存区
  3. git commit -m "版本描述信息" : 将代码从暂存区提交到本地仓库
  4. git log :            可以查看提交的历史记录

 

  1. git reflog 查看对仓库做的操作
  2. git status 查看仓库状态,有些操作必须保证工作区是干净的才可以做
  3. git reset --hard HEAD^^ 几个^就是回退几个版本
  4. git reset --hard 编号 回到哪个版本

3.3.2  其他常用操作

 1、比较版本差异:使用git diff HEAD命令,HEAD也可以省略默认就是与最近 一次比较。

        使用git diff HEAD 比较当前内容与最后一次提交的版本的差异,如下在main.c中添加了一行内容,显示添加的一行前面有‘+’号标识。如果内容相同则该命令不显示输出结果。HEAD也可以省略默认就是与最近 一次比较。 

2、撤销本次修改:使用git checkout filename 放弃对工作区代码的修改。

3、从暂存区撤销:使用git reset HEAD filename 从暂存区撤销

       注意:在暂存区中的文件可以撤销,但是加入到仓库中的文件就不能撤回了  ,必须要重新提交新的修改后的文件才可以。

至此,就将使用命令的方式来使用git介绍完毕,掌握最基本的操作,是我们以后工作的基础,下一节我们将介绍git分支的操作命令,感谢阅读,如果喜欢,点赞关注加收藏!

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

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

相关文章

C++ STL unique_ptr智能指针源码剖析

由于上一篇博客将shared_ptr,weak_ptr,enable_shared_form_this的源码实现整理了一遍,想着cpp智能指针还差个unique_ptr故写下此篇博客,以供学习 源码剖析 一,模板参数 首先,我们先看unique_ptr的模板参数,第一个参数_TP自是不用说表示对象类型,第二个模板参数定义了unique_p…

高电压技术-冲击高压发生器MATLAB仿真

微❤关注“电气仔推送”获得资料(专享优惠) 冲击电压发生器是产生冲击电压波的装置,用于检验电力设备耐受大气过电压和操作过电压的绝缘性能,冲击电压发生器能产生标准雷电冲击电压波形,雷电冲击电压截波,标准操作冲击…

优盘“盘符显示0字节”深度解析与全方位恢复指南

一、现象揭秘:优盘盘符下的“数字黑洞” 在数字化生活的洪流中,优盘作为便携存储的佼佼者,承载着无数人的重要数据与记忆。然而,当您满怀期待地将优盘插入电脑,却愕然发现其盘符下赫然标注着“0字节”,这份…

【Kali-linux for WSL】图形化界面安装

文章目录 前言图形化界面安装 前言 之前在WSL中安装了Kali 启动之后发现什么都没有!!! 那我还怎么学习渗透技术??? 看来,得改进下我的kali-linux for wsl,安装个图形化界面 图形化…

leetcode-19-回溯-组合问题(剪枝、去重)

引自代码随想录 一、[77]组合 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4]] 1、大致逻辑 k为树的深度,到叶子节点的路径即为一个结果 开始索引保证不…

强对抗的 SquidLoader 针对中国企业发起攻击

研究人员近期发现了一种高对抗强度的 Loader,其通过钓鱼邮件附件传递给受害者。根据恶意软件所具备的引诱和规避行为,研究人员将其命名为 SquidLoader。SquidLoader 最早在 2024 年 4 月下旬被发现,但研究人员认为其至少已经活跃了一个月以上…

VUE3解决跨域问题

本文基于vue3 vite element-plus pnpm 报错:**** has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource. 原因:前端不能直接访问其他IP,需要用vite.config.ts &#xff0…

【一生一芯】笔记

文章目录 一级目录二级目录三级目录缓存的验证 一级目录 Data, 二级目录 三级目录 缓存的验证

应急响应:应急响应流程,常见应急事件及处置思路

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需…

基于X86+FPGA+AI的芯片缺陷检测方案

应用场景 随着半导体技术的发展,对芯片的良率要求越来越高。然而集成电路芯片制造工艺复杂,其制造过程中往往产生很多缺陷,因此缺陷检测是集成电路制造过程中的必备工艺。 客户需求 小体积,低功耗 2 x USB,1 x LAN Core-i平台无…

CVE-2020-26048(文件上传+SQL注入)

简介 CuppaCMS是一套内容管理系统(CMS)。 CuppaCMS 2019-11-12之前版本存在安全漏洞,攻击者可利用该漏洞在图像扩展内上传恶意文件,通过使用文件管理器提供的重命名函数的自定义请求,可以将图像扩展修改为PHP&#xf…

【微服务】微服务之Feign 与 Ribbon

文章目录 强烈推荐引言优点Feign示例什么是Ribbon?Ribbon 的优点Netflix Feign 和 Ribbon整合Feign 与 Ribbon 的关系Feign 与 Ribbon 结合使用的示例配置文件(application.yml)说明: Feign 与 Ribbon 结合使用的应用场景1. 动态服…

OpenStack开源虚拟化平台(二)

目录 三、对象存储服务Swift(一)Swift特性(二)应用场景(三)Swift主要组件(四)Swift基本原理(五)实例分析 四、镜像服务Glance(一)Glan…

STM32自己从零开始实操08:电机电路原理图

一、LC滤波电路 其实以下的滤波都可以叫低通滤波器。 1.1倒 “L” 型 LC 滤波电路 1.1.1定性分析 1.1.2仿真实验 电感:通低频阻高频的。仿真中高频信号通过电感,因为电感会阻止电流发生变化,故说阻止高频信号 电容:隔直通交。…

华为云服务器系统重装

文章目录 1 登录云服务器,点击控制台2 选择实例3 点击更多,选择重装系统4 勾选关机,填写密码,点击确定5 选择自己方便的认证方式6 同意协议7 等待完成8 重装完毕 1 登录云服务器,点击控制台 2 选择实例 3 点击更多&…

C语⾔数据类型和变量

C语⾔数据类型和变量 1.数据类型介绍1.1 字符型1.2 整型1.3 浮点型1.4 布尔类型1.5 各种数据类型的长度1.5.1 sizeof操作符1.5.2 数据类型长度1.5.3 sizeof中表达式不计算 2. signed 和 unsigned3. 数据类型的取值范围4. 变量4.1 变量的创建4.2 变量的分类 5. 算术操作符&#…

[每周一更]-(第103期):GIT初始化子模块

文章目录 初始化和更新所有子模块分步骤操作1. 克隆包含子模块的仓库2. 初始化子模块3. 更新子模块 查看子模块状态提交子模块的更改处理子模块路径错误的问题 该问题的缘由是因为:在写某些代码的时候,仓库中有些文件夹,只提交了文件夹名称到…

缓存双写一致性(笔记)

缓存更新方案 旁路缓存模式 这是比较多的 旁路缓存模式:缓存有就返回,没有数据库查询,放入缓存返回。 还有些常用缓存策略 读穿透模式 读穿透和旁路很相似,程序不需要关注从哪里读取数据,它只需要从缓存查询数据。…

海思SS928/SD3403开发笔记4——u盘挂载

首先一定要将u盘格式化成fat32。 挂载 mkdir /mnt/usb mount /dev/sda1 /mnt/usb成功示意图: 取消挂载 umount /mnt/usb

学习笔记——动态路由——OSPF(OSPF协议的工作原理)

八、OSPF协议的工作原理 1、原理概要 (1)相邻路由器之间周期性发送HELLO报文,以便建立和维护邻居关系 (2)建立邻居关系后,给邻居路由器发送数据库描述报文(DBD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器…