Git——入门介绍

news2024/11/25 2:46:02

目录

  • 1.Git概述
    • 1.1.版本控制
    • 1.2.版本控制工具
      • 1.2.1集中式版本控制工具
      • 1.2.2分布式版本控制工具
    • 1.3.Git 工作机制
    • 1.4.Git 和代码托管中心
  • 2.Git下载安装
    • 2.1.Git下载
    • 2.2.Git安装
  • 3.Git常用命令
    • 3.1.设置用户签名
    • 3.2.初始化本地库
    • 3.3.查看本地库状态
    • 3.4.添加暂存区
    • 3.5.提交本地库
    • 3.6.修改文件(hello.txt)
    • 3.7.历史版本
  • 4.Git分支操作
    • 4.1.分支概述
    • 4.2.分支的优点
    • 4.3.分支操作命令
      • 4.3.1.查看分支
      • 4.3.2.创建分支
      • 4.3.3.切换分支
      • 4.3.4.修改分支
      • 4.3.5.合并分支
      • 4.3.6.产生冲突
      • 4.3.6.产生冲突
  • 5.Git 团队协作机制
    • 5.1.团队内协作
    • 5.2.跨团队协作

本文章笔记整理来自尚硅谷视频https://www.bilibili.com/video/BV1vy4y1s7k6,相关资料可在评论区获取。

1.Git概述

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。此外,Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。

1.1.版本控制

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。它最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。版本控制的意义在于可以让个人开发过渡到团队协作

1.2.版本控制工具

1.2.1集中式版本控制工具

集中化的版本控制系统诸如 CVS、SVN 、VSS等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。其优缺点如下:

优点每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。
缺点中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
在这里插入图片描述

1.2.2分布式版本控制工具

像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
① 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
② 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
在这里插入图片描述

1.3.Git 工作机制

在这里插入图片描述

1.4.Git 和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库

局域网GitLab
互联网GitHub(外网)、Gitee 码云(国内网站)

2.Git下载安装

2.1.Git下载

Git官方网站的地址为:https://git-scm.com/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.Git安装

双击下载的安装程序,按照如下步骤进行安装:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
命令行窗口:
在这里插入图片描述
图形界面窗口:
在这里插入图片描述

3.Git常用命令

Git中常用的命令如下:

命令名称作用
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱设置用户签名
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m “日志信息” 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭

3.1.设置用户签名

(1)命令

git config --global user.name 用户名
git config --global user.email 邮箱

(2)查看设置是否成功(自己电脑上用户名称目录的.gitconfig文件)
在这里插入图片描述
(3)签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码。此外,这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。

3.2.初始化本地库

① 新建一个空目录
在这里插入图片描述
② 在Git中进入到该目录下
在这里插入图片描述
③ 初始化本地库
在这里插入图片描述
在这里插入图片描述

3.3.查看本地库状态

(1)首次查看(工作区没有任何文件)
在这里插入图片描述
(2)新增文件hello.txt(Git中的一些命令于Linux中的是一样的,因为它们都由Linus Torvalds开发的)
在这里插入图片描述
(3)再次查看本地库状态(检测到未追踪的文件)
在这里插入图片描述

3.4.添加暂存区

① 将工作区的文件hello.txt添加到暂存区
在这里插入图片描述
② 查看状态(检测到暂存区有新文件)
在这里插入图片描述
如果想要删除暂存区中的hello.txt文件,只需执行上面提示的命令"git rm --cached 文件名"即可(但是本地的hello.txt依然存在)

3.5.提交本地库

① 将暂存区中的hello.txt提交到本地库
在这里插入图片描述
② 再次查看本地库状态
在这里插入图片描述
③ 查看历史版本记录
在这里插入图片描述

3.6.修改文件(hello.txt)

① 修改hello.txt文件(在第一行末尾添加222222)
在这里插入图片描述
② 查看状态(检测到工作区有文件被修改)
在这里插入图片描述
③ 将修改的文件再次添加暂存区
在这里插入图片描述
④ 查看状态(工作区的修改添加到了暂存区)
在这里插入图片描述
⑤ 将暂存区中修改后的的hello.txt提交到本地库,并查看本地库状态
在这里插入图片描述
⑥ 查看历史版本记录,此时本地库便会有两个版本。
在这里插入图片描述

3.7.历史版本

① 查看历史版本
基本语法

# 查看历史记录
git reflog
# 查看详细的版本历史记录
git log

实例操作:
在这里插入图片描述
② 版本穿梭
基本语法:

git reset --hard 版本号

实例操作(回到第一次提交的版本):
在这里插入图片描述
在.git目录下的HEAD文件中可以查看当前指针指向的分支(目前为master),然后在.git/refs/heads目录下的master文件中可以查看当前分支上具体的版本号。总结一下,Git 切换版本,底层其实是移动的 HEAD 指针
在这里插入图片描述
在这里插入图片描述

4.Git分支操作

在这里插入图片描述

4.1.分支概述

在版本控制过程中,同时推进多个任务,我们可以为每个任务创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本(分支底层其实也是指针的引用)。
在这里插入图片描述

4.2.分支的优点

