1.Git是用来干嘛的

本文章学习于【GeekHour】一小时Git教程,来自bilibili

Git就是一个文件管理系统,这样说吧,当多个人同时在操作一个文件的同时,很容易造成紊乱,git就是保证文件不紊乱产生的

包括集中式管理系统和分布式管理系统

听懂了,集中式管理系统就是从中央服务器上下载最新的版本文件,修改文件之后将 文件上传到中央管理系统,然后中央管理系统得到你更改之后的文件

缺点:中央服务器出现问题所有人都无法工作

都有一个完整的版本库,不需要网络就可以直接在本地修改

当需要把文件分享给其他人的时候,只需要把仓库互相同步一下就行了

git就是分布式的

如何新建一个管理库

将仓库理解为一个目录,这个目录下的所有文件的修改,删除,git都可以追踪到,这样我们就可以恢复到之前的版本

git init:在本地上面创建一个文件夹

git clone:直接从github上克隆一个项目,会生成一个文件夹

windows系统下bash的操作

ls -a是用来检测git文件是否存在,是仓库是否创建成功的标志

可以通过以上命令来观察git文件的内容,但是不要轻易修改

现在我们返回到之前的文件夹,然后我们通过 \rm -rf .git 将git文件删除掉,然后我们在当前文件夹 下面重新创建了一个my-repo的文件夹,并且以这个为仓库继续执行(my-repo中有我们的.git)

之后我们进入我们的my-repo文件夹并且检索文件中是否含有.git

Git的工作区域和文件状态

工作区:就是我们电脑上的目录 .git所在的目录

暂存区:用于保存即将提交到github上的修改内容 .git/index所在

本地仓库:通过git init 创建的那个仓库

当我们的代码文件到达一定阶段之后,我们需要保存在本地仓库

如果我们每次修改一次文件就提交的话,会比较麻烦,所以我们先将我们将要提交的文件保存在暂存区中,然后某一阶段结束之后,再统一提交到本地仓库中

通过以上几个命令创建一个文件(在git文件所在的文件夹中打开git bash)

现在我们的file1.txt目前在工作区,现在我们将他载入到暂存区

然后我们的文件file变成了绿色,表示现在这个文件已经被添加到了暂存区,等待被提交

看绿色文件上方的文字

git rm 表示我们可以通过这个命令来取消暂存

git commit只会提交暂存区中的文件,而不会提交工作区的其他文件

接着我们提交file1这个文件

之后我们添加了几个文件,这些文件用来演示git add多个文件的操作

值得注意的是ls命令会把所有工作区中(包括已提交)的文件显示出来

只有看git status才知道有没有放到暂存区,或者已经提交了

我们接着使用git add *.txt将文件提交到本地仓库中

txt文件全部提交

使用git . 可以该文件夹下的所有文件都提交到暂存区中

这里的 . 表示当前目录

如果我们使用git commit就会进入到交互页面,交互页面是一个vs的界面

使用方向键 来移动光标

使用i键进入编辑模式

输入提交信息

之后esc键回到命令模式

输入:wq命令保存退出

可以看到所有文件都已经提交完成了

使用git log 来查看提交记录,可以看到我们的两次提交

每次提交都有一个提交id

以及提交的作者和邮箱id

还有日期

可以使用git log --oneline 来展示简介的提交记录

让我们总结一下:

  • git status 查看仓库的状态

  • git add 提交到暂存区

  • git commit 提交 ——只提交暂存区的内容,不会提交工作区

  • git log 查看仓库提交历史记录——可以使用 log -- oneline来查看简介的提交记录

git reset

reset命令用于提交版本,可以用于回到之前的某个提交的状态

git reset的三种模式

git reset --soft表示回退到某个版本,并且保存工作区和暂存区的所有修改内容

git reset -- hard表示回退到某个版本,并且丢弃工作区和暂存区的所有修改内容

git reset --mixed表示回退到某个版本,并且只保存工作区 的修改内容并且丢弃暂存区的修改内容

首先我们重新回到learn_git的开始部分

