Git―基本操作

Git

  • ⛅认识 Git
  • ⛅安装 Git
    • Centos(7.6)
    • Ubuntu
  • ⛅Git―基本操作
    • 创建本地仓库🍂
    • 配置本地仓库🍂
    • 工作区, 暂存区, 版本库🍂
      • 版本库
      • 工作区
    • 添加文件🍂
    • 查看文件🍂
    • 修改文件🍂
    • 版本回退🍂
      • ☃️案例
    • 撤销修改🍂
      • ☃️案例
    • 删除文件🍂

⛅认识 Git


想象如下场景, 一位画师收到了一份邀约画作的任务

这位画师便开始着手作画, 不久后产出作品(version1)

客户收到之后看了看对画师说, 画的很不错, 就是能不能再加些五颜六色的黑?

画师想, 您是甲方, 您说了算. 于是在原来的基础上产出作品(version2)

客户收到之后看了看对画师说, 画的很不错, 就是还缺那么一丝丝忧伤的感觉

画师想, 您是甲方, 您说了算. 于是在原来的基础上产出作品(version3)

客户收到之后看了看对画师说, 画的很不错, 但我还是喜欢你第一版的作品

画师想, 得亏我会用 Git, 于是画师顺利的拿到了第一版的作品并交付给客户

根据上面的描述, 我们大致对 Git 有所了解🍂

  1. Git 是一个版本控制器, 能够记录每次的修改及版本的迭代
    譬如当客户问画师, 你第二版作品做出了什么修改的时候, 画师就可以利用 Git 查看做出了哪些修改
  2. Git 可以控制电脑中的所有格式文档

⛅安装 Git

Centos(7.6)

# 安装 Git 命令
sudo yum install git -y
# 查看 Git 版本
git --version

Ubuntu

# 安装 Git 命令
sudo apt-get install git -y
# 查看 Git 版本
git --version

⛅Git―基本操作

创建本地仓库🍂

# 创建 Git 目录
mkdir gitcode
# 进入创建的 Git 目录
cd gitcode/
# 创建本地仓库
git init
# 查看仓库树形结构
tree .git/

有些小伙伴查看仓库树形结构会弹出 -bash: tree: command not found, 表明所在的系统中没有安装 tree 命令

安装 tree 命令sudo yum install tree

配置本地仓库🍂

配置 name 和 email 避免后续向本地仓库提交内容时出错

# 配置当前仓库下的 name
git config user.name "在这里输入 name"
# 配置当前仓库下的 email
git config user.email "在这里输入 email"
# 查看配置是否成功
git config -l
# 删除配置的 name
git config --unset user.name
# 删除配置的 email
git config --unset user.email
# 配置所有仓库下的 name
git config --global user.name "在这里输入 name"
# 配置所有仓库下的 email
git config --global user.email "在这里输入 email"
# 删除所有仓库下的 name
git config --global --unset user.name
# 删除所有仓库下的 email
git config --global --unset user.email

注意

通过 git config --global 配置的属性无法通过 git config --unset 进行删除
但可以通过 git config --global --unset 进行删除

工作区, 暂存区, 版本库🍂

版本库


在这里插入图片描述

图中的.git目录就是版本库

不允许对.git目录进行任何的修改

在这里插入图片描述

工作区


在这里插入图片描述
.git是版本库, 与.git处于同一目录下的被称为工作区

图中的ReadMe就处于工作区


在这里插入图片描述

  • stage, 又称为暂存区或者索引(index). 暂存区存放的不是一个个 git 对象, 而是 git 对象的索引
  • add, 将工作区中所有修改的内容添加至版本库的暂存区中
    • 修改包括: (1) 添加 (2) 修改 (3) 删除
  • commit, 将暂存区中的内容提交至 master 分支下. master 分支存放的也是 git 对象的索引

在这里插入图片描述

除去上述内容外, 还存在对象库(Objects), 从而到达对版本的控制
修改的工作区内容会写入到对象库的一个新的 git 对象中
(对比暂存区 → 存放的是 git 对象的索引)

添加文件🍂

# 添加指定文件至暂存区
git add 指定的文件
# 添加当前目录下所有文件至暂存区
git add .
# 提交暂存区的全部文件到本地仓库
git commit -m "提交文件的描述信息"
# 提交暂存区的指定文件到本地仓库
git commit file1 file2 -m "提交文件的描述信息"
# 查看提交记录
git log
# 查看提交记录(简洁版)
git log --pretty=online

查看文件🍂

