JavaScript之Ajax(六):Git配置、Git分支、Github的增删改查等操作

1、起步

(1)版本控制概念
记录文件变化,版本控制系统。
版本控制的好处
操作方便:记住简单的命令
易于对比:方便比较文件变化
易于回溯:查找历史操作
不易丢失:恢复
协作方便:分支功能,协同办公
(2)版本控制的分类
本地版本控制:
  使用软件记录版本,提高了工作效率,降低了出错率;单机运行,不支持多人协作开发;版本数据库如果出现问题,历史记录都会丢失;
集中化版本控制:
  解决本地版本控制的缺陷而诞生,C/S模式,在服务器上保存更新记录,在客户端保存最新的记录,因此,可联网运行,多人协作,性能差,体验不好,不支持离线版本提交更新,中心服务器崩溃后,所有人无法正常工作;版本数据库故障后,所有历史记录会丢失,例如SVN分布式版本控制:联网,协同,性能优秀,体验好
  基于C/S方式,服务器保存文件的所有更新版本,客户端存储是的文件的完整备份。联网运行,支持多协作开发;客户端断网后支持离线更新;服务器发生故障后,使用任何一个客户端的备份恢复历史记录。典型代表是Git。
开源的分布式版本控制系统,最先进,最流行,特点是:项目越大,越复杂,越能体现快速、高效。如下特性:
直接记录快照而非差异比较:
SVN,基于差异的版本控制,节约磁盘空间,比较耗时,效率低下。
白龙网认为,GIT记录快照,在原有文件版本的基础上,生成新的备份,为了效率,如果文件没有修改,GIT 不会再重新存储该文件,而是只保留了一个链接指向之前存储的文件。缺点战胜磁盘空间大;版本切换快,因为每个版本有完整的文件快照,切换版本时直接恢复目标版本的快照即可,显著特点是用空间换时间。
近乎所有操作都是在本地操作的
断网后仍然可进行版本管理;联网后,把本地修改的记录同步到云端服务器即可。
(3)区域状态
Git管理的项目,拥有三个区域:工作区、暂存区、Git仓库
Git中的三种状态,已修改、已暂存、已提交
注意:
工作区的文件被修改了,但是还没有放到暂存区,就是已修改状态
如果文件已经修改并放入暂存区,就属于已暂存状态
如果GIT仓库中保存着特定的版本的文件,就属于已提交状态。
(4)GIT工作流程
工作区中修改文件;
把下次提交更改暂存;
提交更新,把暂存区文件以快照的形式存储到GIT仓库。

2、Git基础

(1)Git的安装与配置
①安装GIT
官网下载安装git后,单击右键在弹出的快捷菜单中看到git ui和git bash就说明安装成功了。
②配置信息
配置用户的用户名、邮箱信息。在桌面空白处单击右键,在弹出的快捷菜单中单击git bash选择,在弹出的命令行界面输入以下命令,然后回车,即可:
$ git config --global user.name "bailong"
$ git config --global user.email "914616087@qq.com"
注意:
--global运行一次,永久生效。
上述配置信息位于本地磁盘的配置文件中,C:\Users\用户名\.gitconfig,可以使用文本打开查看。
也可以使用命令的方式查看全局配置信息,或者指定配置信息:
$ git config --list --global
$ git config user.name
$ git config usr.email
③获取帮助信息
$ git help config
$ git config -h
(2)获取GIT仓库的两种方式
以下两种方式都在自己的电脑上得到一个可用的GIT仓库。
A.把尚未进行版本控制的本地目录转换为GIT仓库
  a.在项目的根目录中,通过鼠标右键打开Git Bash;
  b.执行git init命令将当前目录转化为Git仓库。
  Git init命令会创建一个名为.git的隐藏目录,这个.git目录就是当前项目的Git仓库,里面包含了必要的文件,这些文件是Git仓库的必要组成部分。
