当前位置: 首页 > news >正文

Git快速入门

一  快速使用

1.1 初始化

什么是版本库呢?版本库又名仓库,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录(为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。)

接着会看到这个文件

如果看不到可以设置一下这个查看


第二步,通过git init命令把这个目录变成Git可以管理的仓库(需要先进入创建的目录):

初始化成功后没有任何提示,正常情况 。接着设置一个名字和优先保证命令能正常执行

 二.git的基本操作

2.1将文件提交入仓库

首先新建一个txt文本文件

例如read.txt

这个时候我们可以往文件里面手动添加一些内容 

第一步,用命令git add告诉Git,把文件添加到仓库 :

 第二步,用命令 git commit 告诉Git,把文件提交到仓库:

git commit 命令执行成功后会告诉你: 1 file changed:

1 个文件被改动(我们新添加的readme.txt文件);

2 insertions:插入了两行内容(readme.txt 有两行内容)。 

commit 可以一次提交很多文件,所以可以多次add不同的文件,比如:

2.2. 掌握工作区的状态 

此时我们修改一个文件的内容

例如

输入命令git status 命令可以让我们时刻掌握仓库当前的状态,上面的命令输出告诉我们,readme.txt被修改过了, 但还没有提交。

输入命令就能看到之前的修改内容,git diff 顾名思义就是查看差异(difference),显示的格式正是Unix通用的diff格式,可以从上面的命令输 出看到,

知道了对readme.txt 作了什么修改后,再把它提交到仓库就放心多了,提交修改和提交新文件是一样的两 步,第一步是git add

执行第二步git commit

要随时掌握工作区的状态,使用git status命令。 如果git status 告诉你有文件被修改过,用git diff可以查看修改内容 

2.2版本回退

我们继续手动修改read.txt

 添加并提交

我们用git log命令查看历史版本,

git log

 

git log 命令显示从最近到最远的提交日志,我们可以看到3次提交 

git log --pretty=oneline  简化版本信息

 

 上面的一大串类似1cb23...的是 commitid(版本号)

回到之前的版本,用版本号前7位即可

git reset --hard f55cc61

只是已经修改但是并未提交所以我们发现这一句还在 

但是查看文件确实已经回到了之前的版本 

回到现在的版本

当你用$ git reset--版本号  回退到增加 分布式版本时,再想恢复 到追加 基于GPL的,就必须找到追加 基于GPL的的commit id。Git提供了一个命令 gitreflog用来记录你的 每一次命令: 

  git reflog

可以查询到所以的版本,按之前步骤进入其他版本即可 

2.3. 撤消修改 

重新创建一个文件  a.txt,做出修改

 git restore 文件名#回退修改的操作

cat 文件名#查看文件内容

 可发现第二次修改的内容被删除了

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout-- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命 令git reset HEAD ,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤消本次提交,参考版本回退一节,不过前提是没有推 送到远程库。

2.4 删除文件

在Git 中,删除也是一个修改操作,我们实战一下,先添加一个新文件test.txt到Git并且提交:

一般情况下,通常直接在文件管理器中把没用的文件删了,或者用rm命令删了: 

这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,gitstatus命令会立刻告诉你哪些 文件被删除了: 

现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且,并且git commit:

git rm 文件名#在暂存区删除文件

另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本

 git reset --soft HEAD^ #该命令可以上一次删除的文件 

在 Git 中,删除文件有两种情况:一种是直接在文件系统中删除文件,另一种是使用 git rm 命令删除文件。

如果是直接在文件系统中删除文件,可以使用以下方法找回:

  1. 使用 git checkout -- <file> 命令:该命令可以将文件恢复到最近一次提交的状态。如果文件在删除之前已经被提交到 Git 中,那么使用该命令可以找回文件。
  2. 使用 git reset HEAD <file> 命令:该命令可以将文件从暂存区恢复到工作区。如果文件在删除之前已经被添加到暂存区,那么使用该命令可以找回文件。
  3. 使用 git reflog 命令:该命令可以查看 Git 的操作记录,包括删除文件的操作。可以通过查看操作记录,找到删除文件之前的提交,然后使用 git checkout 命令恢复文件。

