一、引言
理解git首先要对它自己的主要概念理解清楚,这个我看了一边后又重新梳理了一边思路,提取了几个自己很容易误解和难区分的概念,在这里详细介绍下==
二、工作区与暂存区
工作区:就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区。
暂存区:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
提交过程:
- 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
- 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
三、版本与分支
分支之下有版本,分支有合并,版本没有合并,push与pull只会涉及分支不会涉及版本。 这个灰常重要。分支切换用checkout,版本切换用reset
版本:在同一个分支上的不同版本,版本之间可以相互切换,版本对应的是修改,不是对应文件。
分支:你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
其他版本控制系统如SVN等都有分支管理,但是用过之后你会发现,这些版本控制系统创建和切换分支比蜗牛还慢,简直让人无法忍受,结果分支功能成了摆设,大家都不去用。
四、分支合并
- 创建分支dev
$ git checkout -b dev
- commit分支dev
$ git add readme.txt
$ git commit -m "branch test"
- 切换分支
$ git checkout master
- 合并分支到当前分支
$ git merge dev
期间你可以用git branch查看有那些分支
五、总结
- 工作区与暂存区
- 版本与分支
- 分支合并