GIT是非常的版本控制工具,但是苦于git那晦涩难懂的man pages,还有众多的命令选项和怪异的用法,git有点难学。这篇文章分享我学习过程中收藏的一些好图,并围绕这些图讲讲我对git的理解,希望对大家有所帮助。
GIT工作流程
了解git,首先要弄清楚对象在被git管理过程中所处的4个阶段,分别是:工作目录、index(又称为暂存区)、本地仓库和远程仓库。
从时间先后来讲,工作目录的内容是你当前看到的,也是新的;index区标记了你当前工作目录中,哪些内容是被git管理的;而本地仓库保存了对象被提交过的各个版本,比起工作目录和暂存区的内容,它要更旧一些;远程仓库是本地仓库的异地备份,远程仓库的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可能与本地仓库同步,也可能不同步,但是它的内容是旧的。任何对象都是在工作目录中诞生和被修改;任何修改都是从进入index区才开始被版本控制;只有把修改提交到本地仓库,该修改才能在仓库中留下痕迹;而要与协作者分享本地的修改,可以把它们push到远程仓库来共享。图上方的add、commit、push等,展示了git仓库的产生过程。反过来,我们可以从远程历史仓库中获得本地仓库的后一个版本,clone到本地,从本地检出对象的各个版本到index暂存区或工作目录中,从而实现任何对象或整个仓库的任意阶段状态的”回滚”。当正向和反向都能自由切换后,git强大到无所不能了。
一开始接触这些概念可能比较绕,其实在git入门阶段,可以先抛开远程仓库不看,只了解管理本地仓库的”3棵树”够了。如下图: