Git学习 Chapter 1——Class 3:Git文档库添加文件

        首先声明,本书的知识总结来源于《完全学会Git,GitHub,Git Server的24堂课》一书,如有任何疑问请参考原书内容查证,我这里更多的只是记录,也会尽量结合自己的学习和使用经验加一些自己的体会。Git安装请移步至Git中文官网或者百度一下

1,本篇内容

本篇主要介绍一下如何把一个文件加入文档库,以及在这个过程中文件的状态变化是怎样的;还有就是如何对当前文件夹提交文件时,需要忽略文件的处理以及最后的关于不同提交节点查看

  • (1)文件的三种状态
  • (2)需要忽略文件的处理
  • (3)撤销或者删除Git中的特定文件索引
  • (4)commit节点的查看

 

2,内容详解

2.1 文件的三种状态

通常,在文件夹中每一个文件在不同的情况下都对应着一种状态(更为准确来说就是tracked和untracked状态),这个状态也会影响Git操作时作用到它们身上的具体体现,文件的三种状态分别是:

  • tracked:该文件被添加到索引或者仓库
  • untracked:该文件未被忽略或者添加到索引和仓库
  • ignored:该文件被包含在忽略文件列表中

状态的查看主要是通过git status指令,这个在前面也介绍过;下面我们就来看一个演示,先创建一个文件a.txt;查看它的状态,把它加入git 索引再查看一下状态。

Git学习 Chapter 1——Class 3:Git文档库添加文件_第1张图片

下面我再创建一个b.txt;然后修改a.txt中内容,再次查看状态

Git学习 Chapter 1——Class 3:Git文档库添加文件_第2张图片

可见,被tracked的文件的修改,我们都是可以看到相关信息的。到这里,其实关于状态我们还有一个忽略状态没有说,不急,下面我们接着看第二部分内容。

2.2 忽略文件的处理

我们在做项目时,通常提交都是通过git add . 来提交当前文件夹中所有的文件,所以对于有些IDE编译产生的文件我们是不需要提交的,比如AS项目中build文件夹中对应的文件;下面我们就来看看如何处理这种情况

  • 通过touch .gitignore指令创建.gitignore文件
  • 添加需要忽略的文件或者文件夹即可
  • 主要的语法如下

(1)#表示注释

(2)!表示排除

(3)“*”表示通配符,“/”文件夹路径

比如:

#忽略所有的.txt文件
*.txt
#排除d.txt
!d.txt

 

下面就来看看实际操作的演示,我先创建b.txt,c.txt以及文件夹d;然后创建.gitignore文件并把所有.txt文件和文件夹d忽略,但是排除b.txt;然后再添加索引和提交:

在上面我还犯了一个小错误,通常.gitignore文件本身也是要被忽略的。好了,到这里,关于这一块的内容就结束了;接着看下面的内容。

2.3 如何撤销已添加到Git索引中的文件

就好比是我刚刚通过git add a.txt添加该文件到文件索引,现在我想撤销应该怎么办了?这里就要分下面两种情况:

  • 当前文档库没有执行过commit

git rm --cache 文件名

  • 当前文档库执行过commit

git reset HEAD 文件名

下面我们就来实际的操作一下,看看是不是可以实现从索引中删除刚刚添加的文件:

关于git rm --cache 文件名指令,我这里为了简便,直接在原有仓库再创建一个子仓库来演示:

 

2.4 查看commit节点

关于这一块,常用指令有

  • (1)git log:查看commit节点信息
  • (2)git log --graph:文本模式排列出commit节点演进图
  • (3)git log --graph --oneline:渐变方式显示

下面我们就来看看具体的输出信息是什么:

Git学习 Chapter 1——Class 3:Git文档库添加文件_第3张图片

说实话,看完之后我还是比较钟意gitk指令的效果。在仓库中有一个HEAH节点,只要你提交过一次文件该节点就会存在,且它始终是最新提交的节点(或者说指向最新提交的节点),我们可以通过git show HEAD查看最新节点信息,还可以配合“~”和“^”查看其他节点:

  • 节点标签或者标识符~数字:表示当前节点和查看节点的层级关系
  • 节点标签或者标识符^数字:表示当前节点和查看节点的子父级关系

说明:一个节点可以有多个父节点,但是只有可能有一层上级,所以HEAD^2表示的是HEAD节点的第二个父节点,而HEAD~2表示的是HEAD节点对应的上两层提交的节点

下面演示一下你就知道含义了:

 这里有位父层级只有一个节点,所以两者输出的结果是一样的。

$ git show HEAD^1
commit e61a4d92902372cd1339e06cdc3169c54c95ea69
Author: why <[email protected]>
Date:   Sat Aug 3 10:11:38 2019 +0800

    test .gitignore

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ef85458
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+#е.txtļ
+*.txt
+#ļd
+d
+#ųb.txt
+!b.txt
\ No newline at end of file
diff --git a/a.txt b/a.txt
new file mode 100644
index 0000000..d05aac7
--- /dev/null
+++ b/a.txt
@@ -0,0 +1 @@
+new content1
\ No newline at end of file
diff --git a/b.txt b/b.txt
new file mode 100644
index 0000000..e69de29

huaya@why MINGW64 /d/Studysoftware/git/gitCode/git_chapter_1/git_class_3 (master)
$ git show HEAD~1
commit e61a4d92902372cd1339e06cdc3169c54c95ea69
Author: why <[email protected]>
Date:   Sat Aug 3 10:11:38 2019 +0800

    test .gitignore

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ef85458
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+#е.txtļ
+*.txt
+#ļd
+d
+#ųb.txt
+!b.txt
\ No newline at end of file
diff --git a/a.txt b/a.txt
new file mode 100644
index 0000000..d05aac7
--- /dev/null
+++ b/a.txt
@@ -0,0 +1 @@
+new content1
\ No newline at end of file
diff --git a/b.txt b/b.txt
new file mode 100644
index 0000000..e69de29

除此而外,我们还可以把HEAD换成@符号,比如:

git show @

那我们自己也可以为节点添加和删除别名:

git tag 自定义标签别名 节点标识符或标签
git tag -d 自定义标签别名

Git学习 Chapter 1——Class 3:Git文档库添加文件_第4张图片

上面的指令不仅可以用于显示节点信息,还可以用于显示文件信息:

git show (节点标识或者标签) fileName

Git学习 Chapter 1——Class 3:Git文档库添加文件_第5张图片

之前使用git reset指令实现撤销添加到索引中文件,其实它还有一个更强大的功能,就是对文档库消磁,或者说是版本回退的功能。

git reset 选项 节点标识或者标签

其中选项有三种,分别是:

  • --soft:只有文档库变化
  • --mixed:索引也会回退
  • --hard:文件夹中文件也会回退

下面还是来实际操作演示一下:

后续每周固定更新4篇左右,共24课,预计5-6周更新完成。欢迎扫码关注:

Git学习 Chapter 1——Class 3:Git文档库添加文件_第6张图片

 

你可能感兴趣的:(Git,reset,show,commit,节点,代码管理,Git,Git学习总结)