Git教程2

news/2024/11/16 0:21:58/文章来源:https://www.cnblogs.com/douzj/p/18367686

六、Git的工作区域和文件状态

1、工作区域:

(1) 工作区(Working Directory):电脑上可以看到的目录,即实际操作的目录。车间
(2) 暂存区(Staging Area/Index):保存即将提交到Git仓库的修改内容。运输工具 Cache
(3) 本地仓库(Local Repository):存储代码和版本信息的主要位置。仓库
(4) 工作区 git add -> 暂存区 git commit -> 本地仓库。

2、文件状态:

(1) 未跟踪:untrack,新创建但是未被git管理的文件。
(2) 未修改:unmodified,被git管理但是内容未发生变化的文件。
(3) 已修改:modified,已经修改但是未添加到暂存区的文件。
(4) 已暂存:staged,已修改并已经添加到暂存区的文件。


七、添加和提交文件

1、命令:

(1) echo "xxx" > file1.txt 将内容添加到file1.txt文件中。
(2) cat file1.txt 查看文件内容。
(3) git status 查看仓库中的文件状态。
(4) git add file1.txt 将文件添加到暂存区。
(5) git commit -m "内容" 将暂存区的文件提交到仓库中。
(6) git commit只会提交暂存区中的文件,不会提交到工作区中的文件。且要使用 -m 参数,指定提交的信息。
(7) git add *.txt 将以txt结尾的文件全部加入到暂存区。
(8) git add . 将全部文件添加到暂存区,. 表示当前目录。
(9) vim编辑:
① i键进入编辑模式。
② esc 回到命令模式,输入:wq保存退出,提交完成。
(10) git log 查看提交记录;git log --oneline 查看简洁的提交记录。


八、Git reset回退版本

1、git reset:

(1) 可以回退到之前的某一个提交的状态。
(2) git reset的三种模式:对应于三种参数
git reset --soft 回退到某一个版本,并且保留工作区和暂存区的所有修改内容。
git reset --hard 回退到某一个版本,并且丢弃工作区和暂存区的所有修改内容。
git reset --mixed 介于soft和hard之间,回退到某一个版本,并且保留工作区的修改内容而丢弃暂存区中的修改内容。mixed是reset命令的默认参数。

2、演示:

(1) cp -rf repo repo-soft
① cp:copy,用于复制文件或目录。
② -r:recursive,递归地复制指定目录及其子目录下的所有文件和目录。
③ -f:force,如果目标位置有同名文件或目录存在,cp命令无条件覆盖它们,而不会提示用户确认。
④ repo:原目录。
⑤ repo-soft:目标目录。
(2) repo-soft、repo-hard、repo-mixed三个目录用于测试三种不同的模式。
(3) git reset --soft
① 由于file3是第三次提交,而使用soft参数回退到了第二次提交,所以file3是new file。
(4) git reset --hard
① HEAD^:表示回退到上一个版本。
② ls:工作区不存在file3;ls-files:暂存区也不存在file3。
③ 使用--hard参数时,工作区和暂存区内容都会被清空。
(5) git reset --mixed mixed可以省略。
git reset HEAD^ 默认是mixed参数。
cat file3.txt 查看文件内容。
③ 工作区有file3,但是暂存区没有file3。

3、谨慎使用hard参数,会清楚工作区和暂存区的全部内容。如果误操作,使用`git reflog` 命令查看过去一段时间的HEAD的移动。

4、git refloggit log 的对比:

(1) git log 显示的是提交历史,git reflog 显示的是所有引用(包括HEAD和分支)的移动历史。
(2) 当要查看所有分支的提交历史,使用git log ;当由于回退等操作导致暂存区内容丢失时,使用git reflog 查找过去一段时间的HEAD移动。


九、Git diff查看差异

1、git diff:

(1) 查看工作区、暂存区、本地仓库之间的差异。
(2) 查看文件在不同版本之间的差异。
(3) 查看文件在不同分支之间的差异。
(4) git diff无参数时,默认比较工作区(Working Directory)和暂存区(Staging Area)之间的差异。(很奇怪,做实验时这里明明是比较的是已经提交(仓库)和在工作区的文件。)
① 每次add和commit一个文件,最后修改file3文件:333 -> 3333。
git diff 之后的结果:
第一行:变化的文件。
第二行:Git将文件内容使用Hash生成一个40位的哈希值,这里只显示前7位。100644为文件的权限。
第三行:红色为删除内容,绿色为添加的内容。
③ 通过 git add . 将工作区中的内容添加到暂存区后,使用 git diff 发现没有变化。说明此时工作区和暂存区之间没有差异。
(5) git diff HEAD 比较工作区和版本库之间的差异。
① 此时工作区和暂存区内容一致(执行了git add .),但是由于还没有执行提交操作,所以工作区和版本库之间仍有差异。
(6) git diff --cached 比较暂存区和版本库之间的差异。
① 由于没有commit,暂存区和版本库之间有差异。
② 当commit后,暂存区和版本库、工作区和版本库之间都没有差异。

