git中的一些概念说明
来源:互联网 发布:网络教育选什么专业好 编辑:程序博客网 时间:2024/06/06 07:39
工作区(Working Directory)就是你在电脑里能看到的目录,即使用git init所在目录。
版本库(Repository)工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库。
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
分支管理:
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。
如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!
创建与合并分支:
master
分支。HEAD
严格来说不是指向提交,而是指向master
,master
才是指向提交的,所以,HEAD
指向的就是当前分支。一开始的时候,master
分支是一条线,Git用master
指向最新的提交,再用HEAD
指向master
,就能确定当前分支,以及当前分支的提交点:
每次提交,master
分支都会向前移动一步,这样,随着你不断提交,master
分支的线也越来越长
当我们创建新的分支,例如dev
时,Git新建了一个指针叫dev
,指向master
相同的提交,再把HEAD
指向dev
,就表示当前分支在dev
上:
你看,Git创建一个分支很快,因为除了增加一个dev
指针,改改HEAD
的指向,工作区的文件都没有任何变化!
不过,从现在开始,对工作区的修改和提交就是针对dev
分支了,比如新提交一次后,dev
指针往前移动一步,而master
指针不变:
假如我们在dev
上的工作完成了,就可以把dev
合并到master
上。Git怎么合并呢?最简单的方法,就是直接把master
指向dev
的当前提交,就完成了合并:
所以Git合并分支也很快!就改改指针,工作区内容也不变!
合并完分支后,甚至可以删除dev
分支。删除dev
分支就是把dev
指针给删掉,删掉后,我们就剩下了一条master
分支:
分支策略:
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master
分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev
分支上,也就是说,dev
分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev
分支合并到master
上,在master
分支发布1.0版本;
你和你的小伙伴们每个人都在dev
分支上干活,每个人都有自己的分支,时不时地往dev
分支上合并就可以了
使用GitHub:
如何参与一个开源项目呢?比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页https://github.com/twbs/bootstrap,点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone:
git clone git@github.com:michaelliao/bootstrap.git
一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git
克隆,因为没有权限,你将不能推送修改。
Bootstrap的官方仓库twbs/bootstrap
、你在GitHub上克隆的仓库my/bootstrap
,以及你自己克隆到本地电脑的仓库,他们的关系就像下图显示的那样:
- git中的一些概念说明
- angularjs 一些概念说明
- git 一些概念: 暫存區
- 一些基本的Git概念
- 关于git的一些概念
- 摄影中的一些概念
- hibernate中的一些概念
- C++中的一些概念
- sqlserver 中的一些概念
- 数据结构中的一些概念
- Wifi中的一些概念
- css中的一些概念
- GPGPU中的一些概念
- BT656中的一些概念
- 线性代数中的一些概念
- C++中的一些概念
- spring中的一些概念
- 数据库中的一些概念
- exynos4412启动流程
- Android热修复—阿里的新一代热修复技术Sophix
- java if语句(笔记整理)
- mysql主從復制-CHANGE MASTER TO 語法詳解
- Android自动获取敏感权限并申请
- git中的一些概念说明
- 取消所有timeout(chrome插件小试-推荐以及广告去除)
- File类使用详解
- 《机器学习实战》学习笔记-[15]-无监督学习-利用Apriori进行关联分析
- 《剑指offer》牛客网java题解-斐波那契数列
- stm32成长记之定时器时间计算
- JVM中Java类的加载机制
- Redis分区
- 解析Spring JdbcTemplate