如果是使用 git rm 命令删除文件,可以使用以下方法找回:

  1. 使用 git reset --soft HEAD^ 命令:该命令可以撤销上一次的提交,并将文件保留在工作区中。如果文件在删除之前已经被提交到 Git 中,那么使用该命令可以找回文件。
  2. 使用 git checkout -- <file> 命令:该命令可以将文件恢复到最近一次提交的状态。如果文件在删除之前已经被提交到 Git 中,那么使用该命令可以找回文件。

需要注意的是,这些方法只能找回已经提交到 Git 中的文件。如果文件在删除之前没有被提交到 Git 中,那么这些方法将无法找回文件。因此,在删除文件之前,最好先将文件提交到 Git 中,以便在需要时可以找回文件。

 2.5 工作区,暂存区,版本区

工作区(Working Directory)
这是你实际进行代码编辑和操作的本地目录。你在这个区域中对文件进行各种修改。

暂存区(Staging Area)
也称为索引(Index)。当你决定要将工作区中的某些修改包含在下一次提交中时,就可以使用 git add 命令将这些修改添加到暂存区。暂存区起到了一个过渡的作用,让你可以有选择地组织要提交的内容。

版本库(Repository / Version Area)
这里存储了所有的提交历史记录,包括每个版本的代码状态。每次提交后,新的版本就会被添加到版本库中。它包含了项目完整的历史发展轨迹,你可以随时回滚到之前的任何一个版本。

简单来说,工作区是你日常操作的地方,暂存区是你整理要提交内容的中间地带,而版本区则是记录项目完整版本演变的仓库。这三个区相互配合,使得 Git 能够高效地管理代码的版本和变更。

相关文章:

Git快速入门

一 快速使用 1.1 初始化 什么是版本库呢&#xff1f;版本库又名仓库&#xff0c;可以简单理解成一个目录&#xff0c;这个目录里面的所有文件都可以被Git管理起来&#xff0c;每个文件的修改、删除&#xff0c;Git都能跟踪&#xff0c;以便任何时刻都可以追踪历史&#xff0…...

【18.0】JavaScript---事件案例

【18.0】JavaScript—事件案例 【一】开关灯事件 【介绍】设置一个按钮&#xff0c;按下按钮触发事件&#xff0c;来回切换圆形图片的颜色 【分析】 图片设置&#xff1a;设置成圆形的图片背景颜色&#xff1a;设置红绿两个颜色&#xff0c;来回切换按钮设置&#xff1a;点击…...

推荐系统三十六式学习笔记:原理篇.矩阵分解12|如果关注排序效果,那么这个模型可以帮到你

目录 矩阵分解的不足贝叶斯个性化排序AUC构造样本目标函数训练方法 总结 矩阵分解在推荐系统中的地位非常崇高。它既有协同过滤的血统&#xff0c;又有机器学习的基因&#xff0c;可以说是非常优秀了&#xff1b;但即便如此&#xff0c;传统的矩阵分解无论是在处理显式反馈&…...

Kafka之ISR机制的理解

文章目录 Kafka的基本概念什么是ISRISR的维护机制ISR的作用ISR相关配置参数同步过程示例代码总结 Kafka中的ISR&#xff08;In-Sync Replicas同步副本&#xff09;机制是确保数据高可用性和一致性的核心组件。 Kafka的基本概念 在Kafka中&#xff0c;数据被组织成主题&#xf…...

如何设计一个点赞系统

首先我们定义出一个点赞系统需要对外提供哪些接口&#xff1a; 1.用户对特定的消息进行点赞&#xff1b; 2.用户查看自己发布的某条消息点赞数量以及被哪些人赞过&#xff1b; 3.用户查看自己给哪些消息点赞过&#xff1b; 这里假设每条消息都有一个message_id, 每一个用户都…...

