一、Git 2.31.1
git是一个免费的,开源的分布式版本控制系统,快速高效的管理从小型到大型的企业项目。
svn集中式版本控制
git命令,基于开发案例,详细命令
git分支,分支特性,分支创建,分支转换,分之合并,分之合并代码冲突问题如何解决?
Idea如何使用git操作,如何集成。
版本控制:
工作机制:
本地工作区【代码存放目录】git add–>暂存区【git添加到追踪文件】git commit—>本地库,基于上一个版本的代码,不能删除某一个版本的代码—》git push远程仓库,推动到远程
1.1 Github【国外】
github用来存储代码,创建远程仓库,代码推送,代码拉取,代码克隆
github可能会发生网络登不上去,可以使用SSH免密登录
1.2 Gitee 码云【国内】
码云创建远程库,如何连接码云,代码推送
idea集成码云
代码迁移和复制
1.3 GitLab【局域网】
基于局域网的代码托管中心
服务器的搭建及部署
idea如何集成gitlab
二、 下载安装
1.下载地址:https://git-scm.com/download/win
查看版本:git --version
三、Git常用命令
2.1 设置用户签名
必须要配置用户签名,否则无法提交代码,操作者
用户签名和登录github其他的账号没有任何关系
2.2 初始化本地库
git管理目,获取目录的管理权限
2.3 查看本地库状态
新增一个文件后,查看本地库状态
再次查看本地库状态,红色文件代表本地文件,还没有追踪
2.4 添加到暂存区
再次查看状态,文件变成了绿色,可以去追踪了,在暂存区中,可以删掉的。
删掉暂存中的文件,工作区中的文件还是存在的,执行之后,又会变成红色的文件。
2.5 提交到本地库
提交到本地仓库
查看信息,提交过以后,工作目录干净
查看提交版本信息,git log 或者 git reflog
2.6 修改文件
vim hello.txt,修改了文件中的内容,并查看本地库内容
添加到暂存区,查看状态信后,变成了绿色
提交到本地库
2.7 查看版本更替
查看版本信息,可以看到两个版本,git reflog 或者 git log
2.8 切换版本
现在将版本3切换到2版本的hello.txt
2.9 分支操作
1.什么是分支?
版本控制中,同时推进多个任务,为每个任务,创建每个任务的单独分支,程序员中可以从开发主线中分来出来,开发自己的分支不会影响主线的运行,可以简单理解为副本。
2.分支的好处?
同时推进多个功能的开发,提高开发效率,某个分支的失败不会影响其他的分支,失败的分支重新开始就好。
3.分支的操作
1.查看分支
2.创建分支
3.切换分支
继续之前的操作就可以了,git status git add git commit -m git reflog
4.分之合并
把指定的分支合并到当前的分支上,master没修改,hot-fix修改后更新到master上
5.冲突合并
合并分支时候,两个分支对于同一个文件的同一个位置有两套完全不同的修改,git无法决定使用哪一个。必须认为决定使用哪一个代码。
5.1 修改master的分支的文件
并添加暂存库,提交本地库
5.2 切换分支hot-fix,修改文件
并添加暂存库,提交本地库
5.3 切换分支master
5.4 合并分支hot-fix,并产生冲突
5.5 手动合并代码
产生冲突的代码,删掉没用的的代码和特殊符号
5.6 冲突解决
添加到缓存区,提交到本地库【不能带有文件名了】,。
四、Git团队协作机制
4.1 团队内协作
4.2 跨团队协作
五、GitHub操作
github账号
5.1 创建远程仓库
5.2 创建远程仓库别名
5.3 推送远程仓库
git push https地址/别名 分支
5.4 拉取远程代码到本地库
自动同步了
5.5 克隆远程仓库到本地库
另一个账号,无需登录,直接克隆
1.拉去代码 2.初始化本地库 3.创建别名
5.6 邀请加入团队【团队内协作】
令狐冲操作:
岳不群操作:登录账号,邀请令狐冲
令狐冲操作:
岳不群查看:
5.7 邀请加入团队【跨团队协作】
1.东方不败操作:Fork–>clone本地库操作–>提交本地库–>提自己的交远程仓库
点击Pull request发送请求
2.岳不群操作:审核操作
5.8 SSH免密登陆
用户家目录下,git bash here
赋值id_rsa.pub里面的公钥
岳不群的设置:
岳不群,查看,东方不败的代码,测试:
六、Idea集成Git
6.1 配置Git忽略文件
忽略掉这个没关的文件,可以忽略屏蔽IDE工具之间的差异
1.创建一个xxx.ignore,建议git.ignore,建议用户家目录下
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
2.在git安装目录下,找到 .gitconfig
6.2 idea定位git安装目录
6.3 初始化idea的本地库
6.4 添加暂存区
红颜色:没有追踪,没有添加到暂存区,右键pom.xml,git add ,绿色已经在暂存区了
自动添加到暂存区:
6.5 提交本地库
提交完毕之后,代码文件的颜色又变成了黑色。
6.6 切换代码版本
1.修改java文件的代码,会发现文件变成了蓝色【追踪后修改】。
2.需要右键项目,git,add,添加到暂存区
3.右键,git,提交本地库
如果忽略掉 git add 暂存区也是可以的,因为之前追踪过和这个文件,直接git commit conn文件目录即可
4.查看版本信息,idea左下角的位置
5.切换版本
6.7 创建分支
或者点击IDea的右下角:
6.8 分之合并 【正常合并】
1.master分支的内容不修改,切换到hot-fix分支,修改代码,多加一行代码,不产生冲突
2.因为追踪过了,直接git commit Directory
3.切换回master分支上,把hot-fix合并到master上,点击右下角的master
6.9 分之合并 【冲突合并】
如果两个分支的代码,某一行代码两个分支全部修改了,在提交本地库之后,合并的时候就会产生冲突
点击merge之后,会展示所有冲突的代码,可以手动进行合并。
七、Idea集成Github
7.1 idea登录
如果登录不进去,也可以在github中生成一个token进行登录
7.2 idea分项工程到github
1.可以省略github创建仓库的步骤,直接创建并share到远程仓库
7.3 push推送本地库到github
1.本地库修改了代码后,变蓝色
2.git commit directory 提交本地库
3.右键项目名,git Repository push
默认采用的https协议进行push
或者采用ssh的协议进行push
7.4 pull远程仓库到本地仓库
1.远程github仓库中修改了代码,网页端提交改变,需要拉取到本地来
2.尽量不要改变本地代码,pull才不会冲突合并。否则需要手动改冲突
3.pull拉去合并分支
7.5 clone克隆github的代码
1.如果本地代码没有了,删除掉了
2.打开idea页面就可以克隆
通过ssh协议进行clone 也可以 进行https协议进行
八、Idea集成Gitee
8.1 码云创建远程仓库
8.2 idea安装码云插件
8.3 idea集成码云
8.4 远程库没有创建,idea分享去创建
8.5 远程库创建好仓库,idea push代码
8.6 修改代码后,继续push到gitee
1.修改代码后变成蓝色
2.前面已经追踪过了,不需要继续add,直接提交到本地库
3.代码文件变成黑色,可以进行push
8.7 在idea中pull gitee代码
1.在gitee的仓库上修改一下代码,并在网页上进行提交。
2.拉取回来
8.8 gitee clone和github一致
九、自建局域网代码托管平台-GitLab
开源免费的代码托管平台
支持的安装环境 linux
9.1 下载安装
https://about.gitlab.com/install/
1.根据官网环境进行,准备服务器【配置好主机名,ip,保证上网,关闭防火墙,配置windows的域名映射】
2.yum在线安装比较慢,提前下载好rpm包,放到/opt/module下面
3.安装官网需要的所有依赖
4.moudle目录下,也可以自定义个安装脚本
5.给定脚本权限,chmod +x gitlab-install.sh
6.执行脚本:./ gitlab-install.sh
9.2 初始化gitlab服务
$ gitlab-ctl reconfigure
9.3 启动gitlab服务
$ gitlab-ctl start
9.4 浏览器访问gitlab
1.ip:80 可以直接访问,默认为80,或者主机名也可以。
2.需要修改root的密码,复杂度8位以上,大小写,特殊符号
9.5 gitlab创建远程库
9.6 Idea集成gitlab
1.安装gitlab插件
- idea登录gitlab服务器
9.7 idea push代码到gitlab
1.先拿到gitlab的远程库连接
记得修改一个,吧example去掉
2.连接远程库连接
其余操作和其余的远程仓库一样。