侧边栏壁纸
博主头像
赵东阳的个人网站

行动起来,活在当下

  • 累计撰写 20 篇文章
  • 累计创建 8 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

版本控制工具--Git

温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

版本控制的思想是,管理变更,而不是管理文件。


Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异——这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。

从根本上来讲,Git是一个内容寻址文件系统,并在此之上提供了一个版本控制系统的用户界面,物理上存储的是每一个状态的快照文件,不保存这些前后变化的差异数据。

实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。

每次提交更新时,它会纵览一遍所有文件的指纹信息(hash)并对文件作一快照,然后保存一个指向这次快照的索引。git-示意图

为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。

Git 更像是个小型的文件系统,但它同时还提供了许多以此为基础的超强工具,而不只是一个简单的 VCS。

git-20220311124842191

工作区、暂存区和版本库的概念。

工作区:.git存放的目录

版本库,工作区的隐藏目录 > .git 就是Git的版本库

Git的版本库李存了很多东西,其中最重要的就是称为stage的缓存区,还有git自动为我们创建的master分支。以及指向master的指针叫head。

img

暂存区是什么呢? 就是本工作区的列表。当进行调试的时候我们可能需要临时修改其他正常的文件,但是我们并不希望它被同时提交。

对任何一个文件,在Git内都有三种状态:

  • 已提交(committed):表示该文件已经被安全的保存在本地数据库中了
  • 已修改(modified):表示修改了某个文件,但还没有提交保存
  • 已暂存(staged):表示把已修改的文件放在下次提交时要保存的清单中

重要的.git目录

当一个新的目录或已有的目录执行git init时, Git会自动创建一个.git目录。这个了目录包括了所有Git存储和操作的对象。若想复制一个版本库,只需要把这个目录拷贝到另一个地方就行。对于一个全新的版本库,该目录的结构如下:img

  • description文件:仅供GitWeb程序使用
  • config文件:包含项目特有的配置选项
  • info目录:包含一个全局性排除(global exclude)文件,用以放置那些不希望被记录在 .gitignore文件中的忽略模式(ignored patterns)
  • hooks目录:包含客户端或服务端的钩子脚本(hook scripts)
  • HEAD文件:指示目前被检出的分支
  • index文件:保存暂存区信息
  • objects目录:存储所有数据内容
  • refs 目录:存储指向数据(分支)的提交对象的指针

将文件添加到代码库:

img

(1)git commit -a:相当于运行 git add 把所有当前目录下的文件加入暂存区域再运行 git commit
(2)git commit <file_name>:进行一次包含最后一次提交加上工作目录中文件快照的提交,并且文件被添加到暂存区域
(3)git checkout HEAD -- <file_name>:回滚到复制最后一次提交

0

评论区