2、git diff比较不同提交ID的信息:

(1) git diff ID1 ID2
(2) 可以用HEAD指向分支的最新的提交节点。
(3) 比较HEAD和HEAD上一次的提交的信息:git diff HEAD~ HEADgit diff HEAD^ HEAD
(4) 比较HEAD和HEAD之前第三个版本的信息:git diff HEAD~3 HEAD
(5) 只比较file3的内容:git diff HEAD~3 HEAD file3.txt

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

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

相关文章

JavaScript-快速语法参考-全-

JavaScript 快速语法参考(全)原文:JavaScript Quick Syntax Reference 协议:CC BY-NC-SA 4.0一、使用 JavaScript 要开始试验 JavaScript,您应该安装一个支持这种语言的集成开发环境(IDE)。有很多不错的选择,比如 NetBeans、Eclipse、Visual Studio、括号。在本书中,我们…

一个方便下载pdb调试符号的小工具Microsoft.PdbDownloader

在调试Windows的系统组件时,如果能够正确使用pdb文件,能够对调试有非常大的帮助。一般情况下,我们是使用windbg来自动下载符号文件,但是有时候对一些简单的需求来说,用windbg反而比较麻烦。比如我现在有一个PE文件,就想只下载它的pdb文件到当前目录,需求看似简单,但是却…

SpringBoot系列:使用原生JDBC实现对数据库的增删改查

在springboot中使用原生JDBC实现对数据库的增删改查application.ymlspring:datasource:username: rootpassword: 123456url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8driver-class-name: com.mysql.cj.jdbc.…

tp1200触摸屏画面光标使用方法

1:点击画面空白处 2:编辑Tab排序,就是首次显示当前画面时,光标处于光标为1的对象上 3:当IC卡具备Enter点击功能时,可以直接使用刷卡去触发这个按钮 *******************************************************************************************************1:激活屏幕…

MAC苹果电脑JDK下载安装教程

JDK For Mac在Mac上安装JDK的步骤主要包括下载JDK安装包、‌安装JDK、‌查询JDK安装路径、‌配置Java JDK环境变量以及使配置生效。‌以下是详细的步骤说明:‌下载JDK安装包访问Oracle官网,‌选择适合MacOS版本的JDK安装包进行下载。‌对于M系列芯片,‌选择Arm 64 DMG insta…

通过代码添加的控件的事件如何编写?

背景 这两天在重新复习事件,比如Winform控件的事件,利用vs很方便地实现。比如:想要在窗体加载时,修改窗口的标题;我们只需要双击Form1的标题栏即可;vs便会给我们生成如下代码,且光标自动定位到方法体中:private void Form1_Load( object sender, EventArgs e ) {}然后我…

Visual Studio 2013 jsoncpp 0.10.7库编译

前言全局说明Visual Studio 2013 jsoncpp 编译jsoncpp 介绍说明: https://www.cnblogs.com/wutou/p/18367551一、说明 环境: Windows 7 旗舰版 Visual Studio 2013二、选择根据vs2013工具环境和 jsoncpp 介绍,这里选用 0.10.7 版本演示三、准备 3.1 解压文件 进入 makefiles\…

Blazor开发框架Known-V2.0.8

V2.0.8 Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行。目前已有部分客户在使用,最近客户的项目和产品,有的在Docker中运行,有的在重新升级改造中使用达梦数据库。为快速响应客户的需求,本次版本修复了一些BUG、增强了框架内置功能…

11 IIC通讯协议

目录前言一、IIC介绍1.IIC的时序2.使用IIC对从机寄存器的写操作流程3.使用IIC对从机寄存器的读操作流程二、软件实现IIC协议1.GPIO口配置2.IIC开始信号3.IIC结束信号4.发送数据5.接收数据6.接收ACK响应7.发送ACK和NACK响应8.对寄存器进行写处理9.对寄存器进行读处理三、硬件实现…

判断是否为同构字符串

要想解答这个算法,得明白一个概念,什么是同构字符串,来看一下定义:也就是说,s可以转化为t,对应的t也可以转化为s。解决思路: 我们进行一次的遍历,然后定义了两个dict,来记录s->t,t->s的映射,然后在后面校验一下,这两个dict的value 是否是相同的,来上代码。c…

Gradle编译项目Druid找不到tools.jar和jconsole.jar

原因:jdk11之后不支持druid的两个依赖 方法一:<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.5</version>方法二:<!-- <exclusions> <exclusion> …

鸿蒙开发ArkUI沉浸式导航

1.沉浸式导航的效果是占用底部顶部或者其他挖孔区域的位置 沉浸式的样式 非沉浸式的样式 2.实现方式有三种实现放1.全局(Ability)2.页面3.指定元素全局的实现方式(Ability) 在你的Ability 中设置 在页面创建完成后 (onWindowStageCreate) 中onWindowStageCreate(windowStage…