Git权威指南学习笔记(二)Git暂存区[通俗易懂]

Git权威指南学习笔记(二)Git暂存区

大家好,又见面了,我是全栈君。

例如以下图所看到的:

左側为工作区,是我们的工作文件夹。

右側为版本号库,当中:

index标记的是暂存区(stage),所处文件夹为.git/index,记录了文件的状态和变更信息。

master标记的是master分支所代表的文件夹树。HEAD指向master分支。

objects标记的是Git的对象库,所处文件夹为.git/objects。文件索引建立了文件和对象库中对象实体之间的映射关系。

Git权威指南学习笔记(二)Git暂存区[通俗易懂]


通过该图我们能够清晰地看出add,commit等命令的转化关系。以下通过git diff和git status两条命令来理清它们之间的关系。

1.如果welcome.txt文件为空。我们首先在该文件里增加一行”1 Hello”,并通过git add和git commit提交到版本号库中:

$ git add welcome.txt 
$ git commit -m "1 Hello"

2.在welcome.txt文件里加入第二行”2 Git”。仅仅运行git add命令,不运行git commit:

$ git add welcome.txt


运行git status -s命令。输出例如以下:

Git权威指南学习笔记(二)Git暂存区[通俗易懂]

能够看到第一列的M是绿色的,表示对于welcome.txt文件,master分支中的文件和暂存区中的文件内容不一致。

第二列的M不存在。表示对于welcome.txt文件,工作区中的文件和暂存区中的文件一致。明显是由于运行了git add操作使得工作区和暂存区中的文件内容同步。

3.在welcome.txt文件里加入第三行”3 Hello Git”。不运行git add命令。

输入git status -s。输出例如以下:

Git权威指南学习笔记(二)Git暂存区[通俗易懂]

能够看到多了第二列的M。并且是红色的。表示对于welcome.txt文件。工作区中的文件和暂存区中的文件内容不一致。

4.Git diff魔法

(1)暂存区和工作区比較:git diff

$ git diff
diff --git a/welcome.txt b/welcome.txt
index 671036a..d6a88bb 100644
--- a/welcome.txt
+++ b/welcome.txt
@@ -1,2 +1,3 @@
 1 Hello
-2 Git
\ No newline at end of file
+2 Git
+3 Hello Git
\ No newline at end of file

(2)HEAD和暂存区比較:git diff –cached

$ git diff --cached
diff --git a/welcome.txt b/welcome.txt
index f6abfb2..671036a 100644
--- a/welcome.txt
+++ b/welcome.txt
@@ -1 +1,2 @@
-1 Hello
\ No newline at end of file
+1 Hello
+2 Git
\ No newline at end of file

(3)HEAD和工作区比較:git diff HEAD

$ git diff HEAD
diff --git a/welcome.txt b/welcome.txt
index f6abfb2..d6a88bb 100644
--- a/welcome.txt
+++ b/welcome.txt
@@ -1 +1,3 @@
-1 Hello
\ No newline at end of file
+1 Hello
+2 Git
+3 Hello Git
\ No newline at end of file

结合上面的图来看就不难理解了。

最后。给出原书作者的忠告:不要使用git commit -a,原因是这会让我们失去对提交内容进行控制的能力。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116323.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++ vector 初始化大小[通俗易懂]

    C++ vector 初始化大小[通俗易懂]一维数组使用下面的代码可以初始化一个大小为n的一维数组vector<int>dp(n);二维数组使用下面的代码可以初始化一个row行col列的二维数组vector<vector<int>>dp(row,vector<int>(col));三维数组使用下面的代码可以初始化一个三维数组,维度分别为n1,n2,n3vector<vector<vector<int>>>dp(n1,vector&

    2022年9月18日
    5
  • Http请求超时的一种处理方法[通俗易懂]

    Http请求超时的一种处理方法[通俗易懂]URLConnection类常见的超时处理就是调用其setConnectTimeout和setReadTimeout方法:setConnectTimeout:设置连接主机超时(单位:毫秒)setRea

    2022年8月2日
    8
  • 合成控制法(SyntheticControlMethod)及Stata实现[通俗易懂]

    合成控制法(SyntheticControlMethod)及Stata实现[通俗易懂]原文链接:https://www.lianxh.cn/news/9e1bb97a57041.html目录1.背景介绍 2.合成控制法原理 3.合成控制法的Stata实现 3.1命令安装 3.2语法格式 3.3加州控烟案例 3.4房产税对产业转移的影响:来自重庆和上海的经验证据 4.安慰剂检验 4.1安慰剂检验一 4.2安慰剂检验二 5.参考资料推文介绍合成控制方法及其Stata的实现命令。合成控制方法(Syntheti

    2022年6月10日
    43
  • idea2021.2.8激活码-激活码分享

    (idea2021.2.8激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html83PVI25FMO-eyJsa…

    2022年3月27日
    74
  • Linux中rwx权限详解

    Linux中rwx权限详解1.rwx作用在文件时1>r:read,可以读取,查看2>w:writte,可以修改,但是不代表可以删除该文件,删除一个文件的前提是对该文件所在的目录(文件夹)具有写的权限,才能删该文件3>x:execute,可以被执行2.rwx作用在目录时1>r,ls查看目录内容2>w,可以修改,目录内创建+删除+重命名目录3&gt…

    2022年5月12日
    49
  • pycharm安装python3.6_python安装教程

    pycharm安装python3.6_python安装教程Pycharm安装+python3.9+配置过程一、安装Pycharm+python3.9Pycharm官网下载:https://www.jetbrains.com/pycharm/download/#section=windows点击Community下的Download进行下载。Python3.9官网下载:https://www.python.org/点击Download下的python3.9.2进入:下拉至最下面,点击windowsem

    2022年8月27日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号