一:Git简介
git是项目版本管理与多人协同开发一个工具
1.1:项目版本管理
1.2:多人协同开发
- 一个团队开发一个项目
二:Git安装
2.1:下载
2.2:安装
- 指定一个安装目录,然后一路Next即可
2.3:全局配置
- 安装后,打开cmd,自报家门
- 如下信息会在提交代码时要使用,记录在你的每次提交中。以后才知道哪次提交是谁做的。
git config --global user.name "Your Name" #用户名
git config --global user.email "email@example.com" #邮箱
# 查看信息
git config -l
三:Git架构
- 版本库: 工作区中有一个隐藏目录
.git
,这个目录不属于工作区,而是git的版本库,是git管理的所有内容 - 暂存区:版本库中包含一个临时区域,保存下一步要提交的文件。
- 分支:版本库中包含若干分支,提交的文件存储在分支中。
四:Git基本操作
- 第一步:创建工作区
- 第二步:初始化git,生成本地仓库和暂存区
- 第三步:代码编写。创建两个文件
- 第四步:将文件提交到暂存区,暂时存储
- 第五步:将暂存区的代码提交到本地仓库,生成一个git版本
看提交日志
- git log
版本的切换
git checkout 版本号
五:Git远程仓库
5.1:远程仓库选择
-
选择一:github(https://github.com/) pass
-
选择二:码云(https://gitee.com/) 【优选】
-
选择三:使用GitLab搭建自己的远程仓库,企业开发首选
5.2:在码云上创建远程仓库
5.3:远程仓库操作
-
push本地仓库代码到远程仓库
-
git push https://gitee.com/sunny26/xiaomi-parent.git master:master
第一个master就是本地仓库的master分支
第二个master是远程仓库的master分支
5.3.1:关联远程仓库
5.3.2 :推送文件到远程仓库
5.3.3:克隆远程仓库
-
将远程仓库的代码clone到本地
-
git clone https://gitee.com/sunny26/xiaomi-parent.git -b master
-
-b 表示指定远程仓库的某个分支进行克隆
5.3.4:拉取远程仓库代码
-
git pull origin【url】master:master
-
第一个master是远程仓库的master分支
-
第二个master是本地仓库的分支
window缓存gitee的账户(防止第一次push时,将账号和密码输入错误。将这里凭据删除即可再重新输入一遍)
5.3.5:多人协作代码冲突
演示冲突:
-
jack前进一步
-
rose也前进一步
-
jack push 代码到远程仓库
-
rose push 代码到远程仓库
-
rose提示你需要先pull
-
rose pull代码 报错【reject】
涉及到三方合并【jack本地、rose本地、jack和rose前一个共同的版本】
三方合并的思路
-
第一步:git fetch origin ======>将远程的.git信息下载到本地
-
第二步:git merge origin/master ==>将远程的master手动合并到本地的master
-
第三步:合并报错,【conflit 合并冲突】
-
第四步:人工解决【协商最终的结果】
-
第五步:将合并的结果push到远程仓库
-
第六步:另一方将解决的结果pull下来
-
到此 冲突解决完毕!!!!!
六:Git分支
6.1:为什么要有分支
- 方便在项目开发中记录项目每一次提交的版本。
6.2:查看分支
-
git branch 查看本地的分支
-
git branch -r 查看远程的分支
6.3:基于master创建分支(bankpay)
创建分支
- git branch 分支名称
6.4:分支切换命令
- git checkout 分支名称
6.5:将bankpay分支推到远程协同开发
git push origin bankpay:bankpay
-
第一个bankpay是本地仓库分支
-
第二个bankpay是远程仓库的分支,如果远程仓库没有该分支,会自动创建改分支
6.6:基于master创建分支(alipay)
6.7:将aplipay分支推到远程协同开发
6.8:aplipay分支合并到master
第一步:切换到master分支
- git checkout master
第二步:合并(alipay->master)
- 在本地完成合并
第三步:push到远程仓库master分支
- git push origin master:master
6.8.1 快速合并
- 如果分支A当前的修改,是完全基于分支B的修改而来,则B分支合并A分支,就是移动指针即可。
合并前分支状态
快速合并效果(master 合并 dev)
6.8.2 三方合并
- 在不具备快速合并的条件下,会采用三方合并。
合并前,分支状态
三方合并,将2和3的更改都累加在1上,形成新的提交点
- 三方合并,它是把两个分支的最新快照(2 和 3)以及二者最近的共同祖先(1)进行三方合并,合并的结果是生成一个新的快照(并提交)
七:idea中使用Git
7.1 关联Git
- File > Settings 关联过程是自动的
7.2 创建本地仓库
- 新建项目后,在项目目录下创建为git仓库
- 注意: 要在建仓库前,设置忽略文件 “.gitignore”
- 作用:被忽略的文件会被版本记录忽略,版本中不包含它们。
- 范围:不需要和其他开发共享的文件,具体见下图。