对象存储测试工具-s3cmd

一、环境安装 官网&#xff1a;https://s3tools.org/s3cmd 下载安装包&#xff1a;https://s3tools.org/download GitHub&#xff1a;https://github.com/s3tools/s3cmd/releases 本文安装包&#xff1a;https://github.com/s3tools/s3cmd/releases/download/v2.0.2/s3cmd-2.0…...

OpenCV--图像色彩空间及转换

图像色彩空间及转换 python代码和笔记 python代码和笔记 import cv2 色彩空间&#xff0c;基础&#xff1a;RGB或BGR OpenCV中&#xff1a; 一、HSV(HSB)&#xff1a;用的最多&#xff0c; Hue&#xff1a;色相-色彩(0-360)&#xff0c;红色&#xff1a;0&#xff0c;绿色&…...

RIP解决不连续子网问题

#交换设备 RIP解决不连续子网问题 一、不连续子网的概念 相同主网下的子网&#xff0c;被另一个主网分割&#xff0c;例如下面实验拓扑在某公司的网络整改项目中&#xff0c;原先R1 和RS 属于同一主网络 10.0.0.0/8&#xff0c;现被 R2、R3、R4 分离&#xff0c;整网采用了 …...

动态轮换代理IP是什么?有什么用?

如果您要处理多个在线帐户&#xff0c;选择正确的代理类型对于实现流畅的性能至关重要。但最适合这项工作的代理类型是什么&#xff1f; 为了更好地管理不同平台上的多个账户并优化成本&#xff0c;动态住宅代理IP通常作用在此。 一、什么是轮换代理&#xff1f; 轮换代理充当…...

MAC配置VScode中C++项目debug环境

文章目录 配置步骤问题解决Unable to start debugging. LLDB exited unexpectedly with exit code 137 (0x89). 配置步骤 在Mac上配置VS Code以进行C调试涉及几个步骤&#xff1a; 安装必要的工具: 确保您已经安装了Visual Studio Code和C插件。 检查是否安装了Clang&#xf…...

PostgreSQL源码分析——CREATE CAST

CREATE CAST源码分析 CREATE CAST用法 CREATE CAST —— 定义一个用户自定义的类型转换 用法如下&#xff1a; CREATE CAST (source_type AS target_type)WITH FUNCTION function_name [ (argument_type [, ...]) ][ AS ASSIGNMENT | AS IMPLICIT ]CREATE CAST (source_type…...

解锁5G新营销:视频短信的优势与全方位推广策略

随着5G时代的全面来临&#xff0c;企业的数字化转型步伐日益加快&#xff0c;视频短信作为新兴的数字营销工具&#xff0c;正逐步展现出其巨大的潜力。视频短信群发以其独特的形式和内容&#xff0c;将图片、文字、视频、声音融为一体&#xff0c;为用户带来全新的直观感受&…...

视频监控平台功能:国外的硬盘录像机NVR通过ISUP协议(原ehome协议)接入AS-V1000视频平台

目录 一、背景说明 二、ISUP协议介绍 1、海康ISUP协议概述 2、ISUP协议支持主码流和子码流切换 &#xff08;1&#xff09;灵活配置和个性化 &#xff08;2&#xff09;适应不同网络带宽&#xff0c;提高使用体验 3、海康ehome相关文章 三、ISUP协议接入说明 1、平台侧…...

PostgreSQL查询用户

在 PostgreSQL 中&#xff0c;可以通过查询系统表来确定当前用户是否是超级管理员&#xff08;超级用户&#xff09;。具体来说&#xff0c;可以使用 pg_roles 系统表&#xff0c;该表包含数据库中所有角色的信息。 以下是查询当前用户是否是超级用户的 SQL 语句&#xff1a; …...

力扣1539.第k个缺失的正整数

力扣1539.第k个缺失的正整数 占位运算 只要n<k &#xff0c;k;最终k就是结果 class Solution {public:int findKthPositive(vector<int>& arr, int k) {for(int n : arr){if(n < k) k ;else break;}return k;}};...

