GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件

文章目录

  • GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件
    • 前言
    • 一、安装git
    • 二、git基本操作
      • 2.1 初始化git
      • 2.2 配置局部生效
      • 2.3 配置全局生效
    • 三、认识工作区、暂存区、版本库
      • 3.1 添加文件场景一
      • 3.2 查看添加的文件
      • 3.3 添加文件场景二
    • 四、修改文件
      • 4.1 查看工作区的状态
    • 五、版本回退
    • 六、撤销修改
      • 6.1 情况一:对于工作区的代码,还没有add
      • 6.2 情况二:已经add ,但没有commit
      • 6.3 情况三:已经add ,并且也commit 了
    • 七、删除文件

前言

Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

我们这里就不多介绍这里的GIT了,百度百科和维基百科上都有很多介绍,我们这里就不再介绍,直接来演示~~

下面演示的均是Centos7.6系统,

  • 我们先来检测以下git有没有安装
git --version
  • 如果提示的是这样的就说明没有安装

在这里插入图片描述

一、安装git

  • 执行以下命令,安装git
yum instal -y git
  • 如果执行失败的话就先更新一下系统
yum update -y
  • 然后再检测是否安装成功~

在这里插入图片描述


二、git基本操作

2.1 初始化git

  • 安装好git后,我们就要创建一个本地仓库,就是要初始化一下

创建文件夹

mkdir gitcode

进入文件夹

cd gitcode/

初始化git

git init

查看是否初始化成功

ls -al

在这里插入图片描述

  • 查看隐藏文件git目录下,有什么文件~~

在这里插入图片描述

  • 我们需要设置邮箱和用户名【这里是局部生效的配置用户名和邮箱】

2.2 配置局部生效

配置用户名

git config user.name "shilin"

配置邮箱

git config user.email "intshanxi@163.com"

查看配置

git config -l

在这里插入图片描述


那我想要删除刚刚配置的,就可以执行以下命令

删除用户名

git config --unset user.name

删除邮箱

git config --unset user.email

在这里插入图片描述

2.3 配置全局生效

  • 将配置项生效所有仓库配置项

配置用户名

git config --global user.name "intshanxi"

配置邮箱

git config --global user.email "intshanxi@163.com"

查看刚刚配置的

git config -l

在这里插入图片描述

  • 那我想要删除刚刚配置的,就可以执行以下命令~

删除用户名

git config --global --unset user.name

删除邮箱

git config --global --unset user.email
  • 接下来我们就往这个仓库里生成一个文件
touch ReadMe
  • 在目前情况下,git是不能管理这个文件的~~

在这里插入图片描述


  • 我现在往git里添加了一点东西

在这里插入图片描述


三、认识工作区、暂存区、版本库

3.1 添加文件场景一

  • 我们就来看第一个步骤
git add 文件名

或者只写一个.,这个意思就是全部添加

  • 我们就来看第二个步骤
git commit -m '要描述的细节'

在这里插入图片描述

  • 创建多个文件
touch file1 file2 file3
  • 我们还可以用.来一键添加

在这里插入图片描述

3.2 查看添加的文件

  • 还可以查看最近提交的日志
git log

在这里插入图片描述

  • 我们还可以再打印的简单一点,方便观察
git log --pretty=oneline

在这里插入图片描述

  • 查看git日志后,commit后面的一串字符是(安全哈希算法)加密过的文件

在这里插入图片描述

  • 我们可以通过命令来查看这个具体提交记录
git cat-file -p fc9176efe2397e38411e1ec44b9f58be6e0cc99f

在这里插入图片描述

  • 在其中有一行tree 0e6b1780b73cd9220ec5073dc64b42f7ad4bd945
  • 然后再查看一下这个
git cat-file -p 0e6b1780b73cd9220ec5073dc64b42f7ad4bd945
  • 继续查看文件内容
git cat-file -p 8d0e41234f24b6da002d962a26c2495ea16a425f

在这里插入图片描述

3.3 添加文件场景二

