项目版本管理工具
分类
1 svn :集中式管理 (依赖服务器)
情况:对项目保密性有严格要求
2 git :去中心化管理(分布式)
git远程仓库:
1 gitee (码云) ---》学这个
2 github
3 gitlab (类似于svn,自己搭建服务)
个人流程
1 新建远程仓库
2 克隆远程仓库到本地(一般情况下仓库名就是项目名)
3 编辑代码
4 add 添加到暂存区
5 commit 提交到本地仓库
6 push 到远程仓库
工具下载
https://registry.npmmirror.com/binary.html?path=git-for-windows/
设置账号和邮箱
git config --global user.name '自定义名字,不要太简单'
git config --global user.email '自定义邮箱'
比如:
git config --global user.name 'laowang'
git config --global user.email 'laowang@qq.com'
克隆
git clone 地址
克隆之后会产生.git目录和.gitignore文件
.git目录就是本地仓库,.gitignore忽略文件
记得编辑 .gitignore 文件:把不需要被git管理的目录名添加上去
语法:
名字1
名字2.。。
添加暂存+提交到本地
添加到暂存: git add .
提交到本地仓库: git commit -m '日志'
注意:commit了几次,就会在.git本地仓库中拥有几个存档
推送本地仓库到远程仓库
推送到远程: git push [origin master]
分支
分为主分支(只能有一个:master)和子分支(可以创建多个),我们规定,整个项目会保存在主分支上,子分支是用于编写我们自己的模块
在版本控制过程中,使用多条线同时推进多个任务。这里面说的多条线,就是多个分支
最终,子分支都会合并到主分支中
切记:一般情况下主分支是经过测试后没有大问题的代码,因为以后协同开发大家共享的是主分支
好处:
1 同时多个分支可以并行开发,互相不耽误,互相不影响,提高开发效率
如果有一个分支功能开发失败,直接删除这个分支就可以了,不会对其他分支产生任何影响。
2 多一个备份
命令
1 查看所有分支 git branch
2 新建分支 git checkout -b 分支名
3 切换分支 git checkout 分支名
4 推送子分支到远程 git push origin 子分支 (确保当前是子分支)
5 分支合并 git merge 目标分支 (把目标分支合并到当前分支)
6 如果分支在合并之前更新了版本,则合并会起冲突,解决冲突,解决完之后要add+commit
冲突效果:
<<<<<<< HEAD
let master=4
=======
let lw=6;
>>>>>>> lw
7 删除子分支: git branch --delete 子分支名 (当前分支要是master)
8 返回终端: :wq回车
拉取
非第一次下载
git pull [origin master]
关于冲突
合并分支或拉取时可能会遇到冲突问题,我们应该解决冲突,然后add+commit
版本回退
查看所有历史存档记录: git log -g 按 q 即可回退到终端
回退版本: git reset --hard 版本号
总结git命令
1 克隆 git clone url
2 添加暂存 git add .
3 提交到本地仓库 git commit -m '日志'
4 推送到远程仓库 git push [origin 分支]
5 拉取 git pull [origin 分支]
6 新建分支 git checkout -b 子分支名
7 切换分支 git checkout 分支名
8 查询所有分支 git branch
9 删除子分支 git branch --delete 子分支名
10 当前分支合并目标分支 git merge 目标分支
11 查看历史版本记录 git log -g
12 回退版本 git reset --hard 版本号
小组开发
组员邀请
适用git协同开发的流程
前端:
1 组长新建仓库、邀请组员
2 组长克隆下来,配置gitignore文件,创建项目结构(webpack,设计到初始化,配置package.json插件目录、html、css、js新建)
3 组件 add +commit+push 到远程仓库
4 组员 克隆 ,新建子分支,在子分支里面敲代码,合并到本地的主分支
5 最终组员一个一个pull+解决冲突+push
6 远程仓库就应该是最终版
后端:
1 组长新建仓库、邀请组员
2 组长克隆下来 ,配置gitignore文件,自己通过命令(express xx)再新建一个后端项目,创建项目结构(路由、app.js、插件:mongoose、multer)
3 把克隆下来的仓库中的.git目录和gitignore文件拷贝到 xx 项目中
4 组件 add +commit+push 到远程仓库
5 ........
ssh协议
https弊端:每次重新上传下载都要重新输入口令(不输入是系统的记忆功能)
ssh(安全外壳协议)
特点:
1 不需要每次都输入密码
2 安全(利用密钥加密)
原理:
为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。
因此:私钥不能外漏,公钥随便外漏
步骤:
0设置账号和邮箱,邮箱是要用来生成密钥的
git config --global user.name ‘laowang’ -------设置账号
git config --global user.email ‘laowang@qq.com’ ------设置邮箱
1 生成公钥和私钥 (引号中要用到刚才申请的邮箱)
ssh-keygen -t rsa -C "laowang@qq.com"
中间步骤全部点击回车,成功后会在/c/Users/xx/下生成.ssh目录,该ssh目录下会产生两个文件:
id_rsa(私钥)和id_rsa.pub(公钥)
2 在码云(gitee)仓库中点击”设置”--”安全设置”--ssh公钥--标题随便写,公钥就是拷贝id_rsa.pub中的全部内容即可
3 使用ssh克隆:注意要选择ssh,测试无需输入口令
4 git clone xxx地址
作业:
1 选组长
2 通过git实现学生管理系统
三个人: user (登录) stu (查询列表) clas (查询列表)
四个人 user (登录) stu (查询列表)、(修改) clas (查询列表)
3 每个人都得负责自己模块前后端:
比如负责user的组员:前端页面、后端接口