文章目录 [+]
Git简介
Git是什么:Git是目前世界上最先进的分布式版本控制系统(没有之一)。
Git的特点:简单来说就是:高端大气上档次!
什么是版本控制系统:简单来说,你如果用Word写过长篇大论,那你一定有这样的经历。
想删除一个段落,又怕到最后找不回来,只能新建N多的副本,万一不行,就再用以前的副本恢复。
但是当你一周之后,你想用好久以前的,但是根本不知道是哪个了。
而且更要命的是,有些部分需要你同事一起配合填写,当你两都写好了之后,还得想想他有什么改动,然后再合并到一起。
但是,如果有这么一个软件,能帮你记录文件每次的改动,还可以多人协同编辑,如果想看看以前都有什么改动,直接一个命令就搞定,那不是很爽么。
那么,这个软件用起来就是这个样子了:
版本 | 文件名 | 用户 | 操作说明 | 日期 |
1 | catlane.doc | 张三 | 添加了软件服务条款 | 2018/07/11 12:00:05 |
2 | catlane.doc | 李四 | 增加了License人数限制 | 2018/07/11 15:10:05 |
... | ... | ... | ... | ... |
这样子,你就可以告别手动管理多个“版本”的时代了,进入版本控制的新时代。
Git分支详解
我们每次提交,Git都会将它们传成一条时间线,这条时间线就是一个分支。如果你没有创建过分支,那么截止到目前,只有一条时间线,在Git里面,这个分支叫做主分支,即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上的工作完成了,就可以将dev合并到master上了。Git怎么合并呢?最简单的办法,就是直接把master指向dev的当前提交,就完成了合并:
所以Git合并分支也很快~就修改指针,工作区的内容并没有变化。
合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删除之后,我们就剩下了一条master分支。
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分支此刻的提交点并没有改变:
现在我们把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
致谢
感谢各位看完本篇文章,最近几天一直在学习,也顺便整理一些文章,希望能够对类似我一样的菜鸟一些帮助,也同时希望大佬们有所指教,共同学习,谢谢。
发表评论