git add file4
touch file5
git commit -m 'add file4'
  • 这里虽然添加了两个文件,但是只有file4添加到了暂存区,提交修改的时候只有file4发生了变化,而file5没有发生变化

在这里插入图片描述

四、修改文件

  • git其实管理的是修改,而不是文件

  • 我们先修改了ReadMe

在这里插入图片描述

4.1 查看工作区的状态

  • 我们查看当前工作区的状态
git status

在这里插入图片描述

  • 那我们想查看修改了哪些内容呢?
git diff 文件名

在这里插入图片描述

  • 这个时候我们再提交一下
git add ReadMe
  • 查看状态
git status

在这里插入图片描述

  • 这个时候就再提交
git commit -m 'add modify ReadMe file'
  • 再查看
git status

在这里插入图片描述

五、版本回退

  • 刚开始文件里的内容只有一行,后来添加了两行

  • 对于这个文件来说是有两个版本的

在这里插入图片描述

  • 这里的回退命令是git reset可以指定某一次提交的版本

  • git reset 命令语法格式为: git reset [--soft | --mixed | --hard] [HEAD]

    • –mixed 为默认选项,使⽤时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容,工作区文件保持不变。
    • –soft 参数对于工作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
    • –hard 参数将暂存区与工作区都退回到指定版本。切记工作区有未提交的代码时不要用这个命令,因为工作区会回滚,你没有提交的代码就再也找不回了,所以使用该参数前一定要慎重。
  • HEAD 说明:
    ◦ 可直接写成 commit id,表示指定退回的版本
    ◦ HEAD 表示当前版本
    ◦ HEAD^ 上一个版本
    ◦ HEAD^^ 上上一个版本
    ◦ 以此类推…

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


  • 查看日志
git log --pretty=oneline
  • 回退到最初版本
git reset --hard eea6e0091277b0e3de6739d0cede91333284b6e7

在这里插入图片描述

  • 可以看到一旦回到这一次,我们后面创建的文件都会被删除
  • 我们再来看文件的内容
cat ReadMe

在这里插入图片描述

  • 查看日志
git log --pretty=oneline

在这里插入图片描述

  • 那有人说我又后悔了怎么办?
  • 想要再回退回去
  • 我们刚刚打印过这一个最新的版本我们就回退到这个版本
git reset --hard b842e9f3f8a267b0957389abae0dbc159d12fd43

在这里插入图片描述

  • 我们再来看一下当前目录下
  • 文件回来了,文件里的内容也会来了

在这里插入图片描述

  • 再来打印这个日志
  • 这个log也回来了
git log --pretty=oneline

在这里插入图片描述

  • 那我回退了最初的版本后,找不到那个字符串了怎么办?
  • 我们还有一种方法

  • 查看
git reflog

在这里插入图片描述

  • 回退版本
git reset --hard b842e9f

在这里插入图片描述

  • 这样就可以回退回去了

  • 那么这里的版本回退为什么会这么快呢?
  • 是因为有一个HEAD指针

在这里插入图片描述

六、撤销修改

  • 如果我们在我们的工作区写了很长时间代码,越写越写不下去,觉得自己写的实在是垃圾,想恢复到上一个版本。

在这里插入图片描述

6.1 情况一:对于工作区的代码,还没有add

  • 我们先对ReadMe进行修改

在这里插入图片描述

  • 我们想撤销我们的代码,我们可以重新再次编辑删除掉那一行代码,就可以了

  • 那写了很多呢?想一次性撤销,那怎么办呢?接下来我们来看~~

  • 查看修改了哪些内容

git diff ReadMe

在这里插入图片描述

  • 想要一次撤销,我们执行以下命令
git checkout -- ReadMe
  • 这里的--就是回退到最近一次add或者commit的操作

  • 我们再次打印,新增的那一行就没有了

在这里插入图片描述

6.2 情况二:已经add ,但没有commit

  • add 后还是保存到了暂存区呢?怎么撤销呢?

在这里插入图片描述

  • 让我们来回忆一下学过的git reset回退命令,该命令如果使用 --mixed 参数,可以将暂存区的内容退回为指定的版本内容,但工作区文件保持不变。那我们就可以回退下暂存区的内容了!!!
