Git学习 Chapter 1——Class 4:Git中的文件比对

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

1,本篇内容

本篇主要介绍一下在Git中如何通过指令进行文件夹中文件,已添加索引文件以及仓库中文件的比对以及如何仓库中取出文件,主要内容包括:

  • 文件差异性比较
  • 从仓库中取文件
  • 修改文件名称
  • 暂存文件或者文件夹状态
  • 清理文件

 

2,详细内容

2.1 文件的差异性比较

我们知道,文件有三种,一种是放在文件夹中,一种是已经添加到索引的,还有一种是已经提交到仓库的。所以,比较不同文件之间的差异性对应的指令也不太一样;书中有一张图很好,但是我这边不太方便放,所以我就简单列举一下:

  • git diff(difftool) fileName:表示比较文件夹文件与索引中或者仓库中的区别
  • git diff(difftoll) --cache  fileName:表示比较索引中与仓库中文件的差异性
  • git diff(difftoll) 节点  fileName:表示比较索引中与仓库中文件的差异性
  • git diff(difftool) 节点1 节点2 fileName:表示比较仓库中两个简单文件的差异性
  • git diff --no-index fileName1 fileName2:表示比较文件夹中两个文件的差异性

下面简单演示一下几条语句的实际操作效果:

上面是使用git diff指令查看,可能不是很明显,我们可以通过上周学习的设置的BCompare来实现,下面就来看一下比对效果:

可见,最后一条比较文件夹中的文件指令,并没有出现我们的比对工具。

2.2 从文档库中取文件

这部分相对简单,主要就是git checkout的指令的延伸,我们可以根据添加不同的参数来取不同的文件,不同节点的文件等等功能

  • git checkout 节点标识 fileName1 fileName2 ...

在这里,有一点需要特别注意,那就是我们取出的文件内容和Git中最新版本该文件内容不一致时,这个取出的文件内容会自动记录到索引中,之后执行commit指令的话,该文本的内容会更新到最新的版本中,如果需要避免这个问题,在取出文件后执行下面指令清除Git索引:

  • git reset HEAD

这里我只演示前半部分,后半部分就不演示了:

 

其实除了通过文件名进行文件查找外,还可以通过字符串进行文件查找:

  • git grep 'string content' 节点标识:查找指定节点含有字符串的文件
  • git grep -e 'string1' -e 'string2' 节点标识:查找指定节点含有字符串1或者2的文件
  • git grep -e 'string1' --and -e 'string2' 节点标识:查找指定节点含有字符串1和2的文件

上面字符串之间与或关系还可以组合进行,比如下面这一条:

git grep \(-e 'string1' -e 'string2'\) --and \(-e 'string3' -e 'string4'\) 节点标识

2.3 修改文件的名称

两种方式:

  • 先使用PC 资源管理器修改,添加再提交,Git会判断文件内容,如果一样则删除文档库中文件,添加最新提交文件
  • 直接通过git mv oldName newName,然后提交即可

下面就来看一下:

上面的示例演示通过git mv指令修改e.txt为ee.txt,在通过windows资源管理器方式把ee.txt改为e.txt。

2.4 暂存文件的状态与清理Git文档库

暂存文件的状态指的是暂存当前文件夹中文件的内容,然后把最新的节点文件同步到本地文件夹,我们结合最新的节点进行其他的工作开发,然后再恢复到之前文件的状态,主要的指令如下:

  • git stash save:存储Git追踪文件与最新节点文件之间的差异性,并把被追踪的文件还原成成最新节点的文件
  • git checkout 节点标识 . :取出执行上面指令时保存在文档库中文档版本
  • git stash pop/apply:取出暂存文件,并合并到当前文件夹文件中

上面说的有点饶人,下面看一下具体的演示就明白了:

 

关于上面需要注意一下:

(1)因为我暂存状态之后,没有做任何操作,比如你提交了一次commit之后,那么后面的取对比文件版本就使用:

git checkout HEAD^1 .

(2)注意,比较不同状态文件内容之间的差异性

关于清理Git文档(也即垃圾回收gc)这一块;我们主要先了解一下几条指令的概念:

  • git  gc :执行默认的清理流程
  • git  gc -aggresive:比较细致的检查和清理文件,耗时,不建议常用
  • git  gc --auto:会先判断当前Git库是否需要清理
  • git  gc --no-prune:要求Git不要清理不使用的文件,只需要整理即可。

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

Git学习 Chapter 1——Class 4:Git中的文件比对_第1张图片

 

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