文章目录
- 概述
- 相关概念
- 下载和安装
- 常见命令
- 远程仓库介绍与码云注册创建
- 介绍
- 码云注册
- 远程仓库操作
- 关联
- 拉取
- 推送
- 克隆
- 在idea中使用git
- 集成
- add和commit
- 差异化比较&查看提交记录
- 版本回退及撤销
- 与远程仓库关联 push
- 从远程仓库上拉取,克隆项目到本地
- 创建分支
- 切换分支
- 将除了master分支推送到gitee上
- 将其他分支代码合并到master分支上并上传提交
- 处理版本冲突
概述
Git是目前世界上最先进的分布式文件版本控制系统
版本控制:所谓的版本控制就是将一组文件的改动记录下来,形成版本历史,以便需要恢复
作用:
1、代码共享:每位开发者可以使用Git将自己的代码上传到云服务器上,同时使用Git还可以将其他人上传的代码下载到自己的电脑上,这样实现了代码共享
2、回溯版本:Git会保存每次上传的痕迹,每上传一次就做一次备份,每次备份就相当于一个版本,任意时间可以通过Git查询曾经提交过的每一个版本对应的内容。
3、追踪信息:Git提供了强制记录日志的功能,每次上传信息都要求写日志,可以记录本次上传的相关信息
相关概念
- 工作区:就是平时存放代码的地方
- 一个文件夹通过git init设置成一个git可以管理的文件夹,这个文件夹中的内容(除.git文件夹)就是工作区
- 版本库:就是安全存放数据的位置,这里面有提交到所有版本的数据
- 其中HEAD指向最新放入仓库的版本
- 工作区的隐藏目录.git,它不算工作区,而是版本库
- 暂存区:index,用来暂时存放工作区中修改的内容。在加入到本地仓库前,会先放置在暂存区
- 一般存放在.git/index文件中
- HEAD:指向最新放入仓库的版本
- master:是我们的主分支,是本地仓库的一部分
- 当我们git init后,并不会立刻产生分支,而是我们添加了一个文件,并git add,git commit后这时我们查看分支情况便可以看到master分支了
- objects:是git对象库,是用来存储各种创建的对象和内容
- 远程仓库:托管代码的服务器,常用github,gitee,gitlab
下载和安装
下载地址:https://git-scm.com/download
安装过程非常简单,直接next
点击Finish完成安装,验证安装,找一个桌面空白处,右键出现下列窗口
常见命令
创建一个文件夹,右键然后点击Git Bash here
- 初始化工作区:git init
- 查看当前工作区的代码文件状态:git status
- 红色代表未放到暂存区
- 绿色代表放到暂存区
- 将工作区的代码文件提交到暂存区:git add 文件名
- 将暂存区的代码文件提交到本地仓库:git commit -m ‘提交信息’
- 差异化比较
- 工作区和暂存区:git diff 文件名
- 暂存区和本地仓库:git diff --cached 文件名
- 工作区和本地仓库:git diff HEAD 文件名
- 查看提交日志:git log/git reflog
- git reflog:特点是查看的提交版本号比较短
- 版本回退:回退哪个版本
- 回退到上一个版本(提交位置):git reset --hard HEAD^
- 回退到指定版本:git reset --hard 版本号
- 撤销工作区:git checkout 文件名
- 将代码从暂存区撤销到工作区:git reset HEAD 文件名
- 分支:
- 创建分支:git branch 分支名
- 查看分支:git branch
- 切换分支:git checkout 分支名
- 合并分支:git merge 分支名
- 删除分支:git branch -d 分支名
注:合并分支
- 如果将其他分支合并到master主分支上,那么需要切换到master上
- 如果将dev分支合并到主分支master上,那么必须在dev分支上进行commit提交到本地仓库
远程仓库介绍与码云注册创建
介绍
远程仓库是公网或外网中的一个仓库,主要用于存储个人或团队的提交记录与提交日志,团队开发也是靠远程仓库实现的。大家把东西提交到同一个远程仓库里面就ok了,这样每个人都可以获取到团队内开发的所有内容了。
常用的远程仓库:
- github:https://github.com
- 主站在国外,速度一般
- gitee:https://gitee.com
- 码云,速度快,是开源中国推出的基于Git的代码托管平台
- gitlab:https://about.gitlab.com
- 可以搭建一个web服务器,私服安全
- 可以搭建一个web服务器,私服安全
码云注册
访问地址:https://gitee.com
- 没有账号的按要求注意并登录
- 创建仓库
- 填写对应信息
- 复制远程仓库的地址
远程仓库操作
关联
在推送到码云仓库前,需要先建立本地仓库与远程仓库的关系
命令:git remote add origin 远程仓库地址
拉取
从码云仓库拉取到本地仓库,在推送代码前必须先拉取代码,否则无法推送本地仓库代码到码云仓库
命令:git pull origin master --allow-unrelated-historities
首次拉取需要添加:–allow-unrelated-histories
后续拉取:git pull
推送
本地仓库到码云仓库
首次推送:git push -u origin master
后续推送:git push
克隆
如果我们新加入一个团队,这个时候就需要我们把代码从远程仓库克隆过来,先新建一个文件夹,在新的文件夹中鼠标右键点击Git bash Here,输入下面命令
命令:git clone 远程仓库地址
克隆和拉取的区别
- 相同点:都是从远程服务器拉取代码到本地
- 不同点:
- 克隆:是本地没有版本库时,从远程服务器克隆到整个版本库到本地,是一个本地从无到有的过程
- 拉取:在本地有版本库的情况下,从远程库获取最新commit数据,并merge到本地
在idea中使用git
集成
- 点击idea中File->settings
- 弹出settings后在搜索中输入"git",选择Git,指定你的安装的git.exe目录
- 校验git是否集成完成,点击test,弹出校验窗口,点击git Executed successed 成功则表示集成完成
- 创建工程
- 初始化工作区:点击VCS->Create Git Reposity
- 选择管理的文件夹,这里我现在的为gitProject文件夹
- 点击左下角,Git菜单,此时day0901_git下所有的文件都变成棕色,说明我们的工作区添加完成了
- 忽略文件类型
办法:将.gitignore文件复制到项目的根目录
add和commit
- 工作区提交暂存区 add
颜色变为绿色
- 暂存区提交到本地仓库 commit
差异化比较&查看提交记录
工作区和本地仓库比较
查看记录
版本回退及撤销
先修改java文件,提交俩次,总共有三次提交记录
本地仓库回退撤销
- 点击git->log查看3个提交的版本
- 现在在本地仓库中回退到第二次提交,选择第二次提交的标记
- 选择Hrad
- 回退成功
工作区撤销
- 当我们在工作区编辑代码时候,希望撤销未提交本地仓库的代码时候,在Git中右键
- 点击rollback
- 撤销成功
说明:针对上述工作区的代码撤消,有同学会有疑问,我直接删除不就完了吗,为什么这么麻烦,其实我们在实际开发中代码会很多,那么当你书写了很多不同地方的代码,以至于你都忘记哪些是新编写的代码了,那么删除是一件很痛苦的事情,并且容易误删,所以使用工作区撤销更加方便。
与远程仓库关联 push
上面已经创建了远程仓库,接下来用idea与远程仓库关联
- 点击推送
- 点击Define remote
- 输入上面复制的远程仓库地址
- 选择提交
关联远程仓库
- Git—>Manage Remotes …
- 点击弹出窗口中的+
- 将复制的远程仓库地址复制到url中
- 成功关联
从远程仓库上拉取,克隆项目到本地
拉取
- 先在gitee上复制要导入项目的连接地址
- 点击项目->Git->pull
- 如果没有master按ctrl+F5
第一次拉取失败
- 点击右下角master
- 右击选择下面图中
- 点击merge
- 点击红色箭头,最后点击apply
克隆
- 点击git->clone
- 填写地址和存放项目位置
- Trust Project或者New Window
- 导入之后查看当前项目在idea中的三个环境
maven地址 File->settings
idea环境必须都是utf-8编码
当前使用的jdk8
创建分支
创建到本地分支上
切换分支
- 将gitee中所有的分支拉取到idea中
- 在idea中查看本地和远程分支
- 切换到dev1分支上
注:
- 我们不能在master分支上进行书写代码,都是在每个分支上写代码,然后最后确定没问题之后再将其他分支上的代码合并到master代码上
- 在切换其他分支之前必须先将当前分支的代码进行提交,否则当前分支的代码就不存在了
提交当前分支的代码
看上面commit
切换分支
将除了master分支推送到gitee上
和上面一样,有个简化的是中间commit和push
注意:推送的一定是dev1分支上的代码,如果推送的是master分支上的代码就会报错。
将其他分支代码合并到master分支上并上传提交
要想将dev1分支代码合并到master分支上,首先需要切换到master分支上,然后在合并
- 将dev1分支上的代码提交
- 切换到本地master分支上
- 将dev1分支代码合并到master分支上
- 将master分支上的代码提交并推送到gitee上
处理版本冲突
当多个用户对同一个文件交叉修改的时候就尴尬了。A修改完提交一个,B修改完又提交一个,这个时候A修改完提交,问题来了,如果A提交成功,那么就相当于忽略了B提交的内容。这个时候就要强制你去处理一下这个问题,这就是我们所说的冲突问题。
- 先拉取代码,这时候App的类变成红色,且弹出窗口,需要手动进行合并
- 解决冲突
- 选择主干
- 推送到远程仓库