一个菜鸟驿站!

git分支

PHP 2018-07-16 浏览(876) 评论(0)
- N +

文章目录 [+]

Git简介

Git是什么Git是目前世界上最先进的分布式版本控制系统(没有之一)。

Git的特点:简单来说就是:高端大气上档次!

什么是版本控制系统:简单来说,你如果用Word写过长篇大论,那你一定有这样的经历。

想删除一个段落,又怕到最后找不回来,只能新建N多的副本,万一不行,就再用以前的副本恢复。

但是当你一周之后,你想用好久以前的,但是根本不知道是哪个了。

而且更要命的是,有些部分需要你同事一起配合填写,当你两都写好了之后,还得想想他有什么改动,然后再合并到一起。

但是,如果有这么一个软件,能帮你记录文件每次的改动,还可以多人协同编辑,如果想看看以前都有什么改动,直接一个命令就搞定,那不是很爽么。

那么,这个软件用起来就是这个样子了:

版本文件名用户操作说明日期
1catlane.doc张三添加软件服务条款2018/07/11 12:00:05
2catlane.doc李四增加了License人数限制

2018/07/11 15:10:05

...............

这样子,你就可以告别手动管理多个“版本”的时代了,进入版本控制的新时代。

Git分支详解

我们每次提交,Git都会将它们传成一条时间线,这条时间线就是一个分支。如果你没有创建过分支,那么截止到目前,只有一条时间线,在Git里面,这个分支叫做主分支,即master分支。HEAD严格来说不是指向提交,而是指向mastermaster才是指向提交的,所以,HEAD就是指向了当前分支。

一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:

1.png

每次提交,master分支都会向前移动一步,这样,随着你的不断提交,master分支的线也越来越长:

当我们创建新的分支,例如dev分支时,Git新建了一个指针叫做dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:

0.png

其实,Git创建一个分支很快,因为除了增加一个dev指针,修改HEAD的指向,工作区的文件并没有什么任何变化。

不过,从切换分支之后,对工作区的修改和提交就是针对dev分支了,比如新提交一次之后,dev指针往前移动一步,而master指针不变,因为我们针对的是dev分支:

2.png

假如我们在dev上的工作完成了,就可以将dev合并到master上了。Git怎么合并呢?最简单的办法,就是直接把master指向dev的当前提交,就完成了合并:

3.png

所以Git合并分支也很快~就修改指针,工作区的内容并没有变化。

合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删除之后,我们就剩下了一条master分支。

4.png

emmm,特别的神奇,你能看的出来那些提交是通过分支完成的吗?

实战

首先,创建dev分支,然后切换到dev分支:

git branch dev

然后切换到dev分支:

git checkout dev

查看所有分支,*代表当前分支:

git branch

然后我们新建个文件,正常提交就可以了,如果服务器上没有分支,git push 则会报错,下边会有方法解决

vim a.php
git add a.php
git commit -m '2018年07月16日18:32:09----添加a.php到分支'
git push

现在dev分支的工作完成了,我们就切换回master分支:

git checkout master

切换回master分支之后,再查看a.php文件,刚才添加的文件并没有出现,因为那个提交是在dev分支上,而master分支此刻的提交点并没有改变:

5.png

现在我们把dev分支的工作成果合并到master分支上:

git merge dev

git merge用于合并指定分支到当前分支。合并后,在查看,a.php文件便出现了。

然后我们就可以删除dev分支了:

git branch -d dev

删除之后,查看branch,就只剩下master分支了:

git branch

因为创建、合并、删除分支非常快,而且很便利,所以Git鼓励你使用分支完成某个任务,合并之后再删除掉分支,这和直接在master分支工作效果是一样的,但是过程更加安全。

然后我们需要将本地分支推到服务器上,使Git服务器也有dev分支:

git push --set-upstream origin dev

我们有时候在Git服务器(git.abc.com)上有一个分支,需要将分支clone下来,我们去操作:

git clone -b dev git.abc.com

致谢

感谢各位看完本篇文章,最近几天一直在学习,也顺便整理一些文章,希望能够对类似我一样的菜鸟一些帮助,也同时希望大佬们有所指教,共同学习,谢谢。


标签:
作者:猫巷

,

评论列表 (0)条评论

发表评论

召唤伊斯特瓦尔