# 查看 .git 文件内容
git cat-file -p commitId

commitId 可以在 Objects 中查看

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

paraent, 表示上一次的commitId

修改文件🍂

# 查看从上一次提交到现在是否对文件进行过修改
git status
# 查看指定文件的暂存区与工作区的差异
git diff "filename"
# 查看指定文件的版本库与工作区的差异
git diff HEAD -- "filename"

版本回退🍂

# 版本回退
git reset [--soft | --mixed | --hard] [HEAD]
# 查看 git 历史操作 → 用于查找对应的 commitId
git reflog

回退的本质 → 将版本库的内容进行回退

  • --mixed, 默认选项, 使用时可以不带该参数. 将暂存区的内容回退到指定版本
  • --soft, 将版本库的内容回退到指定版本
  • --hard, 将暂存区, 工作区的内容回退到指定版本
  • HEAD
    • 可写成commitId, 表示指定回退的版本
    • HEAD, 表示当前版本
    • HEAD^, 表示上一个版本
    • HEAD^^, 表示上上一个版本
    • 以此类推…

    • 也可以使用~数字表示
      • HEAD~0, 表示当前版本
      • HEAD~1, 表示上一个版本
      • HEAD~2, 表示上上一个版本
      • 以此类推…

☃️案例

  • ReadMe 文件
    • version1.0 提交的内容 → git1
    • version2.0 追加提交的内容 → git2
    • 此时 ReadMe 文件的内容为 git1, git2

现在将 ReadMe 文件的内容进行回退

工作区暂存区版本库参数
git1 git2git1 git2git1 git2
git1 git2git1 git2git1--soft
git1 git2git1git1--mixed
git1git1git1--hard

撤销修改🍂

  • 对于撤销修改, 通常存在3种情况
    • 工作区的代码还没有 add → 情况1
    • 暂存区的代码还没有 commit → 请款2
    • 已经 add & commit → 情况3

对于情况3, 想要撤销修改的前提是没有执行 push 操作到远程仓库

☃️案例

  • ReadMe 文件
    • version1.0 提交的内容 → git1
    • version2.0 追加提交的内容 → git2
    • 此时 ReadMe 文件的内容为 git1, git2
工作区暂存区版本库情况解决方式
git1 git2git1git1情况1git checkout -- "filename"
git1 git2git1 git2git1情况21. git reset HEAD 2. git checkout -- ReadMe
git1 git2git1 git2git1 git2情况3git reset --hard HEAD^

删除文件🍂

# 删除工作区的文件 & add 对应的文件
git rm "filename"
# commit
git commit "filename" -m "提交文件的描述信息"

在这里插入图片描述

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

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

相关文章

【华为OD机试】 最富裕的小家庭【2024 C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值, 一个节点及其直接相连的子节点被定义为一个小家庭。 现给你一颗树,请计算出最富裕的小家庭的财富和。 输入描述 …

k8s中cert-manager管理https证书

前言 目前https是刚需,但证书又很贵,虽然阿里云有免费的,但没有泛域名证书,每有一个子域名就要申请一个证书,有效期1年,1年一到全都的更换,太麻烦了。经过搜索,发现了自动更新证书神器cert-manager;当然cert-manager是基于k8s的。 安装采用Helm方式 Chart地址: ht…

THREE.JS动态场景开发实战【赛博朋克】

在本教程中,我们将探索如何创建类似 Three.js 的赛博朋克场景,灵感来自 Pipe 网站上的背景动画。 我们将指导你完成使用 Three.js 编码动态场景的过程,包括后处理效果和动态光照,所有这些都不需要任何着色器专业知识。 我用这个场…

python tqdm进度条详解

文章目录 1. 语法1.1 tqdm 参数1.2 bar_format案例 2. 基本用法2.1 指定可迭代对象2.2 指定迭代次数2.3 设置显示信息2.3.1 设置进度条前缀(左侧)信息2.3.2 显示进度条后缀(右侧)信息 3. 项目案例参考 tqdm 是 Python 进度条库,可以在 Python 长循环中添加一个进度提…

学术写作|第二篇论文写作记录|GPT4论文润色Prompt

本文目录 写作时间安排如何写出初稿?找谁修改?1. 找AI修改2. 找师姐、师兄、老师、同行/外行修改论文修改意见集锦(反复观看)最好用的GPT4指令禁止转载,未经允许的任何引用。 写作时间安排 第二篇工作的idea去年就想出来了,一直被其他事情干扰,错过了N个会议… 在寒假…

