以前总听说git【分布式版本控制系统】自己愣是搞不懂它到底要干哈~什么叫版本控制系统根本理解不了。现在工作需要必须要用到,结果好像就突然懂了git是干什么滴。

所以!原理这个东西的理解是要建立在大量的练习使用的基础上的!

 

版本库即仓库,英文名repository,里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

 

初始化一个本地版本库: git init     (我们一般会创建一个文件夹,进入该文件夹后执行该指令,执行该指令后,该文件夹就成为了工作区

 

一般我们平时使用的大多是:(顺序也大致如下)(在master分支下)

git pull  ——>  先将远程版本库中的其他修改pull到本机

git status  ——>  查询master分支下本机的代码状态(会显示有修改的文件名、新添加的文件名)

git diff  ——>  显示你具体修改了哪些部分

git add filename1 filename2...  ——>  将修改后的代码添加到版本库的index中

git commit -m "XXXXX"  ——>  将index中的代码全部提交到master中,commit后,index被清空

git push  ——>  提交到远程仓库

【提交过程结束】

 

当你init后,会生成一个.git文件夹,事实上这个.git就是版本库。这里面存着很多信息,最重要的就是:index暂存区、git为我们创建的第一个分支master、指向master的一个指针HEAD

add ——> index, commit ——> master, push ——> 远程

 

 

在分支下提交代码的过程:

git pull

git branch nyn  ——>  创建分支nyn

git checkout nyn  ——>  切换到分支nyn

git status

git add filename1 filename2...

git commit -m "XXX" 

git push origin nyn  ——>  提交该分支下的全部修改到远程(不能使用git push哦~)

 

 

Git把每次提交修改串成一条时间线,这条时间线就是一个分支。HEAD严格来说不是指向提交,而是指向当前分支,因为我们最初没有添加新的分支,一直提交到master中,因此,我们说HEAD指向master。当我们创建了分支dev,即Git新建了一个指针叫dev,此时dev指向master相同的提交,现在切换指针指向把HEAD指向dev,就表示当前分支在dev上,创建分支后仅仅是改变了HEAD指向,工作区的文件没有任何更改。

那么我们后续对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:

 

 

将dev合并到master:

 

 

删除分支dev:

 

 

与上述流程相关的分支指令:

git branch  ——>  查看当前的分支

git branch nyn

git checkout nyn  ——>  切换到分支nyn(即HEAD指向了nyn)

git chechout master  ——>  切换回master(即HEAD指向了master)

git merge nyn  ——>  将分支nyn与当前分支master合并(即HEAD指向了master)

git branch -d nyn  ——>  删除分支nyn(即HEAD指向了master)

 

 

最近还用到的一些指令:

git log  ——>  可查看提交历史

git reflog  ——>  可查看输入的命令历史

(以下这两个还没有仔细研究,还有待继续学习,后期再补~)

git reset --hard commitID  ——>  版本间穿梭

git checkout -- filename  ——>  丢弃修改

 

git还有很多东西需要学,学了新东西再补笔记咯~笔记中的示意图全部来自于http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000。有兴趣从头学的小伙伴移步链接啦~