(1)同时并行推进多个功能开发,提高开发效率。
(2)各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败
的分支删除重新开始即可。

4.3.分支操作命令

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

4.3.1.查看分支

(1)基本语法:git branch -v
(2)实例操作:
在这里插入图片描述

4.3.2.创建分支

(1)基本语法:git branch 分支名
(2)实例操作,创建一个名为hot-fix的分支并再次查看分支信息。
在这里插入图片描述

4.3.3.切换分支

(1)基本语法:git checkout 分支名
(2)实例操作,切换到hot-fix分支上
在这里插入图片描述

4.3.4.修改分支

(1)在 hot-fix 分支上对hello.txt文件做修改(最后一行上添加the action on hot-fix)
在这里插入图片描述
(2)将hot-fix分支上修改后的hello.txt提交到本地库
在这里插入图片描述
(3)查看版本历史记录
在这里插入图片描述

4.3.5.合并分支

(1)基本语法:git merge 分支名
此处需要注意的是要想将hot-fix分支合并到master分支上,需要先站到master的角度(即切到master分支),然后再进行合并操作。
(2)实例操作,将hot-fix分支合并到master分支上
在这里插入图片描述

4.3.6.产生冲突

(1)在master分支上再次修改hello.txt文件,并提交到本地库
在这里插入图片描述
(2)切换到hot-fix分支,再次修改hello.txt文件,并提交到本地库
在这里插入图片描述
(3)切换回master分支,并再次进行合并操作
在这里插入图片描述
冲突产生的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个,必须人为决定新代码内容。

4.3.6.产生冲突

