一、什么是git
1.1项目的版本管理
在日常项目开发过程中,项目还没开发到一个结点就会队当前项目进行备份,这个备份就是项目的一个版本;当我们继续开发下一个阶段时,再次进行备份,就生成新的版本,也就是说git可以作为多个版本的集合的版本库
在项目版本管理中,我们可以使用手动进行管理,但是以下这些问题:
- 手动维护版本的更新日志,记录每个版本的变化
- 需要手动查找历史版本,当历史版本比较多的时候,查找工作很繁琐
- 当我们需要回退到某个版本时,只能手动通过IDE工具手动打开
1.2团队协同开发
1.3版本管理工具-git
git是一个开源的分布式版本控制系统,用于敏捷高效的处理任何大小项目的版本管理
1.4核心功能:
- 项目的版本管理
- 团队协同开发
二、git下载及安装
2.1下载git(Git (git-scm.com))
安装git的时候只需要选定好需要安装的位置,然后狂点next即可。
2.2如何检查是否安装完毕?
win+r,在框中输入cmd,在命令窗口中输入git --version,能够出现版本号即表示安装完毕
三、git架构
工作空间:存放项目的目录。就是项目的根目录
版本仓库:存放项目历史版本的目录,就是执行这个git init指令之后,在工作空间文件夹生成的.git目录(存放的是历史版本)
暂存区:就是版本库用于临时存储更新的缓存空间
注意:通过add将工作空间的内容放到暂存区中,通过commit将暂存区中的内容放到仓库中,通过checkout将工作空间的内容还原到某一个版本。
四、git的基本使用
4.1创建版本库
4.2查看版本库状态(git status)
4.3将工作空间的修改add到暂存区中(git add XXX以及git add .的区别)
最后通过git commit -m '项目第一次提交' //通过命令可以将暂存区中的内容提交到版本库中,并且使用-m来指出版本说明
使用git log查看历史版本号,以及git login --online查看省略的版本号
由于我们将暂存区的内容提交到版本时,会记录当前版本的提交的用户信息,因此在版本提交之前需要下绑定用户信息
git config --global user.name 'who' //设置用户名
git config --global user.email 'haha@haha.com' //设置邮箱
通过每次增加一个新的文件可以发现,每次git status 的时候都会提示工作区有未提交的文件,我们可以使用git add .或者git add xxx来将我们新的文件增加上去,这时候每次新增的一个文件上传到仓库都会形成一个新的标记
通过git checkout+编号,可以在不同版本号之间进行来回切换
---------------------------------------以上都为本地仓库,都在同学a的电脑中其他人无法git checkout------------------------------------
为了实现协同开发,我们要进行远程仓库
五、远程仓库(远程版本库)
5.1什么是远程仓库?
5.2如何获取远程仓库?
使用gitee作为远程仓库:Gitee - 基于 Git 的代码托管和研发协作平台
在网址上面注册gitee即可,注册这里就不一一列举了
我的Mr.Feng仓库的地址为:https://gitee.com/feng-xiandong/mr.-feng.git
添加gitee用户
六、远程仓库操作
6.1准备工作
1.创建本地工作空间
创建各种文件夹,等文件
2.初始化本地仓库
git init
3.将工作空间搭建的项目结构add到暂存区中
git add .
4.将暂存区文件提交到版本库,生成第一个版本
git commit -m 'xxx'
5.为当前项目创建一个远程仓库,这里我使用之前创建好的远程仓库
https://gitee.com/feng-xiandong/mr.-feng.git
6.2本地仓库管理远程仓库
注:如果遇到t push fmwy master的情况,那是由于在工作空间虽然创建了新的文件,但是没有commit到本地仓库导致的
七、将远程仓库内容pull到本地仓库
八、解决协同开发的冲突问题
场景:两个开发者,一个是a,一个是b。同时执行了pull操作将远程仓库的内容pull到本地,此时a和b开发者的工作空间都有文件hello,b在hello文件中新增内容"bbb",而a在hello文件中新增了内容“aaa”,开发者b先进行提交。这时候开发者a又进行提交,这时候开发者a会失败。失败原因是,开发者a在pull之后,push之前有别的开发者提交过。这是开发者a如何操作?
这时候先执行pull将开发者b修改的内容拉取到开发者a的本地,但此时hello文件会变成将两个文件合在一起的文件,这时候对文件进行修改,选择是合并,还是删除开发者a或者开发者b的代码
这时候再次进行push提交
七、分支管理
什么是分支?
分支就是版本库中记录版本的位置(支线),不同分支之间不受影响,使用分支可以对项目起到保护作用。分支特性:当我们创建一个新的版本库的时候只有一个主分支,这个分支就是master。当我们把本地仓库push到远程仓库是就是git push 别名 master,就是本地仓库push到远程仓库的主分支(master分支)。
每个分支可以单独管理(常规分支,保护分支,只读分支)
分支是可以合并的
分支就是一条时间线,每次提交就在这条时间线上形成一个版本,
感谢大家的观看,部分图片截取而来,如有侵权请告知删除,交流qq:3329276483