然后重新创建一个空的带有git的文件夹,相当于工作区

然后我们加入了三个文件

接着分别提交

我们首先打开一个新的终端(还是bash)

接着我们将这个文件夹复制三份 分别来执行三种不同的soft命令

然后我们使用soft命令回退到之前的状态,

这是之前提交的状态码

我们可以注意到file3并没有添加到暂存区,这是因为我们回退到了第二个版本

我们接着我们的实验,进入到hard文件夹下面

使用reset hard进入到之前的状态

然后我们进行检测

lsb表示工作区的内容,git ls-files表示暂存区的内容

接着做那个git reset

谨慎使用git reset--hard 这个命令,不过使用了其实也没什么关系

不过如果使用了也没有关系,因为我们可以回退

这个时候我们可以发现通过这个标号,我们成功回退到了之前的状态

git diff

查看工作区、暂存区、本地仓库之间的差异

git diff 如果后面什么也不加,会默认比较工作区和暂存区之间的内容

我们以修改file3.txt文件为例子

第一行显示的是哪个文件改变了

第二行展示的是文件的哈希值 后面的10064表示的是文件的权限

接着我们提交,然后再次检测git diff 可发现没有发现异常

将我们的暂存区和本地仓库的区别也可以显现出来

使用git diff HEAD 命令即可比较工作区和本地仓库之间的差异

使用git diff --cached可以比较暂存区和本地仓库之间的差异

图片没有保存到本地,下次我注意一下

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

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

相关文章

00 - Logic Circuit 简介 -- 与或非门

---- 整理自B站UP主 踌躇月光 的视频 1. Logic Circuit Logic Circuit 下载地址 界面如下,实际使用可下载体验 2. 与或非门

HTML常用的图片标签和超链接标签

目录 一.常用的图片标签和超链接标签: 1.超链接标签: 前言: 超链接的使用: target属性: 1)鼠标样式: 2)颜色及下划线: 总结: 2.图片标签: 前言: img的使用: 设置图片: 1.设置宽度和高度: 2.HTM…

排序算法-归并排序

Leetcode链接:. - 力扣(LeetCode) 归并:将原始数组划分为若干个子数组,然后将这些子数组分别排序,最后再将已排序的子数组合并成一个有序的数组。是一种分治思想 思路: 1.分 2.治 3.怎么治 …

力扣1047. 删除字符串中的所有相邻重复项