西瓜书学习笔记——k近邻学习(公式推导+举例应用)

文章目录 算法介绍实验分析 算法介绍 K最近邻(K-Nearest Neighbors,KNN)是一种常用的监督学习算法,用于分类和回归任务。该算法基于一个简单的思想:如果一个样本在特征空间中的 k k k个最近邻居中的大多数属于某个类别…

vue+element 换肤功能

1.首先建深色和浅色两个主题样式变量样式表,样式表名和按钮中传入的值一样,本例中起名为default.scss和dark.scss 2.在data中定义主题变量名 zTheme:‘defalut’,默认引用defalut.scss, 在点击按钮时切换引用的样式表,达到换肤效果…

结合实例谈谈SPSS多元线性回归分析结果解读与报告撰写

为研究某地区房地产市场的价格与相关影响因素之间的关系,现从该地区采集了 20 份样本,数据如下表,请给出销售价格与相关影响因素之间的函数表达式,并从统计学角度分析这些因素之间的关系,最后预测 X 小区的平均销售价格…

【洛谷学习自留】p1055 ISBN 号码

解题思路: 1.首先考虑怎么分解字符串的问题,把字符串内的数字拿出来,这里我使用了String的toCharArray方法,将字符串内的所有字符拿出来,然后针对性的把所有数字轮流用于计算,因为数组内的数字是以字符的形…

中小学电子编程内部集中培训第三课

蜂鸣器学习 可视化代码 见链接: 利用小车写蜂鸣器

VMware:在部分链上无法执行所调用的函数,请打开父虚拟磁

VMware:在部分链上无法执行所调用的函数,请打开父虚拟磁 问题:VMware给虚拟机扩展硬盘容量,提示:在部分链上无法执行所调用的函数,请打开父虚拟磁。原因:是因为你的虚拟磁盘文件是分多个文件存储的&#xf…

北朝隋唐文物展亮相广西,文物预防性保护网关保驾护航

一、霸府名都——太原博物馆收藏北朝隋朝文物展 2月1日,广西民族博物馆与太原博物馆携手,盛大开启“霸府名都——太原博物馆北朝隋文物展”。此次新春展览精选了北朝隋唐时期150多件晋阳文物珍品。依据“巍巍雄镇”“惊世古冢”“锦绣名都”三个单元&am…

【程序员的自我修养】7. 动态链接

为什么要动态链接 浪费内存和和磁盘空间 每个程序都得拥有相同的拷贝程序的发布、更新和部署困难 更新任何一个小的模块,整个程序都需要重新链接 动态链接:将链接的过程推迟到运行时 节省内存减少物理页面的换入换出、增加CPU的缓存命中率更新升级方便…

LeetCode--88

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组…

ChatGPT实战100例 - (13) 写一个属于自己的 ChatGPT 新版 WebUI

文章目录 ChatGPT实战100例 - (13) 写一个属于自己的 ChatGPT 新版 WebUI一、ChatGPT(OpenAI)的新版API调用1.1 环境变量配置与调用1.2 新版api调用1.3 命令行流式输出二、Gradio制作自己的聊天WebUIChatGPT实战100例 - (13) 写一个属于自己的 ChatGPT 新版 WebUI 今时不同往日…

某赛通电子文档安全管理系统 UploadFileList 任意文件读取漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

用VsCode写python

1.创建一个文件夹 2.创建.py文件 print("Hello World") print("*"*10) 4.运行 在终端版本fileName python3 app.py

线性代数:线性方程组

目录 一、线性方程组概念 二、消元法求线性方程组 三、系数阵的秩与线性方程组的解 无解 唯一解 无数解 相关定理 一、线性方程组概念 二、消元法求线性方程组 三、系数阵的秩与线性方程组的解 无解 唯一解 无数解 相关定理

Redis -- hash哈希

马行软地易失蹄,人贪安逸易失志。 目录 关于Redis的hash hash命令 hset hget hexists hdel hkeys hvals hgetall hmget hlen hsetnx hash计数 hincrby hincrbyfloat 小结 关于Redis的hash 几乎所有的主流编程语言都提供了哈希(hash&a…

移动机器人激光SLAM导航(三):Hector SLAM 篇

参考引用 Hector_Mapping ROS-Wiki从零开始搭二维激光SLAM机器人工匠阿杰wpr_simulation 移动机器人激光SLAM导航(文章链接汇总) 1. 基于滤波器的 SLAM 问题 1.1 什么是 SLAM 什么是SLAM SLAM 就是为了构建地图用的,这个地图可以保存下来&…