如何快速解决屏幕适配问题

下面将利用postcss插件快速解决屏幕适配问题。仅用少量代码&#xff0c;新手均可快速使用。 Step1. 安装 npm install postcss-px-to-viewport-8-plugin --save-dev Step2. 新建 postcss.config.js 文件&#xff0c;做基础配置 module.exports {plugins: {postcss-px-to-v…...

Go基础编程 - 09 - 通道(channel)

通道&#xff08;channel&#xff09; 1. 声明2. channel的操作3. 无缓冲通道4. 有缓冲通道5. 如何优雅的从通道循环取值6. 单向通道7. 异常总结 上一篇&#xff1a;结构体 Go语言的并发模式&#xff1a;不要通过共享内存来通信&#xff0c;而应该通过通信来共享内存。 Go语言…...

[SAP ABAP] 数据类型

1.基本数据类型 示例1 默认定义的基本数据类型是CHAR数据类型 输出结果: 示例2 STRING数据类型用于存储任何长度可变的字符串 输出结果: 示例3 DATE数据类型用于存储日期信息&#xff0c;并且可以存储8位数字 输出结果: 提示Tips&#xff1a;日期和时间类型的变量可以直接进…...

什么是Vue开发技术

概述 Vue.js 是一个用于构建用户界面的渐进式框架&#xff0c;它设计得非常灵活&#xff0c;可以轻松地被集成到任何项目中。 vue是视图的发音&#xff0c;其目的是帮助开发者易于上手&#xff0c;提供强大的功能构建复杂的应用程序 示例 以下是vue基本的语法概述 声明式渲…...

【QT】

通信服务端实现 widget.h文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QTcpServer>//服务器类 #include <QMessageBox>//消息 #include <QTcpServer> #include <QList> #include <QTcpSocket> QT_BEGIN_NAMESPAC…...

【转载】使用 .NET Upgrade Assistant(升级助手)升级 .NET 老旧版本项目

使用 .NET Upgrade Assistant&#xff08;升级助手&#xff09;升级 .NET 老旧版本项目&#xff1a;https://blog.csdn.net/ChaITSimpleLove/article/details/134711604...

SpringBoot如何自定义启动Banner 以及自定义启动项目控制台输出信息 类似于若依启动大佛 制作教程

前言 Spring Boot 项目启动时会在控制台打印出一个 banner&#xff0c;下面演示如何定制这个 banner。 若依也会有相应的启动动画 _ooOoo_o8888888o88" . "88(| -_- |)O\ /O____/---\____. \\| |// ./ \\||| : |||// \/ _||||| -:- |||||- \| | \\…...

访问控制列表(Access Control Lists,ACL)与哈希查找的爱恨情怨

访问控制列表&#xff08;Access Control Lists&#xff0c;ACL&#xff09;与哈希查找 什么是访问控制列表ACL&#xff1f;直接说ACL是干啥的ACL概念为什么需要ACLACL类型ACL匹配机制使用例子 哈希查找什么是哈希查找&#xff1f;哈希查找的基本原理哈希查找的步骤 哈希查找在…...

一文讲清楚分销裂变是什么?怎么做好分销裂变?【附案例】

在数字化营销日益盛行的今天&#xff0c;分销裂变作为一种高效的推广手段&#xff0c;受到了越来越多企业的青睐。那么&#xff0c;分销裂变究竟是什么&#xff1f;我们又该如何做好分销裂变呢&#xff1f;林叔将从定义、方法以及案例分析三个方面进行阐述。 一、分销裂变是什…...

Mybatis Plus 详解 IService、BaseMapper、自动填充、分页查询功能

结构直接看目录 前言 MyBatis-Plus 是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 愿景 我们的愿景是成为 MyBatis 最好的搭档&#xff0c;就像 魂斗罗 中的 1P、2P&#xff0c;基友搭配&#xff0c;效…...

鸿蒙开发组件:【FA模型的Context】

