git学习的心得体会。
接触了3天的git,对如何用命令行有了小小的了解,所有写下这个学习心得。
git是一个分布式版本控制系统。相较于CVS、SVN等集中式版本控制系统来说更加的灵活。简单的打个比方,集中式版本控制系统就相当于你想玩一个玩具,你向你的小伙伴去借,玩完之后必须还回去。如果小伙伴不借给你玩具,你就不能玩了。这就是集中式的缺点不够灵活,必须是以中央服务器为中心去获取数据。而分布式的版本控制系统就不一样了,没有具体的“中央服务器”,随便任何一台充当“中央服务器”,但是这个中央服务器只是方便大家交换修改信息,可以对同一个文件进行修改并推送给对方,这样双方就都能看到对方的修改了。这里我就不过多的阐述了,具体的可以去了解这个网址https://www.liaoxuefeng.com/wiki/896043488029600。
在这里我就介绍下常用到的命令以及为什么这么用,我会围绕下面这张图为大家进行讲解:
一.图形中的各个部分
1.工作区域:
我们在开发的过程中,肯定会敲代码,做的项目放在一个根目录里,这个部分其实与你的github上的远程库,你的本地代码库没有任何关系,只是一个你工作的部分,也就是你所要提交的项目。
2.暂存区:
暂存区,顾名思义就是暂时存储你想要提交的文件,为什么会有这个区域呢,主要是我们不可能每次都要向我们的本地库去提交一次操作,这样就不够灵性了,而这个暂存区就像一个临时仓库,将你通过多次提交的文件放在这个临时仓库,等你把想要提交的文件都添加到了这个临时仓库,我们就可以把临时仓库的所有文件都打包提交到本地代码库,也就是本地的大仓库。
3.本地代码库:
就是通过git init 初始化后可以由git管理的一个文件夹,所有文件都被添加了一个隐藏了的.git文件后缀名。同样你也可以通过clone远程库上的仓库,那就不需要去init你的本地仓库了,主要是将暂存区的打包的文件收录起来,将这些文件发送到远程库中去。
4.远程代码库:
这个库是一个共享的仓库,在这个远程库里你可以给你的分支项目去拉请求,查看团队中成员对文件的修改情况,也可以分享你的项目、代码等。与各成员进行交互,同时也提交了开发的效率。
二.如何上传你的项目(分支后面会讲,这里是默认分支)
为了方便大家的学习我画了张图,方便大家脑子里有一个场景,理解起来更加的方便,
大家都知道快递的流程吧,我们的目标是将我们的物品寄到国外去,那我们手中的物品就是我们的工作区域(workspace),我们当地的快递站就是暂存区(index),作用是将快递站中其他地方送过来的也是送往国外的物品和你的物品一起打包送到下一站的大型快递站也就是本地仓库(repository),通过海关检查(其实 就是能让git进行管理,依据是隐藏的.git文件),并发送到海外的仓库也就是远程仓库(romete)。
我先讲讲简单的几个命令:
mkdir 文件名 //创建一个文件夹
touch 文件名1 //cd到你的文件名下,并通过touch 创建文件名1
vim 文件名1 //编译你的文件,进入后系统会处于一个不可编辑状态,按小写字母c去开始编辑,退出的话,按esc 并按两次大写字母Z,退出vim编辑。
1.进入终端或者Git Shell。
如果你是第一次向github提交数据的话,我们需要设置一下你的上传项目的身份依据。
git config --golbal user.name '用户名' //设置你上传的用户名
git config --global user.email '邮箱' //设置你上传时的邮箱信息
你也可以通过
git config --golbal user.name
查看你的上传时的用户名
2.两种方式创建自己的本地仓库:初始化/复制远程库
初始化:首先你要确定你想要哪个目录去充当一个本地代码库的角色,然后cd到该目录下
git init //将该目录下的所有的子文件变成都能被git管理的代码库
git init 目录下指定的文件 //将目录下指定的文件当成一个由git管理的代码库(不推荐)
复制:将远程仓库克隆到自己本地目录中,并充当一个本地代码代码库
git clone 与你想要的远程库一致的url //将远程库克隆到本地,充当本地代码库
3.add:将你想要上传的文件放在你的本地代码库下,并通过add添加到你的暂存区里
git add 文件1 文件2 ..... //将指定文件添加到你的暂存区
git add 目录名 //将指定的目录添加到暂存区
git add . //将本地目录下的所有文件都提交到暂存区
那么问题来了,为什么本地代码库目录下的文件还要通过add添加到缓存区?
其实你放在本地代码库中的文件其实还是一个处于工作区域的文件,与本地代码库没有任何关系,唯一的关系是,它的存放路径在本地代码库下,但是本地代码库并不能对他进行管理,我们要通过add把它变成能由git进行管理的代码库中,是一个抽象的层次。
有添加就有删除:
git rm 文件名 //将本地的文件删除,并存放在暂存区
git mv 原文件名 新文件名 //将文件名修改为新的文件名并添加到缓存区
4.commit提交到本地代码库:这一步的操作是将你的暂存区的文件打包提交到你的本地代码库中。
git commit -m "这次提交的说明" //将暂存区所有的文件提交并附带说明,****重点:说明不能省略。
git commit 文件名 -m "......" //将暂存区指定的文件打包到本地代码库,附带注释信息
git commit --amend //修改最近一次提交的注释信息
git commit --amend -m "...." //如果代码没有发生任何变化,重做上一次的注释信息
git commit --amend 文件名1 文件名2 //重做上一次的注释信息,并指定文件的新变化
5.关联远程库
git remote add origin https://github.com/用户名/远程仓库名.git //关联远程仓库
如果你出现了如下问题:
fatel:remote origin already exists
那就先输入
git remote rm origin
去删除这个origin
再输入git remote add origin https://github.com/用户名/远程仓库名.git
6.将本地仓库的文件发送到远程库
git push -u origin master //实际上是将master分支推送到远程仓库,
由于远程库是空的,我们第一次推送master这个分支时,我们需要加-u这个参数,
这个时候不仅会把master分支的内容推送给远程的master分支,
并且还会对其进行关联,所以以后就可以写
git push origin master //当然master还可以换成其他分支,前提是你的远程仓库有这个分支
二.如何创建分支
什么是分支,一个代码库里我们可以放很多项目,每个项目都是放在分支里的,如果直接放在仓库里的话,就会显得杂乱无章。分支与分支是可以相互拉请求,但是本身是独立的存在。
1.查看分支
git branch //查询本地的分支
git branch -r //查询远程库上的分支
git branch -a //查询本地和远程上的所有分支
2.创建分支
git branch 分支名 //创建分支,但依旧停留在当前分支
git ceckout 分支名 //切换到指定的分支,并更新更新工作区域
git checkout -b 分支名 //创建一个新的分支,并切换到创建的新的分支
git brcanch 分支名 “说明信息” //创建一个新的分支,并指定说明
git checkout - //切换到上一个分支
git merge 分支名 //合并指定分支到当前分支
3.删除本地分支名
git branch -d 分支名 //删除指定的本地分支
4.删除远程分支
git push origin --delete 分支名
三.如何删除远程分支里的文件
1.拉取远程仓库
git clone https://github.com/用户名/远程仓库名.git //拉取远程仓库
2.进去仓库
cd 远程仓库名
3.切换到你想要操作的分支名
git checkout 分支名
4.通过ls 查看分支下的文件,并删除文件
git rm 文件名 //删除本地文件,并将其添加到暂存区(实际最后提交的是更新后的分支内容,因为关联的原因)
git rm -r 文件夹 //如果文件夹为空的话,可以不用带-r
5.提交分支
git commit -m "说明信息"
6.提交到远程仓库
git push origin 与前面切换的分支名一致
总结
其实第一次接触的时候以为很难,心中没有一个大致的框图,对他的原理一知半解,所以学起来感觉非常的难懂,但是我们只要沉下心来,认真去理解吸收,我们就能够学会,当然我也还在学习,这只是我目前的心得和体会。