为什么要使用版本控制工具?【了解】
在公司中开发项目时通常是多人协同开发,经常会出现代码文件相互被覆盖、代码不同步、同一个文件在电脑中存在多份等情况,如果使用版本控制工具则上面这些问题都会被解决。
(1)初指一种书籍经过多次传抄而形成的各种不同本子。随着时代的发展,版本也开始应用于软件上。
(2)软件版本编号制定是指为软件设置版本号码的方式。通常,版本号码会以数字订定。如:CTS3.3.5、QQ 2021 Beta
各版本的时间轴演变,每一次版本的改变,都会有功能的改变。
问题:传统管理方式造成了本地电脑上有很多相同的文件,不容易维护,造成了非常混乱的局面。
介绍:
好处:使用版本控制以后,只需在本地保存一份,各个版本由版本控制软件来进行管理,常见的版本控制软件有git和svn。
Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以高效地管理项目。
项目越大越复杂,协同开发者越多,越能体现出Git 的高性能和高可用性!并且git有3个区域
工作区:写代码的区域
暂存区:如果某一个功能模块开发完成后可以将代码提交到暂存区中
仓库区:当我们把整个功能模块开发完成后将暂存区中的代码提交到本地仓库中,这样可以产生一个版本号
一路回车
描述:安装完Git 之后,需要设置自己的用户名和邮件地址。进行管理的时候,Git 需要使用这些基本信息,来记录是谁对项目进行了操作
配置命令:
git config --global user.name xxx git config --global user.email xxx git config --list // 查看git配置信息
注意:同一台电脑上面的git config命令只需要执行一次,执行完成的配置信息保存在:C:\Users\当前用户名.gitconfig文件中。
(1)使用git初始化项目
(2) 编写代码
(3) 把工作区添加到暂存区
(4) 把暂存区添加到仓库区
git init:
使用git初始化项目,注意:同一个项目只需要初始化一次,初始化成功后会在当前项目目录中自动创建一个.git的隐藏目录,这个隐藏目录中的内容不需要我们手动修改
git add .或文件名及目录名称
将工作区中的代码提交到暂存区
git commit -m 备注信息
将暂存区中的代码提交到本地仓库
git status
查看git 状态
git log
查看git完整的日志[版本]信息
git log --oneline
查看git简短的日志[版本]信息
git reset --hard 版本号
git版本回退
git reflog
查看所有git日志[版本]信息,注意:当我们使用了git reset --hard进行版本切换后要使用git reflog来查看所有git日志信息。
对于无需使用git进行管理的文件或文件夹使用此文件进行配置
第一步:在项目根目录中新建.gitignore文件;
第二步:在.gitignore文件中配置要忽略的文件或目录的规则;
(1) /git-demo1/ 过滤整个文件夹
(2) *.txt 过滤所有.txt文件
(3) /git-demo1/a.html 过滤某个具体文件
git版本控制系统支持分支操作。可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
在初始化本地 Git 仓库的时候,Git 默认已经帮我们创建了一个名字叫做 master 的分支。我们把这个master 分支叫做主分支,主分支上的代码是功能好用、但不一定完整的代码。
在进行多人协作开发的时候,为了防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行项目功能的开发
用来保存和记录整个项目已完成的功能代码。但是不允许程序员直接在master 分支上修改代码,这样做的风险太高,容易导致整个项目崩溃
git branch
查看git分支信息
git branch 分支名
创建分支
git checkout 分支名
切换分支
git merge 分支名
合并分支
注意:在合并分支时容易发生文件冲突。
什么是文件冲突?【重点】
当多个开发人员修改了同一个文件中的同一段代码时在合并到主分支时就发生文件冲突,文件冲突如下:
怎样解决文件冲突?【重点】
开发者自行手动解决文件冲突,也就是说要让开发者自己手动查看代码,然后手动处理发生冲突的代码,解决完文件冲突后再使用git add .及git commit -m 这些命令。
介绍:如果在两个不同的分支中,对同一个文件进行了不同的修改,Git 就没法合并它们。 我们需要打开这些包含冲突的文件然后手动解决冲突。
Git 命令都是在本地执行,如果想通过 Git 分享你的代码或者与其他开发人员合作。 就需要将文件放到一台其他开发人员能够连接的服务器上。这就是远程仓库的作用。
(1)github:github是一个基于git的代码托管平台,在国外,速度比较慢,在大陆的使用很受影响
(2)gitee:gitee是一个基于git的代码托管平台,国内使用频率较多
(3)公司自己部署,了解即可,强调不是前端人员部署的,使用步骤和命令都一样
注册
创建远程仓库
本地文件推送到远程仓库
克隆和同步远程仓库
remote add 本地别名 远程仓库地址
给远程仓库地址起个别名
git remote -v
查看本地别名信息
git push [-u] 远程仓库地址/别名 本地分支名称
将本地仓库代码推送到远程仓库
注意:如果使用了git push -u参数后则下次可以直接使用git push命令来将本地仓库中的代码推送到远程仓库,而不需要带远程仓库地址及本地分支名称。
注意:同一个远程仓库中只能放一个项目的代码,而不能将不同项目的代码推送到同一个远程仓库中。
git clone 远程仓库地址
克隆远程仓库地址中的代码到本地电脑中
注意:同一个远程仓库中需要克隆一次。
git pull
拉取远程仓库中的代码到本地电脑中
注意:拉取在同一个项目中可以多次使用
简介:传统方式访问远程仓库的问题:传统方式本地和远程传输,需重复输入gitee的账号和密码,较为繁琐。
SSH好处:免登录身份认证、数据加密传输。而SSH实现本地仓库和gitee之间免登录的加密数据传输。更重要的原因是团队协同开发更加方便。
SSH组成: (1)id_rsa 私钥文件,存放于开发者的电脑中 (2)id_rsa.pub 公钥文件 。
生成密钥步骤:1、打开Git Bash 2、执行相关命令 3、连续敲击3 次回车( 最后一次要输入yes )
ssh-keygen
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh
ssh -T git@gitee.com
SVN:SVN是一个开放源代码的集中式版本控制系统,用于多个人共同开发同一个项目,实现共享资源。集中式版本控制系统:版本库是集中存放在中央服务器,开发者需要先从中央服务器获取最新的版本文件,然后开始干活,最后再把自己修改的文件推送到中央服务器。
Git:Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。分布式版本控制系统:没有“中央服务器”,每个人的电脑上都是一个完整的版本库,联网开发不是必须的。但两两开发者之间肯定不会以qq或U盘形式传送,也有一台充当“中央服务器”的电脑(gitee和github)。此服务器的作用仅是用来方便“交换”各开发之间的修改。