了解git,我们先来看这样一张图~~
我们平时的工作就是在工作区该代码,改完之后git add到暂存区上面,暂存区还没有真正提交到版本库,要用git commit才会提交到版本库。
哈哈,说了这么一些,可能大家很是疑惑,那就往下面先熟悉熟悉什么是git。
什么是git?
git 就像一个软件,用来控制代码的版本的。(也叫分布式版本控制系统的软件)
上面的名词可能没有理解吧,别着急,咱们一个一个解释。。
首先版本控制是个啥?
记录一个或若干文件内容变化,可以查阅特定版本修订情况的系统。(就像你修图一样,修错了可以用返回到原来的图片上去)
而git又是一个比较牛逼的分布式版本控制系统,为啥分布式版本系统就牛逼了?
首先必须有对比,那我们就拿相对来说比比较常用的集中化的版本控制系统来说。
所谓的集中化:就是人们把电脑都连接到一台服务器上面去,取出最新的文件或者提交更新。这台服务器上面有不同的版本,人们可以选择自己想要的版本。(不过开发一般都是选择最新的版本)
当然这样是会存在弊端的:中央服务器的单点故障,整个系统就会瘫痪。
这时候就要讨论讨论我们的分布式版本控制系统。和集中化的版本控制系统不同的是,我们在自己电脑上面也有版本库了,就是说我们把服务器上面的版本库全部都克隆下来了。
对于这种方式来说,每一个电脑都回克隆中央服务器,不就相当于每一个电脑都可以看作中央服务器,那就算中央服务器坏了,也没事,只要把其中一台数据克隆过去恢复就行了。
这样对比起来是不是就很牛逼了!!
安装及设置
安装 完git后,我们有3个GIT版本
GIT GUI //图形化界面
GIT BASH //在CMD的基础上多加了一些比较方便的命令
GIT CMD
安装完成之后,我们还需要设置我们的名字和邮箱,来辨别我们的电脑:(此处–global是全局设置)
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
版本库!
所有的东西都设置好了,我们首先想到的是怎么提交代码呢?提交到哪里呢?
先解决地方的问题:如何提交到版本库呢,(哈哈,是不是有人现在回头找版本库是个啥,你们可以看上面的那个图,版本库就是存放代码版本的地方,在版本库里面,我们将来要读取哪一个版本的都可以。)
(如图:版本库就是在隐藏目录.git,这个就是GIT的版本库。)
下面这些操作所有的提交有关的操作:
$ git init //创建版本库
$ git status //查看版本库当前状态
$ git add .in.txt //添加文件.some到版本库
$ git add . //添加所有文件到版本库
$ git commit -m "class" //把你的代码提交到版本库,“class ”是描述这段代码的内容
上面刚说了,版本库是存放多个版本的,那我们如何实现各个版本的回退前进及查看呢?
$ git reflog //查看你每一操作GIT的记录
$ git reset --hard 6893b75eb 回退到
版本号为 6893b75eb (6到8位的版本号(不用写全版本号,当然写全也是可以的))的版本
$ git log //commit后面代表的是版本号
修改操作
嗯,提交是可以完成了,那我们就要考虑修改
首先,如何查看自己的修改呢?
$ git diff -- HEAD in.txt
撤销修改
- 刚修改的文件,如果你没有用add命令把它添加到暂存区,
$ git checkout -- in.txt //撤销对in.txt的修改</pre>
$ git checkout . //撤销所有文件的修改
- 如果你已经将修改的文件添加到暂存区,那也别担心,那么git reset HEAD 加文件名来回退到工作区,然后再进行撤销。
$ git reset HEAD in.txt //把in.txt从暂存区放回工作区
$ git checkout -- in.txt
删除文件
$ rm in.txt
远程仓库 ~github
上面说了这么多,我们的代码还没有进入远程呢?说起远程仓库,我们就要谈谈GitHub了
GIT的远程仓库其实就是一台24小时开机的服务器,所有人都会把代码放到上面去,这样子在本地的代码没有了,也可以到服务器上面去拿。修复bug或者改需求的时候,从服务器上拿下来,然后修改完成之后再推上去,这样子,别人都能看到你修改了什么内容的代码。我们可以用github来作为我们git的远程仓库。
前提你必须有一个给github账号
生成 SSH keys
而 SSH keys 就是为了识别 这些代码是谁推送的
$ ssh-keygen -t rsa -C "youremail@example.com" //一路回车,使用默认值就可以,不用密码:
然后找到生成pub key里面的id_rsa.pub文件,默认目录是C:\Users\xiaoyao.ssh,复制里面的内容到github上面去创建SSH keys
(这里盗用一个图 (๑•̀ㅂ•́)و✧)
下一步就是创建GitHub仓库了 (这里也是盗的图 啊哈哈~~)
然后你刚才所创建的仓库显示是这个样子
上传代码到 github:
- 如果你对git命令还不是很熟悉的,对于小白最简单的方式就是,(在你的SSH下面,会有一个 uploading an existing file ,点进去会有一个文件拖拽的面板,直接可以把要上传的文件拖进去 哈哈,我开始一直都是这么干的)
- 当然大多是人都是将本地库的东西提交上去的,这就需要我们关联本地仓库和github仓库 (这个很容易理解~不然你计算机怎么知道你提交到哪了)
$ git remote add origin https://github.com/Breakyizhan/HelloGIT.git //直接根据上面的提示,用下面git的命令来关联
链接建立好了,我们也可以测试一下
$ ssh -T git@github.com //测试仓库的链接
对远程库的操作~
从远程github仓库克隆代码
你在本地创建了一个空的文件夹,想把远程github上的代码克隆下来,这又要怎么做呢?
-
在本地想要克隆的文件夹下面创建GIT版本库(此时你自己就是主分支master),建立远程库的连接。
-
用git clone克隆远程库所在项目的代码,比如要克隆上一节的代码,用下面命令:
$ git clone git@github.com/Breakyizhan/HelloGIT.git //利用仓库中的git提示
以及把代码推送到github远程库
$ git push -u origin master //注意执行此命令时你一直处于主分支(master)
代码从远程库更新到本地
如果远程库的代码有更新的话,就是团队有人修改了东西,并且push到了远程库的代码,而我们要进行更新的话,就要用到下面的命令了。
$ git pull
git多人开发 分支管理
现在的大型互联网公司,项目的开发一直都是团队协作完成的,每个人如何保证在开发好自己的代码的同时,又能与别人的代码完美融合人呢,这时候就需要我们的git分支了 ~~
GIT的分支有什么用呢?
其实就是平行开发,如果在两条分支上分别开发各自的功能,等两条分支一合并,这两个功能也就完成了。
上面我们在自己提交代码的版本库时一直在强调它是自己的主分支(master)当然了一个项目就只有一个主分支,而我们团队开发也是如此我们每个人都有一个自己的分支,我们可以在自己的分支开发,当自己的分支开发的差不多了,可以将自己的分支合并到主分支。
网上这样介绍这种开发:模式在实际开发的过程中,采用的是敏捷开发的迭代功能。就是不断创建分支,然后进行迭代合并的功能,对产品的需求进行不断的增加和调优。(哈哈,说的就是比我自己口头描述的好)
好了,那如何创建分支呢?
$ git checkout -b dev //创建并切换分支<span class="string">
相当于两条下面的命令,创建分支,切换分支:
$ git branch dev //创建分支
$ git checkout dev //切换分支<span class="string">
注意:
切换分支后你的命令后面会标注上你切换的分支(dev)!!!!
你的文件夹 也会更新显示为你当前的分支上的信息
如果你自己的分支开发好了,如何将自己的分支合并到主分支呢?
$ git checkout master //切换回master
$ git merge dev //合并分支
$ git branch -d dev //删除分支,如果没有需要也可以不用删除
当然这篇博客也是根据 【git常见问题以及面试题汇总】所总结得到的,详细的内容,你们也可以在这里面查看。。
最后我们再附上一张git的命令速查表 “★,°:.☆( ̄▽ ̄)/$:.°★ 。”