FA模型的Context FA模型下只有一个Context。Context中的所有功能都是通过方法来提供的&#xff0c;它提供了一些featureAbility中不存在的方法&#xff0c;相当于featureAbility的一个扩展和补全。 接口说明 FA模型下使用Context&#xff0c;需要通过featureAbility下的接口…...

Linux下手动修改服务器时间(没网环境下)

在客户服务器上更新程序时&#xff0c;发现服务器时间不对&#xff0c;现在应该是下午13:44:00&#xff0c;但服务器却显示为&#xff1a;21:40:53&#xff0c;所有是不对的。 date解决办法&#xff1a; 1、由于服务器是没有网的&#xff0c;只能手动设置时间&#xff0c;输入…...

嵌入式系统软件开发环境_3.主要功能和典型产品

1.嵌入式系统软件开发环境的主要功能 由于嵌入式系统的软件开发通常采用的是交叉开发方式&#xff0c;因此其开发环境中的工具应支持这种交叉开发的特点。嵌入式系统软件开发环境的功能应覆盖嵌入式软件开发过程&#xff0c;即编码过程、编译过程、构建过程、下载过程、调式过程…...

使用Python保护或加密Excel文件的7种方法

目录 安装Python Excel库 Python 使用文档打开密码保护 Excel 文件 Python 使用文档修改密码保护 Excel 文件 Python 将 Excel 文件标记为最终版本 Python 保护 Excel 工作表 Python 在保护 Excel 工作表的同时允许编辑某些单元格 Python 锁定 Excel 工作表中的特定单元…...

【嵌入式Linux】<总览> 文件IO(更新中)

文章目录 前言 一、常用函数 1. open函数 2. close函数 3. write函数 4. read函数 5. dup函数 6. dup2函数 二、文件读写细节 1. 换行符 2. 文件描述符 3. errno和perror 前言 在Linux系统中&#xff0c;一切皆文件。因此&#xff0c;掌握Linux下文件IO常用的函数…...

徐州网站平台/原创文章代写

转自&#xff1a;http://www.pinlue.com/article/2019/09/1413/469615040316.html...

东莞汽车网站建设/广州发布紧急通知

环境&#xff1a; centOS6.4 32位 mysql5.1 分区实验 myisam 一、查看当前mysql是否支持分区 mysql>show plugins; ------------------------------------------------------| Name | Status | Type | Library | License |-------------------如果想在已经建好的表上进行分区…...

asp.net做报名网站/公司网络推广营销

学习python一直是断断续续的&#xff0c;今天我们来介绍的是python的一个非常强大的模块---OS,我们来事例的时候不是用的标准的python&#xff0c;而是用的python的同胞兄弟Ipython&#xff0c;ipython 是一个 python 的交互式 shell&#xff0c;比默认的 python shell 好用得多…...

香港公司注册处官方网站/太原网站推广公司

有人的地方&#xff0c;就有江湖。人往往是最难揣摩的。如果有一面神奇的魔镜能看出一个人的内心&#xff0c;世界会不会变得更加美好呢&#xff1f;Linux 的世界里&#xff0c;file 就是这样一面魔镜&#xff0c;它可以看到每个文件的内心。file 命令可以识别出文件的类型和编…...

哪里有网站制作/seo网站首页推广

一、生产者消费模型补充 总结&#xff1a; ---生产者消费者模型程序中两种角色&#xff1a;①负责生产数据&#xff08;生产者&#xff09;&#xff1b;②负责处理数据&#xff08;消费者&#xff09; ---生产者消费者模型的作用&#xff1a;平衡生产者与消费者之间的速度差。 …...

网站设计的总结/广告推广系统

https://vjudge.net/problem/CodeForces-25E 题目大意&#xff1a;给三个字符串&#xff0c;求最小串&#xff0c;使得前三个串都是它的子串。 ———————————————— 这题虽然是看哈希的时候做的&#xff0c;但上网一查啊全是KMP。 所以果断用KMP做啦&#xff01; …...