版本控制系统:html
一、CVS和SVN是集中式的版本控制系统。git
二、Git是分布式版本控制系统;github
集中式的版本控制系统:安全
版本库是放在中央服务器的,一旦出问题,就没法干活。干活的时候用本身电脑,因此须要从中央服务器取得最新版本,修改完后再把本身的活推送给中央服务器。最大毛病是必须联网才能工做,网速慢时会被憋死。ruby
分布式版本控制系统: 服务器
有一台“中央服务器的”的电脑,用于多人合做交换修改的。它安全性更高,由于每一个电脑都有完整的版本库,一旦出问题,能够从其余电脑复制。有强大的分支管理。ssh
安装git和基本用法 分布式
一、从git 官网下载程序,默认安装便可。ui
二、设置帐号和邮箱关联,帐号和邮箱能够是码云、GitLab...的帐号都行:spa
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
三、选择合适地方,建立空目录:
$ mkdir test //建立空目录,目录名字为test $ cd test //进入test目录
四、初始化仓库,把目录变成git 能够管理的仓库:
$ git init
$ ls //查看文件
$ ls -ah //若是.git目录是影藏的话,能够经过这个命令查看.git目录
五、提交文件到git 上
$ git add . //告诉Git,把文件添加到仓库,此时是将修改添加到暂存区,可add 屡次 $ git commit -m '本次提交的备注' //告诉Git把文件提交到仓库,此时是吧暂存区的全部内容提交到当前分支,可一次提交不少文件
六、查看当前仓库的状态
$ git status //查看版本库状态,什么被修改过但还没提交的
$ git diff //查看当前相对上一次提交修改的内容
七、版本回退
$ git log //显示从最近到最远的提交日志 $ git log --pretty== oneline //显示log,可是不显示不少凌乱的信息 q //显示log版本信息有不少,使用q键中止查看 git reset —hard head^ //回退到上一个版本 git reset —hard head^^ //回退到上上个版本 git reset —hard head~100 //回退到以前100个版本 git reset —hard +commit_id //回到某个版本号的版本 git reset — hard 版本号 //版本回退屡次后须要恢复最新版本 $ git reflog //查看曾经使用过的命令
八、撤销修改
$ git checkout -- test.html
九、删除文件
$ rm test.index //可直接在文件管理中删除文件,要不用rm 命令去删除 $ git rm test.html //从版本库中删除 $ git commit -m '删除 test.html文件'
丢弃一个没有被合并过的分支,能够经过强行删除。$ git branch -D <name> //
远程仓库
一、建立SSH Key(须要生成 id_rsa私钥 和 id_rsa.pub公钥 两个文件)
$ ssh-keygen -t rsa -C "youremail@example.com"
二、登陆GitHub,设置"SSH Keys",复制 id_rsa.pub 内容去添加。可容许添加多个SSH。
三、关联远程仓库
$ git remote add origin git@github.com:帐户名
四、将本地的内容推送到远程库分支上
$ git push -u origin 分支名字 //第一次推送分支全部内容
$ git push origin 分支名字 //推送最新修改
五、查看远程仓库信息
$ git remote $ git remote -v //查看更加详细的信息
克隆
$ git clone 须要克隆的仓库地址
建立分支,而且切换过去
$ git checkout -b 新分支的名字 //建立分支而且切入进分支 或者等同于 $ git branch 分支名 //建立分支 $ git checkout 分支名 //切换到分支 $ git branch //查看分支
合并分支
$ git checkout -b dev $ git branch $ git add . $ git commit -m '提交test文件到dev分支' $ git checkout master //切换到主分支 $ git merge dev //将dev分支上的内容合并到master分支上,合并 指定分支 到 当前分支
$ git merge --no-ff -m "merge with no-ff" dev //合并分支时加上--no-ff
参数就能够用普通模式合并,合并后的历史有分支,经过git log查看--no-ff
$ git branch -d dev //删除dev分支
解决冲突:
同一文件修改冲突,须要手动解决冲突后再提交。git status可查看冲突,根据标记可修改冲突部分,修改结束后再从新提交。
$ git pull //拉取远程内容
$ git log --graph //命令能够看到分支合并图。
关联本地仓库和远程仓库
$ git branch --set-upstream-to <branch-name> origin/<branch-name>
建立标签
$ git branch $ git checkout dev $ git tag v1.0 //为当前须要打标签的分支打新标签 $ git tag //查看全部标签 $ git tag -a 指定标签信息 -m "blablabla..." //可指定标签信息
操做标签
$ git push origin <tagname> //能够推送一个本地标签; $ git push origin --tags //能够推送所有未推送过的本地标签; $ git tag -d <tagname> //能够删除一个本地标签; $ git push origin :refs/tags/<tagname> //能够删除一个远程标签。
改变Git颜=色
$ git config --global color.ui true