思路:消消乐的感觉,就先想到栈;用一个栈存放遍历过的元素,和遍历中的下一个元素相比,相同则出栈,不同则入栈,最终栈内剩余的就是不相同的元素。 class Solution {public String removeDuplicat…

C语言第三十九弹---预处理(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 预处理 1、预定义符号 2、#define定义常量 3、#define定义宏 4、带有副作用的宏参数 5、宏替换的规则 6、宏和函数的对比 总结 在C语言中,预处…

【C++】多态的原理

目录 一、虚函数表 1、虚函数表的定义 2、虚函数表特性 3、虚表的打印 二、多态的原理 三、多态的相关问题 1、指针偏移问题 2、输出的程序是什么? 3、输出的程序是什么? 【前言】 上一篇我们学习了多态的基础知识,这一篇我将带着大…

HarmonyOS 应用开发之通过数据管理服务实现数据共享静默访问

场景介绍 典型跨应用访问数据的用户场景下,数据提供方会存在多次被拉起的情况。 为了降低数据提供方拉起次数,提高访问速度,OpenHarmony提供了一种不拉起数据提供方直接访问数据库的方式,即静默数据访问。 静默数据访问通过数据…

Incus:新一代容器与虚拟机编排管理引擎

Incus是什么? Incus是一个用于编排管理应用型容器、系统型容器及虚拟机实例的管理工具。它是对 Canonical LXD 的继承与发展,引入了更多的存储驱动支持。 Incus项目的产品地址:Linux Containers - Incus - Introduction 在 LXC-Incus 项目…

KnowLog:基于知识增强的日志预训练语言模型|顶会ICSE 2024论文

徐波 东华大学副教授 东华大学计算机学院信息技术系副系主任,复旦大学知识工场实验室副主任,智能运维方向负责人。入选“上海市青年科技英才扬帆计划”。研究成果发表在IJCAI、ICDE、ICSE、ISSRE、ICWS、CIKM、COLING等国际会议上,曾获中国数…

【turtle海龟先生】神奇的“圆”,画,太极圈,铜钱古币

turtle画圆三步法 步骤: 1、导入turtle库 2、确定半径,画圆(circle ) 3、结束(done ) turtle 库中提供一个直接画圆的函数 turtle.circle(半径)#半径单位为像素 例: turtle.circle ( 100 ) 表示绘制一个半径为100像素长度的圆形 …

基于ROS的地图发布和加载(GAZEBO仿真)

文章目录 环境配置启动仿真运动控制地图保存地图加载Q&A环境配置 cd ~/catkin_ws/src git clone https://github.com/wh200720041/warehouse_simulation_toolkit.git cd .. catkin_make source ~/catkin_ws/devel/setup.bash启动仿真 roslaunch warehou

【软件工程】详细设计(二)

这里是详细设计文档的第二部分。前一部分点这里 4. 学生端模块详细设计 学生端模块主要由几个组件构成:学生登录界面,成绩查询界面等界面。因为学生端的功能相对来说比较单一,因此这里只给出两个最重要的功能。 图4.1 学生端模块流程图 4.…

软考高级架构师:性能评价方法概念和例题

一、AI 讲解 性能评价是衡量计算机系统或其组件在指定条件下执行预期任务的有效性的一种方式。性能评价的方法主要可以分为几种,每种方法都有其特点和适用场景。 性能评价方法 方法描述时钟频率法通过计算机的时钟频率来评估性能,时钟频率越高&#x…

大话设计模式之状态模式

状态模式是一种行为设计模式,它允许对象在其内部状态发生变化时改变其行为。在状态模式中,对象将其行为委托给当前状态对象,从而在不同的状态下执行不同的行为,而不必在对象自身的代码中包含大量的条件语句。 通常,状…

Tensorboard使用教程

Pytorch(九) —— Tensorboard(当有了tensorboard日志文件怎么可视化它)(同时显示多个模型)(vscode的tensorboard)(TensorboardX)_tensorboard --logdir-CSDN博客文章浏览阅读9.7k次,点赞10次,收藏56次。tensorboard.pyfrom tensorboardX import Summary…

RuntimeError: Error compiling objects for extension虚拟环境和系统环境——添加、删除、修改环境变量

前言:因为一个报错RuntimeError: Error compiling objects for extension 没有配置cl.exe环境变量,我的应用场景是需要搞定虚拟环境变量配置 RuntimeError: Error compiling objects for extension手把手带你解决(超详细)-CSDN博…

爬虫 红网时刻 获取当月指定关键词新闻 并存储到CSV文件

目标网站:红网 爬取目的:为了获取某一地区更全面的在红网已发布的宣传新闻稿,同时也让自己的工作更便捷 环境:Pycharm2021,Python3.10, 安装的包:requests,csv,bs4&…

如何在pgAdmin中用替换的值更新jsonb列?(二)

上一篇提到怎么替换jsonb,链接如下: 如何在pgAdmin中用替换的值更新jsonb列?-CSDN博客 那么当jsonb嵌套jsonb应该怎么替换呢?像这样,类型依然是jsonb,只不过嵌套一层,JsonData:&qu…

网络安全 | 什么是DDoS攻击?

关注WX:CodingTechWork DDoS-介绍 DoS:Denial of Service,拒绝服务。DDoS是通过大规模的网络流量使得正常流量不能访问受害者目标,是一种压垮性的网络攻击,而不是一种入侵手段。NTP网络时间协议,设备需要…

Springboot整合Milvus向量库

1. Milvus的Maven依赖&#xff0c; 配置如下 <dependency><groupId>io.milvus</groupId><artifactId>milvus-sdk-java</artifactId><version>2.3.4</version><exclusions><exclusion><artifactId>log4j-slf4j-imp…