菜鸟笔记
提升您的技术认知

Git 模型

Git是版本控制工具,类似于SVN的作用。这里就忽略掉怎么安装之类的,只讲解Git最重要的思维模型。这三个概念一定要清楚:

1 工作区(Working Area)

2 暂存区(Stage)

3 版本库(repository, 本地仓库和远程仓库)

 

工作区很简单,就是你修改代码时会立即体现的地方。

 

暂存区是Git的特色之一,这个概念不好理解,这里举一个例子说明。如我们领到了一个任务,任务是修改两个bug。你可以把这两个bug分开提交,也可以合并到一次提交上。假如我们需要合并到一次提交时而我们又没有暂存区,那么我们必须先修改完一个bug,然后再修改下一个,我们把两个bug修改同时放在工作区里,当我们git status/diff时,就得通过自己的努力去选择相应的变化的内容了,这些内容包括两次bug修改的变化。但如果我们当修改完一个bug后,先把这个bug暂存起来(git add),然后修改第二个bug,此后我们就可以聚焦于第二个bug了,因为第一个bug的修改代码不需要我暂时关注了。

 

可以看到Git通过增加了暂存区,在工作区和版本库之间间接的增加了一层,提高了灵活性,开发人员可以有自己分解子任务的自由,按照自己的节奏高效工作。

 

远程版本库也很好理解,那么本地版本库是什么呢,原来这就是Git的另一个特色,通过在本地建立版本库,使开发人员可以在不联网的时候进行提交(git commit),便于跟踪维护改变,最后在方便的时候进行git push,这也是为什么说Git是分布式的版本控制工具的原因。

 

下边看一个Git的hello world教程:

#先在本地建立版本库,看一下状态

git clone

git status

 

#建立自己的本地分支hongchangfirst

git checkout -b hongchangfirst

 

#修改代码,查看变化

git status

git diff

 

#暂存变化

git add

 

#本地提交,后跟提交信息

git commit -m “zhc‘s tutorial”

 

#切换到需要提交到远程仓库的分支上

git checkout mainline

 

#在push之前,先pull,看看有没有其他人又commit了

git pull

 

#进行两个分支的merge

git merge hongchangfirst -m “zhc's tutorial”

如果想显示使用fast-forward模式

git merge --ff hongchangfirst -m “zhc's tutorial”

可以使用非fast-forward模式,

git merge --no-ff hongchangfirst -m “zhc's tutorial”

 

#最后上传到远程仓库上

git push