Git——基本的Git概念

基本概念

Git的repository是一个简单的数据库。Git版本库不仅仅提供版本库中所有文件的完整副本,还提供版本库本身的副本。

Git追踪内容

Git追踪的是内容而不是文件!
Note:Git用户所说的SHA1、散列码、对象ID指的是同一个东西。

  1. 如果两个文件的内容完全一样,无论是否在相同的目录,Git对象库里只保存一份blob形式的内容副本。Git仅根据文件内容来计算每一个文件的散列码,如果文件有相同的SHA1值,那么他们的内容一定是一样的,然后将这个blob对象放到对象库里,并以SHA1值作为索引。
  2. 如果这些文件中的一个发生了变化,Git会为他们计算一个新的SHA1值,识别出他现在是一个不同的blob对象了,然后把这个新的blob对象加入到对象库中。原来的blob对象保持不变。
  3. 当文件从一个版本变到下一个版本的时候,Git的内部数据库有效的存储每个文件的每个版本,而不是他们的差异.
    Note:有人会问,把相同文件的每个版本的全部内容都存储效率是否太低了,我对一个版本只添加一句代码也要重新生成一次全部内容吗?
    然而:答案显然是“不是,不一定是”。至于原因:就是GIt内部使用了及其高效的数据结构,能够高效的解决这个问题,但又可以保证每个版本的代码都能完整存储。

git add & git write-tree(树对象)

  1. git add XX(file name)语句表示立即为添加的文件的* 内容 *创建一个对象。
  2. 树对象:Git通过叫做目录树的对象来跟踪文件的路径名,其不会立即为树创建对象。
  3. git write-tree:从当前索引创建一个树对象,通过该语句捕获当前索引的信息。

你可能感兴趣的:(Git——基本的Git概念)