Git
git控制台快捷键
快捷键 | 解释 |
---|---|
Ctrl+Insert | 复制 |
ctrl + l | 清楚日志指令 |
Shift+Insert | 粘贴 |
1、概述:
Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。
除分布式版本控制工具、也还是集中式版本控制工具
1.1、版本控制
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看到历史版本,方便版本切换。
1.1.1、为什么需要版本控制
个人开发过度到团队协作
如:企业中,同一个代码由同一时间会由多人查看,如果一人(A)修改,其他人(B)再修改,由于修改的都是版本一号,当A将修改后的源码提交后,由于B修改的是初版本,没有和A修改后的版本融合,会导致B修改的源码覆盖掉A修改的源码,此时就需要使用到工具,将两人修改的源码融合起来。
1.1.2、版本控制工具
- 集中式版本控制工具
原理:使用中央服务器功能,当需要修改源码时,从中央服务器中下载修改提交,在一个人修改过程中,其他人不能修改。
- 分布式版本控制工具
原理:使用远程库,每个人修改代码后会将代码推送在远程库中,远程库中保持着最新源码,最新的源码也会同步到每个用户本地。
1.2、Git工作机制
Git三大区:
- 工作区:代码存放的磁盘的位置,可以删除
- 暂存区:将工作区的代码添加到暂存区,可以删除
- 本地库:把暂存区代码提交至本地库,就会生成对应的历史版本,此时无法删除
1.3、Git和代码托管中心
代码托管中心时基于网络服务器的远程代码仓库,一般我们简单称为远程库。
- 局域网
- GitLab
- 互联网
- GitHub(外网)
- Gitee码云(内网)
1.4、Git安装
说明:
(1)图标组件(Addition icons) : 选择是否创建桌面快捷方式。
(2)桌面浏览(Windows Explorer integration) : 浏览源码的方法,使用bash 或者 使用Git GUI工具。
(3)关联配置文件 : 是否关联 git 配置文件, 该配置文件主要显示文本编辑器的样式。
(4)关联shell脚本文件 : 是否关联Bash命令行执行的脚本文件。
(5)使用TrueType编码 : 在命令行中是否使用TruthType编码, 该编码是微软和苹果公司制定的通用编码。
选择git的编辑器
是否要修改初始化分支的名字
(1)检查出windows格式转换为unix格式:将windows格式的换行转为unix格式的换行再进行提交。
(2)检查出原来格式转为unix格式:不管什么格式的,一律转为unix格式的换行再进行提交。
(3)不进行格式转换 : 不进行转换,检查出什么,就提交什么。
选择提交的时候换行格式
(1)检查出windows格式转换为unix格式:将windows格式的换行转为unix格式的换行再进行提交。
(2)检查出原来格式转为unix格式:不管什么格式的,一律转为unix格式的换行再进行提交。
(3)不进行格式转换 : 不进行转换,检查出什么,就提交什么。
2、Git常用命令
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m “日志信息” 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本穿梭 |
2.1、设置用户签名
Git首次安装必须设置一下用户签名,否则无法提交代码
2.2、初始化本地库
基本语法
git init
2.3、查看本地库
git status
window 命令行创建txt文件
git命令和linux是通用的
1、添加修改编辑文件
vim 文件名
2、修改成功退出
shift + ; 再输如wq 回车
2.4、添加暂存区
git add 文件名
2.5、提交本地库
将暂存区的文件提交到本地库
基本语法
git commit -m "日志信息" 文件名
2.6、查看版本信息
git reflog
git log
2.7、修改文件
2.8 、历史版本(版本穿梭)
//查看版本
git reflog
//查看详细日志
git log
//穿越版本
git reset --hard 版本号
3、Git分支
3.1、什么是分支
分支,就是将一个程序分为多种层次,如用户使用层,当需要修改时,肯定是不能直接修改用户使用层的,此时就需要一个分支,用于修改,将修改好的程序在与用户使用层合并起来
3.2、分支的好处
同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中,如果其中某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可。
3.3、分支的操作
命令名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
3.3.1、查看分支
3.3.2、合并分支
正常合并
冲突合并
冲突产生原因:
合并分支是,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替代我们决定使用哪一个。必须认为决定新代码内容。
手动合并
4、Git团队协作机制
代码托管中心:GitHub
4.1、团队内协作
- 建立代码托管中心
- 团队内可以从代码托管中心中克隆代码
- 团队内成员可以修改代码后上传至代码托管中心
4.2、跨团队协作
- 代码托管中心建立分支
- 团队外成员访问该分支,对其克隆、修改等操作
- 团队外成员将其修改后代码发送到主分支后,管理员对其审核并确认是否合并
4、Idea集成Git
5、GitHub
GitHub网址: https://github.com/
5.1、创建远程库
5.2、远程仓库操作
5.2.1、创建远程仓库别名
1)基本语法
git remote -v //查看当前所有远程地址别名
git remote add 别名 远程地址 //设置远程仓库别名
5.2.2、代码推送
1)基本语法
git push 别名 分支
5.3、代码拉取
从远程库中将代码拉取到本地,更新本地库代码
git pull 项目名 分支名
5.4、代码克隆
git clone 克隆地址连接
注意:
克隆时,由于在创建远程库时使用的是公共库,所以克隆不需要登录用户账号。
克隆的操作:
- 克隆会拉取远程库代码到本地库
- 初始化本地仓库
- 创建别名
5.5、远程库团队内邀请其他用户
5.6、远程库跨团队协作
团队外请求
团队内收到请求
5.7、GitHub的ssh免密登录
6、Idea集成Git
6.1、配置Git忽略文件
如下图这些文件
问题1:为什么要忽略他们?
答:与项目实际功能无关,不参与服务器上部署运行。把他们忽略掉能够屏蔽IDE工具之间的差异
问题2:怎么忽略?
1)创建忽略规则文件xxx.ignore(前缀名随便起,建议git.ignore)
git.ignore文件模板内容如下:
*.class
*.log
*.ctxt
*.mtj.tmp/
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
*.iml
.classpath
.project
.settings
target
build
.idea
.gradle
在 .gitconfig文件中添加git.ignore配置文件
[core]
excludesfile = C:/Users/jie/git.ignore
6.2、定位Git程序
6.3、初始化本地库
6.4、添加到暂存区
6.5、提交到本地库
6.6、切换版本
idea切换代码版本
6.7、创建分支
1、右键项目
2、idea右下角
3、分支设置
6.8、切换分支
6.9、合并分支
6.9.1、正常合并
6.9.2、冲突合并
出现代码冲突时:
7、iead集成GitHub
7.1、设置GitHub账号
账号密码登录
口令登录
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
7.2、分享工程到GitHub
7.3、push推送本地库到远程库
使用ssh免密登录
7.4、pull拉取远程库到本地库
注意:push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push的操作是会被拒绝的,也就是说,要想push成功,一定要保证本地库的版本要比远程库的版本高!
因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先pull拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送。
注意:pull是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突问题。
7.5、clone克隆远程库到本地中心
6、Gitee码云
6.1、简介
由于GitHub服务器在国外,使用GitHub作为项目托管网站,如果网速不好的话,严重影响使用体验,设置会出现登录不上的情况。针对这个情况,大家也可以使用国内的项目托管网站-----码云
码云是开源中国基于Git的代码托管服务中心,网址是https://gitee.com/,使用方式跟github一样,而且它还是一个中文网站。
6.1、idea集成gitee
6.2、Idea集成Gitee码云
方法1:将本地代码集成到gitee上
方法二:使用push将本地代码传递到gitee远程库中
1、首先在远程库中创建本地仓库,复制本地仓库的链接