练习 - 创建“学生管理系统”
本地开发
分支开发
git冲突
两地开发
1.1 在学生管理系统中进行第一次提交- 开发添加学生
功能
- 创建student目录
- 进入student目录
- 执行
git init
,初始化本地版本库
- 配置student仓库的用户名和邮箱
- 创建index.html文件,并且在文件中开发
添加学生
功能
- 将index.html添加暂存区
- 将index.html提交到本地版本库
1.2 开发查询学生
功能
- 在index.html中增加
查询学生功能
- 直接使用
git commit -am "xx"
,将文件提交到本地版本库
1.3 开发聊天功能
这个小节讲版本回退
-
开发聊天功能
-
撤销聊天功能
先使用git log命令查看提交记录
再使用git reset --hard commit
-
重新上线聊天功能
先使用git reflog查看所有的记录(包括提交的、reset掉的…)
再使用git reset --hard commit
2. git分支
几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着可以把我们的工作从开发主线上分离开来,以免影响开发主线。 在很多版本控制系统中,这是一个略微低效的过程(常常需要完全创建一个源代码目录的副本,对于大项目来说,这个过程会耗费很多时间)。
Git 处理分支的方式可谓是难以置信的轻量,创建新分支几乎可以在瞬间完成,并且在不同分支之间的切换操作也是十分便捷。 与其它版本控制系统不同,Git 鼓励在工作流程中频繁地使用分支与合并,哪怕一天之内进行许多次。
2.1 创建dev分支,开发举手功能
,合并到master分支
- 创建dev分支
- 切换到dev分支
-
开发举手功能
-
添加到暂存区
-
提交到本地版本库
-
切换到master分支
-
在master分支上合并dev分支的代码
-
删除dev分支
2.2 master分支和dev并行开发
在master分支开发画图功能,在dev分支开发作业功能
- 在开发画图功能之前,先创建出dev分支
- 在master分支开发画图功能,并提交到本地版本库
- 切换到dev分支
- 在dev分支开发作业功能,并提交本地版本库
- 切换到master分支,合并dev
- 合并结果
2.3 git分支相关命令总结
-
创建分支
git branch dev
-
创建并切换分支
git checkout -b dev
-
查看分支
git branch
-
切换分支
git checkout dev
-
合并分支
git merge dev
-
删除分支
git branch -d dev
3 使用码云
3.1 配置SSH无密码访问远程仓库
-
创建SSH公私钥连接
https://gitee.com/help/articles/4181#article-header0
-
创建SSH公私钥对
ssh-keygen -t rsa -C "luxilejn@163.com"
-
拷贝SSH公钥到码云
拷贝~/.ssh/id_rsa.pub文件内容到码云
3.2 在码云上创建非空student仓库
-
创建非空的student仓库
-
为本地student仓库添加远程student仓库
-
把本地的student仓库推送到远程仓库,推送被拒绝了
为什么会被拒绝了?
因为远程初始化了一次提交记录,本地并没有这次提交,所以应该先把远程的初始化提交合并到本地;
- 先执行git fetch origin master
- 再执行git merge origin/master,又拒绝了
- 这次拒绝原因:因为远程的提交记录和本地提交记录没有任何关系
- 解决方式:git merge origin/master --allow-unrelated-histories
3.3 模拟两地开发
- 先检出远程的student仓库到company目录
-
在公司开发签到功能,推送到远程版本库
- 先设置用户名和邮箱
- 开发签到功能,提交到本地版本库
- 推送到远程仓库
-
回家开发签退功能,推送到远程版本库
- 在开发前,先拉取最新代码
- 开发签退功能,并推送到远程仓库
3.4 小插曲
在公司开发了签到功能的部分代码,提交到本地版本库,但是没有推送到远程仓库;
回到家之后,继续开发签到功能的其它代码,并将结果推送到远程;
第二天回到公司,拉取在家开发的代码,继续开发剩余功能;
- 在公司先更新代码
- 继续开发签到功能,提交本地仓库,但是没有推送远程仓库
-
回到家,发现公司开发的代码忘记推送,自己开发了其它的签到功能,开发完成之后,推送到远程仓库
-
修改SignIn.java
-
执行
git add .
添加到暂存区 -
执行
git commit -m ""
提交到本地版本库 -
执行
git push origin master
推送到远程版本库
-
-
回到公司,先拉取家里的的代码,再继续开发
-
先执行
git pull origin master
这个
git pull
是由git fetch + git merge
组成的git fetch origin master
git merge origin/master
结果合并出现冲突,需要先手动解决冲突,再提交代码
-
解决冲突
1、解决冲突
2、使用
git add .
告诉git已经解决冲突3、使用
git commit -m ""
完成本地代码合并4、使用
git push origin master
推送到远程仓库
-
3.5 解决冲突
-
add .`添加到暂存区
-
执行
git commit -m ""
提交到本地版本库 -
执行
git push origin master
推送到远程版本库 -
回到公司,先拉取家里的的代码,再继续开发
-
先执行
git pull origin master
这个
git pull
是由git fetch + git merge
组成的git fetch origin master
git merge origin/master
结果合并出现冲突,需要先手动解决冲突,再提交代码
-
解决冲突
1、解决冲突
2、使用
git add .
告诉git已经解决冲突3、使用
git commit -m ""
完成本地代码合并4、使用
git push origin master
推送到远程仓库
-