day01 git
1.第三阶段课程简介
-
课程介绍
三阶段:服务端开发 课程时长:20天
-
学习路线
-
==git==
-
==ECMAScript6.0==
-
==nodejs==
-
Express
-
mysql
-
==ajax+promise== 项目
-
websocket:双向数据通信
-
webpack:打包
-
2.git介绍
2.1 git能做什么
-
作用:团队开发中使用,不是写代码的软件,是一个管理代码的工具
-
好处:优雅,快速,高效管理版本代码
2.2 主要作用(代码管理工具,管理代码版本)
-
版本的概念
(1)初指一种书籍经过多次传抄、刻印或以其他方式而形成的各种不同本子。随着时代的发展,版本也开始应用于影视、软件等事物上,形容事物相同但介绍方法等不同的两个事物。
(2)软件版本编号制定是指为软件设置版本号码的方式。通常,版本号码会以数字订定。
(3)软件名称后面经常有一些英文和数字,如:CTS3.3.5、QQ 2021 Beta,这些都是软件的版本标志,通过它,我们可以对软件的类型有所了解。
各版本的时间轴演变,每一次版本的改变,都会有功能的改变
-
版本管理
-
早期管理方式
问题:传统管理方式造成了本地电脑上有很多相同的文件,不容易维护,造成了非常混乱的局面。
-
版本控制软件
-
常见的版本控制软件:git svn
-
好处:使用版本控制以后,只需在本地保存一份,各个版本由版本控制软件来进行管理
-
-
3.git的简介
3.1 git定义
Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。
3.2 git特点
-
管理版本代码
-
项目越大,越复杂,git优势越明显
3.3 git三个区域
-
工作区
写代码
-
暂存区
某一个功能完成了,就可以存储在暂存区
-
仓库区
下班,页面完成了,功能完成了,代码提交到仓库
4.git的使用
4.1 下载安装
-
下载网址
-
Git :官网,国外,速度很慢
-
-
安装
-
双击软件-->一直下一步(不要有中文)
-
检查是否安装成功
-
在任意位置右击出现下图
-
-
-
配置用户信息(下载好以后配置一次即可,识别用户,全局)
-
右击-- Git Bash Here
-
命令
git config --global user.name 用户名 git config --global user.email 用户邮箱 例子: git config --global user.name ujiuye git config --global user.email 4324324234@qq.com
-
查看是否配置用户信息成功
(命令查询): git config --list (文件夹中查看): c -- > 用户 --- > ibm(电脑名称)--- 有一个.gitconfig文件
-
4.2 步骤
-
初始化项目
-
创建项目根文件夹(初始化一次就可以)
-
当前项目文件中右击 -- Git Bash Here
-
命令:git init ---- >在当前文件夹中生成一个.git的文件
-
注意:显示隐藏文件
-
-
编写代码(工作区,新建一个html文件)
-
把工作区的内容添加到暂存区
-
命令:git add 文件名
-
-
把暂存区的内容添加到仓库区(提交)
-
命令:git commit -m 提交说明
-
4.3 git 命令
-
init : 初始化
git init
-
add :把文件存储到暂存区
git add 文件名 git add . : .代表文件夹下所有的文件和文件夹
-
commit :将暂存区数据提交到仓库,并且生成一个版本号
git commit -m 提交说明
-
status:查看仓库中文件的状态(了解)
git status
-
log : 打印版本信息
git log : 以完整的形式输出 git log --oneline : 以简短的形式输出
-
reset:版本回退(改需求,新版本有问题)
git reset --hard 版本号(回退到的版本号)
-
reflog:显示所有的版本信息
git reflog : 以完整的形式输出 git reflog --oneline : 以简短的形式输出
4.4 文件忽略
-
对于不需要进行版本管理的文件,可以使用文件忽略(一些公共库代码,node_modules)
-
文件忽略步骤
-
创建一个配置文件.gitignore(需要和.git同级)
-
在文件中配置忽略信息
-
/js/ : 忽略整个文件夹
-
*.txt:忽略所有.txt文件
-
/js/a.txt :忽略某个具体的文件
-
-
4.5 分支
4.5.1 分支介绍
-
介绍:
git版本控制系统支持分支操作。使用分支意味着可以从开发主线上分离开来,然后在不影响主线的同时继续工作。默认只有一个分支为master主分支。
-
什么是主分支?
在初始化本地 Git 仓库的时候,Git 默认已经帮我们创建了一个名字叫做 master 的分支。通常我们把这个master 分支叫做主分支
-
主分支的问题:
在进行多人协作开发的时候,为了防止互相干扰,提高协同开发的体验和效率,建议每个开发者都基于分支进行项目功能的开发
-
分支解决的问题:
用来保存和记录整个项目已完成的功能代码。但是不允许程序员直接在master 分支上修改代码,这样做的风险太高,容易导致整个项目崩溃
协议上规定:不应该在master主分支上维护代码 。应该在主分支的基础上,创建分支然后维护代码
-
补充说明:
在分支上的提交操作和主分支的提交操作命令一样。
4.5.2 分支相关命令
-
branch:查看当前git管理的项目中有哪些分支
git branch
注意:一定要初始化项目,提交一次以后就可以看到主分支
-
branch:创建分支
git branch 分支名 git branch deva dev---开发软件
-
checkout:切换分支
git checkout 分支名
切换到对应的分支上进行开发维护,第一次从主分支master切换到某一个分支的时候,会将主分支的提交记录复制到对应的分支上
-
merge:合并分支
git merge 分支名
注意:一般在主分支上进行合并
4.5.3 冲突解决
-
什么时候会冲突:
两个不同的分支,对同一个文件进行不同的修改,git合并的是好,无法判断合并
-
手动解决
-
两份都要,<<end 删除
-
只要一份,衡量删那份
-
在master上再提交一次
-
5.远程仓库
-
介绍
Git 命令都是在本地执行,如果想通过 Git 分享你的代码或者与其他开发人员合作。 就需要将文件放到一台其他开发人员能够连接的服务器上。这就是远程仓库的作用。
目的:把本地的仓库文件上传到远程仓库。
-
远程仓库分类:
-
github:github是一个基于git的代码托管平台,在国外,速度比较慢,在大陆的使用很受影响
-
gitee:github是一个基于git的代码托管平台,在国内较多(码云)
-
公司自己部署:了解即可,不是前端人员部署的,使用步骤和命令都一样
-
5.1 操作流程
-
注册账号
-
填写注册信息
-
创建仓库
5.2 git 命令
-
clone :克隆(用一次,项目第一次下载的时候使用)
git clone 远程仓库地址
-
pull:拉取(下载远程仓库中的更新文件)
git pull 远程仓库地址
-
push:提交(将本地文件提交到远程仓库)
git push 远程仓库地址 master git push 别名 master git push -u 别名 master git push
-
remote : 起别名 (给远程仓库地址起别名)
git remote add 别名 远程仓库地址
-
remote -v : 查看本地仓库别名是否跟远程仓库进行关联
git remote -v
5.3 新员工进公司操作流程
-
下载git,配置全局用户信息 (可能不需要)
-
下载公司项目代码(git clone)
-
写代码,改代码(add commit)
-
将代码提交到远程仓库
-
早上--pull 下班:push
6.ssh访问
-
简介:传统方式访问远程仓库的问题:传统方式本地和远程传输,需重复输入gitee的账号和密码,较为繁琐。
-
SSH好处:免登录身份认证、数据加密传输。而SSH实现本地仓库和gitee之间免登录的加密数据传输。更重要的原因是团队协同开发更加方便。
-
SSH组成: (1)id_rsa 私钥文件,存放于开发者的电脑中 (2)id_rsa.pub 公钥文件 。
-
生成密钥步骤:1、打开Git Bash 2、执行相关命令 3、连续敲击3 次回车
相关命令
ssh-keygen
ssh-keygen -t rsa -b 4096 -C "" ssh-keygen -t rsa -b 4096 -C "1583222344@qq.com"
-
查看生成的密钥
-
将公钥添加到远程仓库中
7.git和svn的区别
SVN:SVN是一个开放源代码的集中式版本控制系统,用于多个人共同开发同一个项目,实现共享资源。集中式版本控制系统:版本库是集中存放在中央服务器,开发者需要先从中央服务器获取最新的版本文件,然后开始干活,最后再把自己修改的文件推送到中央服务器。
Git:Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。分布式版本控制系统:没有“中央服务器”,每个人的电脑上都是一个完整的版本库,联网开发不是必须的。但两两开发者之间肯定不会以qq或U盘形式传送,也有一台充当“中央服务器”的电脑(gitee和github)。此服务器的作用仅是用来方便“交换”各开发之间的修改。