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.怎么治 …

equals练习题

练习1编写Order类,有int型的orderId,String型的orderName,相应的getter()和setter()方法,两个参数的构造器, 重写父类的equals()方法:public boolean equals(Object obj),并判断测试类中创建的两…

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

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

nodejs 中导入的包名中带有 # 是什么意思?

nodejs 中可以使用 # 号自定义本地 js 模块的路径,就像我们常在 vue 中使用 / 作为路径别名一样。 使用方法 首先,在 pacakge.json 中定义: // package.json {"imports": {"#internal/*.js": "./src/internal/*.…

报错:OSError: [Errno 22] Invalid argument: ‘D:\\pycharm\\png\t.PNG‘ 解决办法

在使用Python导入文件时,系统报了这个错误。查了一下,发现是Python会将‘\’误认为是转义字符。比如\t,\n等也会导致报错。 解决办法: 1,直接在路径前面加“r”。在字符串赋值的时候,前面加’r’可以防止…

Debian 配置国内软件源

为什么需要? Debian安装好之后默认是没有软件源的,只能通过本身的光盘上的软件进行安装,这样明显是不能够满足我们的需要的,考虑到国内的上网速度以及环境,配置一个国内的阿里镜像源是最好的选择。 使用 sudo vim /…

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

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

【C++】多态的原理

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

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

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

leetcode1379--找出克隆二叉树中的相同节点

1. 题意 对于一个克隆的二叉树,找到与原二叉树相同的节点。 找出克隆二叉树中的相同节点 2. 题解 直接dfs搜索即可 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int…

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

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

Springboot3 集成knife4j(swagger)

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍! 官网地址: Knife4j 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j 本文以Springboot3版本集成kn…

Qt文本搜索

效果&#xff1a; 按下ctrlf跳出搜索框&#xff0c;然后支持搜索next或者previous。支持搜索下一步和上一步。 嵌入框的实现 #ifndef POPFINDBOX_H #define POPFINDBOX_H#include <QWidget>class QLineEdit; class QPushButton; class PopFindBox : public QWidget {Q_O…

深入理解Spring Boot Controller层的作用与搭建过程

在现代的Web应用开发中&#xff0c;Spring Boot作为一款快速、便捷的Java框架&#xff0c;为开发者提供了丰富的功能和便利的工具。其中&#xff0c;Controller层作为Spring Boot应用的核心之一&#xff0c;承担着处理HTTP请求、调用业务逻辑、数据封装和返回等重要任务。本文将…

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

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

Tauri 进阶使用与实践指南

Tauri 进阶使用与实践指南 调试技术 在 Tauri 应用开发中&#xff0c;调试分为两大部分&#xff1a;Web 端与 Rust 控制台。 Web 端调试 在 Web 端界面&#xff0c;可以直接采用浏览器内置的开发者工具进行调试。在 Windows 上&#xff0c;可以通过快捷键 Ctrl Shift i 打…

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

turtle画圆三步法 步骤: 1、导入turtle库 2、确定半径&#xff0c;画圆(circle ) 3、结束(done ) turtle 库中提供一个直接画圆的函数 turtle.circle&#xff08;半径&#xff09;#半径单位为像素 例&#xff1a; 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