——举例在windows中,通过创建版本,了解工作区、暂存区、版本区的含义和相互关系
【背景】
在一个叫windows操作系统的房子里,很有多的叫文件夹的房间。一个泥巴玩家喜欢用他的叫文本文件的泥巴捏出各种他想要的作品,今天他打算做个叫test文本的美女模特。
1、他准备了一个空空的房间,打算在这里开始工作。
2、他只捏泥巴和说咒语,其他的事情都不做。
3、他邀请了一个叫git bash的魔镜住在他家里。有什么要求对魔镜说出咒语,魔镜就会帮他实现愿望。
4、他还有一个叫保存键的相机,能记录作品的样子,但是这个相机虽然能一直记录作品,却只能让他还原最后一次拍照的作品样子。他看不到之前拍照的样子。当然如果他还没有拍照保存的话,他可以用ctral+Z来还原上一次的步骤。
【现状】
1、他的泥巴模特的左手基本捏出来了,他比较满意,就用相机保存下来了。
2、他担心如果修改后再次保存时会没有那么容易恢复到刚捏好左手的状态,于是他要去做个模型的副本以备万一,每存一次,就要去做一个副本,若干个副本的管理让他很头疼。
【期待】
1、他可以一直修改他的作品,但是也可以随时反悔,可以让他的作品能穿越回他希望的任意时点,这样他的作品也能回到那个时点的样子。
2、他不用不停的去做模型的副本,只要管理好手中的这个作品就好。
【尝试】
请git bash魔镜来帮忙
【疑问】
不知道要怎么做,也不知道魔镜怎么做到的。
解决方案:
魔镜说它能达成他的愿望,但是有个前提条件,就是穿越回去的时间点是必须提前说好的。没有提前说的是很难回去的。
魔镜教了他几句咒语和一些简单的规则,于是他开始行动了:
1、他对着魔镜说:git init;
魔镜就在这个房间里建了隐藏暗室。他用透视眼镜看到这个暗室的名称是.git ;魔镜说:“这个房间里的暗室就是他的版本库,这个房间除了版本库,其它的地方都叫工作区。你就在工作区工作就好,不要轻易动暗室里的东西。
2、他压住好奇,开始工作,觉的test模特的身材都捏好了,想好好保存,于是用相机保存了下来。可是怎么提前约定好要回来的时间点呢?魔镜让他试试看。
3、他对魔镜说:git add test.txt
作品还在他的手中没有变化,魔镜也没有任何反应。他很好奇到底暗室里有什么?魔镜告诉他暗室里有2个地方与让他的作品穿越时空有莫大的关联。第一个地方叫暂存区,这是做好时间点的必经之路。他只要说出上面的add咒语,这个作品最近的一次保存的时间点就放入了暂存区了。每次他修改到满意,保存后,就可以说上面的add咒语,把最新的作品状态和修改情况记录到暂存区。魔镜说,他还需要再说第二句咒语,愿望就能达成。
4、他对魔镜说出了第二句咒语:git commit -m "test"
暂存区里他提交的每一次信息全部转到了一个叫master的分支上了,这第二个地方就是它了。它好像一个时间珠串,按照提交的时间顺序串起一颗颗记忆着作品各种信息的珠子。魔镜说,那就是作品的版本。他的作品从此就拥有了金刚不坏之身了,就算手中的作品损坏了,也能回到任意一个珠串记忆的时点,让作品恢复那时的状态。
他发现在这个master时间珠串上有个指针,指着最新的一个珠子(版本)。魔镜告诉他,这个叫head指针,只要你说对咒语,就可以任意调动指针,让作品立刻穿越回它指向的那珠子记忆的时间。
5、他发现时间珠串上每个珠子都有一个长长的数字和字母组合的号码,只要说出号码的前面六位或者七位就可以指认出那个珠子来。魔镜说:“这个号码就是版本号。”
尾声:他很惊讶魔镜的神奇,魔镜却笑而不答,心里偷偷想着:“我还有很多的秘密没有告诉你,其实我就只是样子太黑,有点吓人,其实我很好控制的,只要你知道了常用的那几个咒语,基本上我就供你任意驱使了。”