B.从其它服务器上克隆一个已经存在的GIT仓库
(3)工作区文件的4种工作状态与检测
工作区中的文件有4种工作状态,分为两大类:
①未被Git管理状态
未跟踪,不被Git所管理的文件
②已被Git管理状态
未修改,工作区中文件的内容和Git仓库中文件的内容保持一致;
已修改,工作区中文件的内容和Git仓库中文件的内容不一致;
已暂存,工作区中被修改的文件已被放到暂存区,准备将修改后的文件保存到Git仓库;
Git操作的终极结果,是让工作中的文件都牌未修改状态。如何检查文件的状态?
git status命令,详细显示文件的工作状态;
git status -s 或者--short,以精简的方式显示文件的工作状态,未跟踪的文件前面有两个问号:??
(4)跟踪文件与提交更新
①跟踪文件
git add -A,跟踪所有文件
git add file-name命令,可跟踪一个文件。运行该命令后,通过git status 查看文件状态,那么该文件就会出现在changes to be committed这行的下面;通过git status -s命令查阅,被跟踪的文件前两个问号变成A了,说明已被跟踪,并处于暂存状态。
clear命令可以清空当前页面显示的内容。
②提交文件
git commit -m "新建了一个文件angle.html",提交文件,-m参数可以添加一个说明性信息。
提交成功之后,再次检查文件状态,工作区中的所有文件都牌未修改状态,没有任何文件需要被提交。
(5)修改并提交修改后的文件
①修改文件
git add 有3个功效。
开始跟踪新文件;把已跟踪的、且已修改的文件放到暂存区;把有冲突的文件标记为已解决状态。
修改文件后,分别用git status ,git status -s查看该文件的状态,该文件分别显示为红色的已modified:、M,表示该文件牌已修改状态。
使用git add添加已跟踪、已修改的文件后,再次分别使用git status,git status -s查看文件的状态,文件的前面分别显示绿色的modified、M,表示文件已修改且放入了暂存区。
②提交修改后的文件
git commit -m "修改了JS内容"
(6)撤销对文件的修改
$ git checkout -- angle.html
命令、两个中划线、文件名三者之间要用空格隔开。
撤销对文件的修改,是对工作区中对应文件的修改,还原成Git仓库中所保存的版本。即,使用git仓库中保存的版本覆盖工作区中的版本。操作的结果是,所有修改为丢失,且无法恢复,名危险性比较高,请慎重操作。
(7)操作暂存区中的所有文件
git add .
把新增和修改过的多个文件添加入暂存区。
(8)取消暂存文件
取消指定暂存文件
git reset HEAD angle.html
取消所有暂存文件
git reset HEAD .
加入暂存区,就可以提交代码了。
(9)跳过暂存区直接提交代码
 git commit -a -m "直接提交,不进入暂存"
-a参数,表示提交时不进入暂存区,直接提交到仓库。
Git标准工作流程是工作区->暂存区->Git仓库,可以跳过暂存区,直接把代码提交到GIT仓库,这个时候,GIT的工作流程就简化为工作区->GIT仓库了。
(10)移除文件
从GIT仓库在移除文件在两种方式:
A.从GIT仓库、工作区中同时移除对应的文件
  git rm -f new.html
B.只从GIT仓库中移除指定的文件,但是保留工作区中对应的文件。
  git rm --cached angle.html
(11)忽略文件
 新建一个.gitignore文件,列出需要忽略的文件匹配模式即可:
 ①以#开头的是注释;
 ②以/结尾的是目录;
 ③以/开头的是防止递归,只列出当前目录下的文件;
 ④以!开头的表示取反;
 ⑤可以使用glob模式进行文件和文件夹的匹配,glob是简化了的正则表达式。共有五项:
  A.星号(*)匹配0个或者多个任意字符;
  B.[abc]匹配任何一个列在方括号中的字符,如案例,可匹a,b,c中任意一个字符;
  C.问号?只匹配一个任意字符;
  D.短划线,方括号内使用短划线,表示在这两个字符范围内都可以匹配,如[0-9][a-z]等10个数字、26个小写英文字母。
  E.两个星号**表示匹配任何中间目录,
(12)提交历史与版本回退
①查看提交历史版本
  git log 按照时间先后顺序,显示提交历史,按下q键退出
  git log -2查看最近两条提交历史
  git log -2 --pretty=oneline,让日志信息在一行显示
  $ git log -2 --pretty=format:"%h-%an-%ar-%s",分别显示标识符、作者、提交时间、提示信息,字符串内的属性值用空格隔开
②回退历史版本
 git reset --hard 提交标识符
 如果切换到旧版本,那么使用git log --pretty=oneline命令无法查看所有历史版本,只能查看部分历史版本;
 但是可以使用 git reflog --pretty=oneline查看所有历史版本。
工作中常用的命令有4个:初始化git init、查看状态git status、加入暂存git add、提交仓库git commit -m

3、Github

  开源,开放源代码,代码是公开的,任何人都可以查看修改;闭源,源代码封闭,只有作者对源代码进行修改。
  开源许可协议,为了限制使用者的使用范围和保护作者的权利,常见的五种开源许可协议:
  GPL,具有传染性的开源协议,不允许修改后和衍生代码作为闭源的商业软件销售,例如,linux
  MIT,对商业友好的协议,限制最少,修改后的代码中需要包含原作者的许可信息。jQuery/node.js等文件。
  其它如BSD/APACHE/LGPL。
  开源是一个趋势。
  开源项目托管平台:github(最牛)/gitlab(私有性)/gitee(码云,国产)
  GitHub是个网站,全球最大的开源托管平台,只支持Git作为一个唯一的版本控制工具。Github不等于Git.
