上图是根据个人理解简要画出的git流程图:
- 克隆 Git 资源作为工作目录。
- 克隆资源库的文件为工作副本,在副本上添加或修改文件。
- 如果其他人修改了,你可以更新资源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
工作区(Working Directory):
存放git版本仓库的目录就是工作区
版本库(Repository):
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
暂存区(stage):
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
HEAD:
你的本地仓库由 git 维护的三棵“树”组成。
第一个是你的 工作目录,它持有实际文件;
第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;
第三个HEAD,指向你最近一次提交后的结果。
添加修改到暂存区:
创建两个文件add到stage:
#git add 文件名
或者
#git add *
从stage提交到当前master分支的HEAD:
#git commit -m “版本描述信息” //提交暂存区里的修改到版本库的分支
Git跟踪并管理的是修改,而非文件:
什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。
第一次修改 -> git add -> 第二次修改 -> git add -> git commit
每次修改,如果不add到暂存区,那就不会加入到commit中。
版本号:
也就是commit id,和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,如果多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。