(1)编辑有冲突的文件,删除特殊符号,决定要使用的内容。
特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix
在这里插入图片描述
在这里插入图片描述
(2)将最终版本提交到本地库(注意:此时使用 git commit 命令时不能带文件名
在这里插入图片描述
在这里插入图片描述

5.Git 团队协作机制

5.1.团队内协作

在这里插入图片描述

5.2.跨团队协作

在这里插入图片描述

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

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

相关文章

6、python的高级特性(生成式、生成器、闭包、装饰器)

文章目录生成式列表生成式字典生成式集合生成式生成器生成器的实现方式将生成式改写成生成器。将[ ] 改成 ( )使用yield关键字闭包装饰器生成式 列表生成式 在“先有一个空列表&#xff0c;然后通过循环依次将元素添加到列表中”的场景&#xff0c;可以使用列表生成式。 列表…

核心解读 - 2022版智慧城市数字孪生标准化白皮书

核心解读 - 2022版智慧城市数字孪生标准化白皮书前言&#xff1a;城市数字孪生基本概念一、城市数字孪生概述1、城市数字孪生内涵及概念模型2、城市数字孪生典型特征3、城市数字孪生相关方4、城市数字孪生技术参考架构5、城市数字孪生关键技术二、智慧城市数字孪生发展现状1、政…

JMeter下载及安装配置教程

参考&#xff1a;入门部署教程 – Jmeter中文网 本文是在win10环境下安装使用jmeter&#xff0c;jmeter可以运行在多平台上Windows和Linux。 环境准备&#xff1a; java 8 jmeter 5.1.1 jmeter环境 jmeter环境依赖JAVA环境&#xff0c;需安装JDK1.8环境&#xff0c;JDK下载地…

基于若依springboot二次开发WMS带移动端管理系统vue源码

系统是前后端分离的架构&#xff0c;前端使用Vue2&#xff0c;后端使用SpringBoot2。搭建部署的方式也是挺简单的&#xff0c;还带有uniapp开发的多端移动端扫码入库功能 技术架构 技术框架&#xff1a;SpringBoot2.0.0 Mybatis1.3.2 Shiro swagger-ui jpa lombok Vue2 …

轻薄笔记本能不能带起来高刷的显示器??

先说结论&#xff0c;新款集显也可以&#xff0c;用TYPC或者DP线连&#xff0c;使用时关闭主屏&#xff0c;只显示外屏。 这个问题&#xff0c;已经困扰了很久~~~ 软件上&#xff0c;windows以主屏作为主刷新率&#xff0c;除非笔记本自身是高刷屏&#xff0c;否则请只使用外…

单应性矩阵在标定中的应用

1.单应性矩阵是什么&#xff1f; 言简意赅定义&#xff1a;定义在两个不同视角中对同一平面范围内的特征点的射影变换&#xff08;projective transformation&#xff09;即&#xff1a; x1 H*x2 //x1、x2为匹配点 上图中x&#xff0c;x‘为一对匹配点&#xff0c;通过单应矩…

Pytest自动化框架运行全局配置文件pytest.ini

前言 还记得在之前的篇章中有讲到Pytest是目前主要流行的自动化框架之一&#xff0c;他有基础的脚本编码规则以及两种运行方式。 pytest的基础编码规则是可以进行修改&#xff0c;这就是今日文章重点。 看到这大家心中是否提出了两个问题&#xff1a;pytest的基础编码规则在…

Array_JavaScript

Array 学习路线&#xff1a;JavaScript基础语法&#xff08;输出语句&#xff09;->JavaScript基础语法&#xff08;变量&#xff09;->JavaScript基础语法&#xff08;数据类型&#xff09;->JavaScript基础语法&#xff08;运算符&#xff09;->JavaScript基础语…

python数据容器——列表

目录 一.数据容器 二.数据容器——列表 基本语法 注意 三.列表的下标&#xff08;索引&#xff09; 嵌套列表的下标&#xff08;索引&#xff09; 四.列表的常用操作&#xff08;方法&#xff09; 1.查询元素下标 2.插入元素 3.删除元素 4.统计元素 说明 一.数据容器 1&a…

使用react-sizeme解决react-grid-layout中侧栏(抽屉)展开或隐藏时不会自适应容器大小的问题

文章目录使用react-sizeme解决react-grid-layout中侧栏(抽屉)展开或隐藏时不会自适应容器大小的问题前提概要问题代码解决代码参考使用react-sizeme解决react-grid-layout中侧栏(抽屉)展开或隐藏时不会自适应容器大小的问题 前提概要 在上一篇博文中&#xff0c;我们讲到了使…

postgres源码解析38 表创建执行全流程梳理--2

本小节主要讲解查询执行模块&#xff0c;有机地调用存储、索引、事务、并发等模块&#xff0c;按照执行计划中的计划节点&#xff08;操作执行接口&#xff09;完成数据的读取或者修改。知识回顾&#xff1a;postgres源码解析37 表创建执行全流程梳理–1 关键数据结构 总图&a…

八、【React-Router5】路由组件传参

文章目录1、实现效果2、向路由组件传递参数总览3、修改上一节代码3.1、项目结构变更如下3.2、CODE&#xff08;params传参&#xff09;3.2.1、Messages.jsx3.2.2、Detail.jsx3.2.3、Result3.3、CODE&#xff08;search传参&#xff09;3.3.1、Messages.jsx3.3.2、Detail.jsx3.3…

【强化学习论文】小样本策略泛化的提示决策转换器

文献题目&#xff1a;Prompting Decision Transformer for Few-Shot Policy Generalization 摘要 人类可以利用先前的经验并从少量演示中学习新任务。与旨在通过更好的算法设计实现快速适应的离线元强化学习相比&#xff0c;我们研究了架构归纳偏差对少样本学习能力的影响。我…

RationalDMIS2022车削件(轴类)测量:回转体检测

1.坐标系知识 在三坐标测量机的使用中,坐标系的建立是最为关键的一步,是工件测量的基本依据。设备在组装本身中有着XYZ三个互相垂直的坐标轴,因此坐标系的建立便是通过以工件上的特征作为依据建立XYZ三个互相垂直的坐标轴与设备的坐标轴进行对应,从而使程序得以运行。 物…

虚拟机安装

虚拟机安装 能看到这里说明你的电脑中已经安装的有虚拟机了&#xff0c;如果没有虚拟机可以先下载安装一些虚拟机。 有了虚拟机后首先要准备的就是镜像&#xff0c;我用的是CentOS-7。如果没有的也可以百度或者去阿里云下载即可。 选择下载以ISO结尾的文件&#xff0c;可选类型…

SLAM学习笔记(二)

5.相机与图像 相机将三维世界中的坐标点&#xff08;单位米&#xff09;映射到二维图像平面&#xff08;单位为像素&#xff09;的过程中能够用一个几何模型进行描述。 单目相机(Mono)的成像过程&#xff1a; 1、世界坐标系下有个固定的点P&#xff0c;世界坐标为 2、由于相…

关于quartus 13.1出现的问题的一些总结

1&#xff0c;如果IP核的版本与当前的quartus ii版本不一致的情况&#xff0c;有时候虽然能编译成功&#xff0c;但是无法修改原有工程的IP核参数设置。 如&#xff1a; 之前我下载的工程用到的NCO IP核是12.1 version的&#xff0c;但是我用到的quartus 版本是13.0和13.1&am…

led灯什么牌子的质量好?2022双十二家用护眼台灯推荐

台灯作为一种晚上或者其他黑暗条件下的照明灯具&#xff0c;对于经常熬夜的人群来说可以说是必备工具了&#xff0c;无论是看书、写字&#xff0c;还是工作、学习&#xff0c;都非常实用&#xff0c;它不同于平常的家用的室内照明顶灯&#xff0c;光线不会那么刺眼&#xff0c;…

uni-app入门:小程序UI组件Vant Weapp

1.vant介绍 2.安装步骤 2.1 通过 npm 安装 2.2 修改 app.json 2.3 修改 project.config.json 2.4 构建 npm 包 3.使用说明 1.vant介绍Vant Weapp 是一个轻量、可靠的移动端组件库&#xff0c;于 2017 年开源,是由有赞前端团队开…

Mysql 安装与卸载

MySQL8.0.26-Linux版安装 文章目录MySQL8.0.26-Linux版安装1. 安装1.1 准备一台Linux服务器1.2. 下载Linux版MySQL安装包1.3. 上传MySQL安装包1.4. 创建目录,并解压1.5. 安装mysql的安装包1.6. 启动MySQL服务1.7. 查询自动生成的root用户密码1.8. 修改root用户密码1.9. 创建用户…