·1.1 git的概述
Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
1.2 git的服务器地址
- 国内git服务器地址:https://gitee.com/
- 国外git服务器地址:https://github.com/
- 准备码云gitee账号,我的是gww.vip@qq.com和gww.dev@qq.com
1.3 Git原理图
原理:我在idea写代码,idea就是工作区,提交到远程仓库前,先要提交到本地仓库。在本地仓库这边有两步,第一步先把代码add到本地仓库的暂存区(storage),第二步再commit到本地仓库主分支(也就是master),最后才可以把本地仓库的代码提交远程仓库里,总共就这么三步,当然实际工作中,我们在准备push的时候要先拉取一下代码,看与自己代码有没有冲突的地方(两个人在同一方法里写了不同代码),有的要和对方协商修改合并,最后再提交。
2 实战
- 这里使用IDEA内置的git功能来讲解使用
- 在学习前先安装 git管理工具到本地
- git工具默认安装的路径如下图,安装完后把bin目录添加path变量中,在终端可以查看git工具的版本号
2.1 工作时开发的注意事项
- 代码需要备份【主要是防止代码丢失】
- 每个大版本都需要备份分支持【主要是1.0出现问题时,不能在2.0的版本上修复】
- 每天上午上班,要从服务器下载最新的代码到本地
- 每天下午下班前,把自己的代码提交到服务器
- 团队开发时需要解决文件冲突问题
2.2 commit,push,branches,master讲解
*****掌握每一个使用步骤的原理
Step1——配置idea
Step2——在码云上创建空白的Java仓库,用于存储工作中开发的代码备份
step3——上传本地空项目到码云上,让仓库拥有一个项目结构
先在idea中创建一个新的javaweb项目
先随便在里面建个包,写个java文件
在码云上创建的仓库名例如mayaole/gyfdemo01点一下,看到文件那点一下,点上传文件,可以找到本地项目里的文件拖到网页位置,这个初始的项目就上传到远程仓库了
step4——在IDEA中从码云下载项目,下载的地址就是在git中克隆的位置
找到VCS,选择git,表示从服务器下载代码
然后把git的仓库地址复制,如图,然后点clone复制份到本机桌面的某个文件夹下
之前在本地建的新项目就不再用了,可以先删掉
克隆后,文件夹里打开如下
新创建一个文件时,把有下面的弹窗口,选择Yes, 它意思是如果不小心选中了No,仍然可以通过另一种方式添加到本地仓库缓存,如下,第二张是我说的另一种方式
Step6——commit提交代码并写上备注这里是从暂存区存到本地仓库主干
Step7——把代码提交(push)到服务器
在推的过程中,会弹出输入git服务器的用户名和密码,输入即可
推送成功后,在码云服务器会看到更新的功能
Step9————写点功能,如UserService,然后提交发布V1.0.0,然后添加分支
选择创建分支
Step10——切换回主干
current表示本地当前项目所在分支,新版本事一个书签的标志
Step11——在主杆上进行2.0的开发,添加邮件发送功能
Step12——切换回1.0分枝,进行Bug修复,然后提交(这是为了说明两个分支可以分开也业务,互不冲突)
Step13——推1.0代码到服务器
Step14——不要忘记把主杆也推上服务器,先切换回主杆,再push
Step15——将主分支master与1.0合并分支(合并完后,当前项目还是master主分支,只不过变成合并完的master主分支)
合并后,就把master推上服务器
用当前mater创建2.0分枝,那么master就是3.0分枝了,然后把2.0推到服务器
2.3提交历史记录查看
2.4对比不同版本的区别
2.5回退到上一个版本
- 比如你误删了一段代码(方法),但又提交了,可以使用下面的get来进行回退
2.6 团队开发,解决冲突
Step1——准备两个马云账号
不,说错了,是码云账号,为什么两,为了模拟两个开发者,然后电脑里再准备一台虚拟机,上面也装idea,码云远程项目里面添加邀请第二个账号后,第二个同意完后也把项目chone进idea开发,写同一个业务位置,制造不同
Step2——添加其它开发者到当前项目组
Step3:
- 在虚拟机中给某个类添加一些代码,比如添加个方法,然后push到服务器
- 在push服务器中,可能失败,因为你没有把另一个开发者的帐号添加到项目组中
Step4:
- 在本机中也在同一个文件中修改或者添加代码
- 然后push到服务器会失败,因为代码冲突了
合并前 |
合并后,然后再次push即可以了 注意:A开发者更新后,另一个开发者可以重新pull更新代码到本地 |
教程会有不足,还请看的指出,后面还会修改,内容会有一定时效性,随着时间推移,会有新的功能样式出现,或更简单的操作界面。程序员就是不停的学。