git reset HEAD ReadMe
  • HEAD代表当前版本
  • HEAD^代表上一个版本
  • HEAD^^代表上一个版本

在这里插入图片描述

  • 这个时候再进行情况一的回退
git checkout -- ReadMe

在这里插入图片描述

6.3 情况三:已经add ,并且也commit 了

  • 我们可以git reset --hard HEAD^ 回退到上一个版本!不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面章节会讲到远程版本库,一旦你推送到远程版本库,你就真的惨了

  • 我们先修改文件,然后添加文件【add】【commit】

  • 然后修改

git reset --hard HEAD^

在这里插入图片描述

七、删除文件

  • 删除文件
git rm file
git commit -m '记录'

在这里插入图片描述


我们这里的git基础操作就到这里了,我们后面还有一些进阶操作~~
感谢大家的收看,我们共同进步!!!

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

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

相关文章

2018年全国硕士研究生入学统一考试管理类专业学位联考数学试题——解析版

文章目录 2018 年考研管理类联考数学真题一、问题求解(本大题共 5 小题,每小题 3 分,共 45 分)下列每题给出 5 个选项中,只有一个是符合要求的,请在答题卡上将所选择的字母涂黑。真题(2018-01&a…

DRF-项目-(1):构建纯净版的drf项目,不再使用django的后台管理,django的认证,django的session等功能,作为一个纯接口项目

项目的目录结构: -HeartFailure |-- apps |--user |--HeartFailure |-- static |--manage.py 一、django项目相关的 1、命令行中创建django项目 #1、切换到指定的虚拟环境中 workon my_drf#2、该虚拟环境已经安装好django和rest_framework了 django-admin startp…

④【Set】Redis常用数据类型: Set [使用手册]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Redis Set ④Redis Set 操作命令汇总1. sadd …

mysql的联合索引最左匹配原则问题

MySQL的联合索引 联合索引的最左匹配原则会一直向右匹配直到遇到范围查询(>、<、between、like) 就会停止匹配。 这个结论并不全对&#xff01;去掉 「between 和 like 」这个结论就没问题了 经过实验的证明&#xff0c;我得出的结论是这样的&#xff1a; 联合索引的最…

【计算机网络学习之路】TCP socket编程

文章目录 前言一. 服务器1. 初始化服务器2. 启动服务器 二. 客户端三. 多进程服务器结束语 前言 本系列文章是计算机网络学习的笔记&#xff0c;欢迎大佬们阅读&#xff0c;纠错&#xff0c;分享相关知识。希望可以与你共同进步。 本篇博客基于UDP socket基础&#xff0c;介绍…

Oracle的控制文件多路复用,控制文件备份,控制文件手工恢复

一.配置控制文件多路复用 1.查询Oracle的控制文件所在位置 SQL> select name from v$controlfile;NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_a…

【docker】docker总结

一、Docker简介 Docker是开源应用容器引擎&#xff0c;轻量级容器技术。基于Go语言&#xff0c;并遵循Apache2.0协议开源Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的Linux系统上&#xff0c;也可以实现虚拟化容…

No matching variant of com.android.tools.build:gradle:7.4.2 was found.

一、报错信息 创建个新项目&#xff0c;运行直接报错&#xff0c;信息如下&#xff1a; No matching variant of com.android.tools.build:gradle:7.4.2 was found. The consumer was configured to find a runtime of a library compatible with Java 8, packaged as a jar,…

shell 条件语句

目录 测试 test测试文件的表达式 是否成立 格式 选项 比较整数数值 格式 选项 字符串比较 常用的测试操作符 格式 逻辑测试 格式 且 &#xff08;全真才为真&#xff09; 或 &#xff08;一真即为真&#xff09; 常见条件 双中括号 [[ expression ]] 用法 &…

关于一些bug的解决1、el-input的输入无效2、搜索之后发现数据不对3、el多选框、单选框点击无用4、

el-input输入无效 原来的代码是 var test null 但是我发现不能输入任何值 反倒修改test的初始值为123是可以的 于是我确定绑定没问题 就是修改的问题 于是改成 var test ref&#xff08;&#xff09; v-model绑定的值改成test.value就可以了 因为ref是相应式的 可以通过输入…

Go语言多线程爬虫万能模板它来了!

对于长期从事爬虫行业的技术员来说&#xff0c;通过技术手段实现抓取海量数据并且做到可视化处理&#xff0c;我在想如果能写一个万能的爬虫模板&#xff0c;后期遇到类似的工作只要套用模板就能解决大部分的问题&#xff0c;如此提高工作效率何乐而不为&#xff1f; 以下是一个…

Mac自带的看图如何连续查看多张图片

一、问题 mac看访达里的图片时&#xff0c;双击打开一张图片&#xff0c;然后按上下左右键都没法切换到另外的图片。而且也没找到像window一样单击缩略图可以看到预览图。其实是自己不懂得怎么使用&#xff0c;哈哈哈&#x1f602; 二、方法 2.1、图标方式 可以看到缩略图&a…

新的centos7.9安装jenkins(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 接上一节文章。 这个版本默认git也安装好了&#xff0c;所以全局配置这个不需要了。 maven安装3.9.3版本…

前缀和——DP35 【模板】二维前缀和

文章目录 &#x1f34e;1. 题目&#x1f352;2. 算法原理&#x1f345;3. 代码实现 &#x1f34e;1. 题目 题目链接&#xff1a;【模板】二维前缀和_牛客题霸_牛客网 (nowcoder.com) 描述 给你一个 n 行 m 列的矩阵 A &#xff0c;下标从1开始。 接下来有 q 次查询&#xff0…

【OpenCV实现图像:使用OpenCV生成拼图效果】

文章目录 概要通用配置不考虑间隔代码实现考虑间隔代码实现小结 概要 概要&#xff1a; 拼图效果是一种将图像切割为相邻正方形并重新排列的艺术效果。在生成拼图效果时&#xff0c;可以考虑不同的模式&#xff0c;包括是否考虑间隔和如何处理不能整除的部分。 不考虑间隔&a…

【NLP】GPT 模型如何工作

介绍 2021 年&#xff0c;我使用 GPT 模型编写了最初的几行代码&#xff0c;那时我意识到文本生成已经达到了拐点。我要求 GPT-3 总结一份很长的文档&#xff0c;并尝试了几次提示。我可以看到结果比以前的模型先进得多&#xff0c;这让我对这项技术感到兴奋&#xff0c;并渴望…

HQL刷题 50道

HQL刷题 50道 尚硅谷HQL刷题网站 答案 1.查询累积销量排名第二的商品 select sku_id from (select sku_id, dense_rank() over (order by total desc) rnfrom (select sku_id, sum(sku_num) totalfrom order_detailgroup by sku_id) t1) t2 where rn 2;2.查询至少连续三天下…

php 时区查看和设置

php的时区&#xff0c;关系到相关时间函数的结果 其他相关&#xff1a; linux时区设置&#xff1a;链接 pgsql时区设置&#xff1a; 一、查看可以用的时区列表 新建一个php文件&#xff0c;输入下面程序即可 <?php echo "<pre>"; var_dump(timezone_id…

IOS+Appium+Python自动化全实战教程

由于公司的产品坐落于不同的平台&#xff0c;如ios、mac、Android、windows、web。因此每次有新需求的时候&#xff0c;开发结束后&#xff0c;留给测试的时间也不多。此外&#xff0c;一些新的功能实现&#xff0c;偶尔会影响其他的模块功能正常的使用。 网上的ios自动化方面的…

计算机网络之物理层(数据通信有关)

一、概述 1.1物理层引入的目的 屏蔽掉传输介质的多样性&#xff0c;导致数据传输方式的不同&#xff1b;物理层的引入使得高层看到的数据都是统一的0,1构成的比特流 1.2.物理层如何实现屏蔽 物理层靠定义的不同的通信协议&#xff08;一般称通信规程&#xff09; 这些协议…