快速入门系列--GIT版本控制工具
由于GIT刚刚开始使用不久,经常会在Merge时出现没有change-id的情况,在结合gerrit使用时,经常出现不能提交的情形,使得自己很困扰。最近有次熬夜加班,在代码完成后,由于多人在很短时间内提交多次,造成提交不上去的情况,当时那个慌啊。还好有给力的大神帮忙处理,突然觉得有必要好好学学Git了,不能仅仅满足于图形化工具的使用。 工作区、版本库、缓存区的关系与区别,如下图: 工作区:左侧的工作区就是我们日常编辑的部分 暂存区:使用git add XXX后的部分 版本库:使用commit后的部分 HEAD:当前版本指针 Git中的tree,blob,commit,tag的概念, Blob: 就是一块内存区域,其中内容可以是文本,源码或者图片 Tree: 很想文件系统中的目录,可以指向blob或者其他的树,就像目录可以包含文件和子目录一样 Commit: 包含提交者的信息(姓名,Email),指向当前提交下所属的tree的指针,指向之前提交(父提交)的指针 Tag: 包含指向任意commit的指针,便于记录和使用指定的tree,而不用使用哈希值。 Git命令 解释 Git status 查看当前状态 Git diff Git diff head Git diff --cached/--staged Git checkout 注意检出时会修改指针、暂存区、工作区