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