注册Github帐号,新建一个空白的仓库,远程仓库访问的两种方式:
(1)本地仓库上传到远程仓库
①https
  零配置,但是每次访问,需要输入Github的帐号和密码;
A.如果本地没有Git,要先搭建好Git,再建立好Git与托管平台的关系
  git init
  git add README.md
  git commit -m "first commit"
  git branch -M main
  git remote add origin https://github.com/bailong2008/project_01.git
  git push -u origin main
B.如果本地已经有git,则直接建立关系上传文件至远程托管平台
  git remote add origin https://github.com/bailong2008/project_01.git
  git branch -M main
  git push -u origin main
  根据弹出窗口的页面提示,在浏览器点击认证即可。
  git push 第二次可以使用该简单命令推送本地代码,若是第一次推送,则必须使用完整的命令git push -u origin main。
②SSH
A.需要进行额外的配置,配置成功后,每次访问仓库时,不需要重复输入Github的帐号和密码,实际开发中常用。
  本地仓库和Github之间免登陆的加密数据传输;
  好处是免登陆,数据加密;
  SSH Key由两部分组成,分别是:
  id_rsa,私有文件,存放于客户端的电脑中即可;
  id_rsa.pub,公钥文件,需要配置到Github中。
B.生成SSH Key的方法
  a.打开Git Bash;
  b.输入如下命令:ssh-keygen -t rsa -b 4096 -C "914616087@qq.com";
  c.连续敲击3次回车,即可在c:\users\用户名\.ssh目录中生成id_rsa和id_rsa.pub两个文件。
C.配置SSH Key
  a.使用记事本打开id_rsa.pub文件,复制里面的内容;
  b.在浏览器登陆Github,点击头像->settings->SSH and GPG Keys ->New SSH keypress;
  c.把id_rsa.pub文件中的内容,粘贴到key对应的文本框中;
  d.在title文本框中任意填写一个名称,标识这个key从何而来。
D.检测配置是否成功
命令:ssh -T git@github.com
看到自己的用户名和successful,说明配置成功了。
新建仓库后,根据提示,做好本地Git仓库的管理(初始化、暂存区、提交),要选择SSH模式连接,第一次使用完整命令连接,后面就可以使用git push简单的命令上传代码。
(2)把远程仓库克隆到本地
  在Bash中输入命令:git clone 远程仓库地址

4、Git分支

分支,多人协作,每个开发者都基于分支进行开发。
master主分支
主分支只有一个,用来保存记录项目已经完成的功能,不允许程序员在主分支上开发;一般基于主分支去创建子分支,让程序去开发。
功能分支
由于程序员不能在主分支上开发,故而产生了功能分支的概念。
功能分支是专门用来开发新功能的分支,它是从主分支上分叉出来的,当新功能分支完毕后,最终需要合并到主分支上。主分支一直存在,功能分支开发完成,生命周期结束。
(1)本地仓库
①查看分支列表
git branch,前面有星号,表示当前处于该分支
②创建新功能分支
git branch 新分支名称,创建新分支后,当前仍然处于主分支。
③切换分支
git checkout 分支名称,可以切换到功能分支。
④快速创建切换分支
git checkout -b message(新创建的分支),这一条命令是一个复合命令,创建并切换到分支;
⑤合并删除分支
git merge reg
先切换到主分支,再把其它分支合并到主分支上
⑥删除分支
git branch -d login,合并分支之后,分支就没有用了,因此,需要删除功能分支,需要注意的是,需要在A分支上删除B分支。
git branch -D reg 如果没有合并,可以使用-D参数强制删除
⑦冲突时的分支合并
如果在两个不同的分支中,对同一个文件进行了不同的修改,Git就没法干净的合并此时,我们需要打开这些包含冲突的文件,然后手动解决冲突。
(2)把本地分支上传到远程仓库
 git push -u origin login
第一次上传,需要带-u参数,第干净上传,直接使用git push即可。-u的参数分别是远程仓库 本地分支。
换而言之,如果元素仓库已经有了本地分支,则可以直接使用git push;若没有,则需要先使用-u参数。
(3)远程仓库
①查看远程仓库中分支列表
git remote show origin
②跟踪分支
从远程仓库中把远程分支下载到本地仓库中。
git checkout regist 把远程仓库分支下载到本地
git checkout -b reg origin/regist 把远程仓库分支下载到本地并重命名为reg
③下载远程分支的最新代码
git pull 本地仓库中,在哪个分支,远程仓库中的分支就下载到本地的哪个分支。
④删除远程仓库中的分支
git push origin --delete regist