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

news2024/10/5 22:11:12

        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.coloradmin.cn/o/1885663.html

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

相关文章

第2章.现场设备的物联网模式--设备管理

2.3 设备管理 设备的作用及其管理方式是物联网和非物联网部署之间的关键区别。设备生命周期管理的阶段包括设备供应(注册、激活和调试)到取消供应。本书中用于设备管理的注释如下图所示: 图2.6——设备管理模式的符号 设备管理包括现场设备的…

Power Platform功能管理实战课程重点学什么?怎么学?

Power Platform 由 Power BI、Power Apps、Power Automate、Power Virtual Agents 四大模块组成。 这几个模块单独应用都具有强大的功能,而微软把它们放在一起,相互协作、相得益彰,形成了强大的生态系统。而这也是Power Platform的核心理念—…

Java案例实现双色球

一问题&#xff1a; 二具体代码&#xff1a; package 重修;import java.util.Random; import java.util.Scanner;public class first {public static void main(String[] args) {int []usersnumbersusernumslect();System.out.println("用户");for (int i 0; i <…

springboot个人证书管理系统-计算机毕业设计源码16679

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了个人证书管理系统的开发全过程。通过分析个人证书管理系统管理的不足&#xff0c;创建了一个计算机管理个人证书管理系统的方案。文章介绍了个人证书管理系统的系…

计算机系统基础(二)

1.数值数据的表示 为什么采用二进制&#xff1f; 二进制只有两种基本状态&#xff0c;两个物理器件就可以表示0和1二进制的编码、技术、运算规则都很简单0和1与逻辑命题的真假对应&#xff0c;方便通过逻辑门电路实现算术运算 数值数据表示的三要素 进位记数制&#xff08;十…

开发数字药店APP实战:互联网医院系统源码详解

本篇文章&#xff0c;笔者将深入探讨如何开发一个功能完善的数字药店APP&#xff0c;并详细解析互联网医院系统的源码实现。 一、数字药店APP的需求分析 应具备以下基本功能&#xff1a; 用户注册与登录 药品搜索与浏览 在线下单与支付 订单管理 健康咨询与远程医疗 个人…

发电机保护屏组成都有哪些,如何选择

发电机保护屏组成都有哪些&#xff0c;如何选择 发电机是电力系统中最常用的一种电力设备。例如水力发电机&#xff0c;柴油发电机&#xff0c;风力发电机&#xff0c;火力发电等等。发电机保护是保证发电机安全、稳定运行的重要手段之一。对于一些小型机组的发电机&#xff0c…

Mysql部署MHA高可用

部署前准备&#xff1a; mysql-8.0.27下载地址&#xff1a;https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar mha-manager下载地址&#xff1a;https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-mana…

因为自己淋过雨所以想给嵌入式撑把伞

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;新手学嵌入式&#xff0c;…

PHP验证日本固定电话号码

日本电话号码格式众多&#xff0c;验证起来比较头大&#xff0c;现在咱们来一个简单的总结哈 为了简单起见&#xff0c;使用PCRE 函数preg_match通过匹配正则表达式来实现验证。 function checkGdTelLandline(string $str): int|false {return preg_match("/\A0(\d{1}[-…

积鼎CFD:基于Virtualflow在溃坝洪水演进数值仿真分析

近期&#xff0c;多地遭受了前所未有的洪水侵袭&#xff0c;每一次灾害都如同警钟长鸣&#xff0c;提醒我们水库大坝安全的重要性&#xff0c;超标准暴雨的突袭让大坝的安全防线面临前所未有的考验。面对这一挑战&#xff0c;CFD技术可为溃坝洪水的预测与管理开辟新的路径。凭借…

python+django 环境搭建以及post接口封装

1、搭建pythondjango环境 python 3.7.9的版本 具体参考之前的安装教程 django 使用 pip install django 会自动安装 检验安装版本&#xff1a; python -m django --version 2、创建django项目 django-admin startproject projectname 启动项目&#xff1a;python manage.py…

基于X86+FPGA+AI的切割机控制、六轴机器人控制方案

一、智能设备控制 应用场景 智能制造(Intelligent Manufacturing, IM)是一种由智能机器和人类专家共同组成的人机一体化智能系统&#xff0c;它在制造过程中能进行智能活动&#xff0c;诸如分析、推理、判断、构思和决策等。通过人与智能机器的合作共事&#xff0c;去扩大、延…

力扣 用队列实现栈(Java)

核心思想&#xff1a;因为队列都是一端进入另一端出&#xff08;先进先出&#xff0c;后进后出&#xff09;&#xff0c;因此一个队列肯定是不能实现栈的功能的&#xff0c;这里就创建两个队列来模拟栈的先进后出&#xff0c;后进先出。 比如说如果是push操作我们肯定是要弹出栈…

用四个场景案例,分析使用大模型对程序员工作的帮助提升_大模型应用场景

引言 随着人工智能技术的不断发展&#xff0c;大模型在软件开发中的应用越来越广泛。 这些大模型&#xff0c;如GPT、文心一言、讯飞星火、盘古大模型等&#xff0c;可以帮助程序员提高工作效率&#xff0c;加快开发速度&#xff0c;并提供更好的用户体验。 本文将介绍我在实…

MeowBot:ESP32 语音控制宠物猫 DIY 教程——玩转语音识别与 MQTT 智能家居控制 (附代码解析)

摘要: 本文将手把手教你打造一只名为 MeowBot 的智能宠物猫&#xff01;它不仅可以通过舵机灵动地打招呼&#xff0c;还能听懂你的语音指令&#xff0c;帮你控制智能家居设备。让我们一起开启这段充满乐趣的 DIY 之旅吧&#xff01; 关键词: ESP32、语音识别、MQTT、智能家居、…

独立开发者系列(15)——git的使用

上一篇14文章触发了敏感话题&#xff0c;直接未过审核&#xff0c;看来技术博客也有敏感点。 大部分情况下&#xff0c;独立项目是你一个人开发&#xff0c;但是当你接的项目比较大的时候&#xff0c;你需要其他人的帮忙&#xff0c;这个时候你要把代码分享给别人。因为如果你…

跨境业务经验推荐:三大优秀的IP代理服务商

作为一名多年从事跨境业务的老手&#xff0c;今天我要给大家介绍几款绝对靠谱的IP代理服务商&#xff0c;保证让你的全球业务更加顺畅&#xff01; 1. 711Proxy 711Proxy以其优秀的性能和覆盖范围广而著称。对于跨境电商和国际业务来说&#xff0c;快速稳定的网络连接至关重要…

容器技术-docker5

一、docker-compose 常用命令和指令 1. 概要 默认的模板文件是 docker-compose.yml&#xff0c;其中定义的每个服务可以通过 image 指令指定镜像或 build 指令&#xff08;需要 Dockerfile&#xff09;来自动构建。 注意如果使用 build 指令&#xff0c;在 Dockerfile 中设置…