35-Git笔记-qianfeng-笔记
![在这里插入图片描述](https://img-blog.csdnimg.cn/c7e8a13d79a245b9a451633a9403fea1.png)
一、Git简介
①:项目的版本管理
在项目开发过程中,项目没开发到一个节点就会对当前项目进行备份,这个备份就是项目的一个版本;当我 们继续开发一个阶段后,再次进行备份,就生成新的版本一一多个版本的集合就是项目的版本库
在项目版本管理中,我们可以使用手动进行管理,但是存在一些问题:
- 需要手动维护版本的更新日志,记录每个版本的变化
- 需要手动查找历史版本,当历史版本比较多的时候,查找工作很繁琐
- 当我们需要回退到某个版本时,只能够手动的通过DE工具手动打开
②:团队协同开发
![在这里插入图片描述](https://img-blog.csdnimg.cn/4364b5d882f64153826fb3b02ca18566.png)
③:版本管理工具—Git
Git是以恶搞开源的分布式版本控制系统,用于敏捷高效的处理任何大小项目的版本管理
核心功能
二、Git下载及安装
①:下载
②:安装
除了选择安装位置以外,其他都傻瓜式安装
③:检查安装
![在这里插入图片描述](https://img-blog.csdnimg.cn/ac49484258e048948c7a7714bafa70fd.png)
三、Git架构
![在这里插入图片描述](https://img-blog.csdnimg.cn/96838c96a49b4010818de698958e9e01.png)
四、Git基本使用
①:创建版本库
- 在工作空间的目录中,右键“
Git Bash Here
”打开git终端 - 在Git终端中输入git init指令,创建版本库(就是一个.git目录)
![在这里插入图片描述](https://img-blog.csdnimg.cn/99da5b52c6564b08aa2ffa45d4f9dbaf.png)
指令:git init
![在这里插入图片描述](https://img-blog.csdnimg.cn/1c5a40107d0f4b428dbae5834eca61d7.png)
②:查看版本状态
git status
③:将工作空间的修改添加到暂存区
git add a.txt
只将工作空间中的某个文件add到暂存区
git add·
将工作空间中所有文件都add暂存区
![在这里插入图片描述](https://img-blog.csdnimg.cn/e4ac1fc9c7e04a3f95763e86fae65df2.png)
④:将暂存区内容提交到版本库(仓库)
git commit -m
‘版本说明(描述)’
![在这里插入图片描述](https://img-blog.csdnimg.cn/fb035c5570f84cdfa3a70825534e104d.png)
⑤:查看
git log
查看每个版本的详细信息
git log --oneline
每个版本只显示一行信息
![在这里插入图片描述](https://img-blog.csdnimg.cn/3d69c929397744df96cccec5340adfc7.png)
⑥:设置用户信息
git config --global user.name 'Coke666'
设置用户名
git config --global user.email 'coke@haha.com'
设置用户邮箱
![在这里插入图片描述](https://img-blog.csdnimg.cn/e7705c9975f64849a159bdb0933b88e7.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/aa53dd87011f433dbac744780000141e.png)
⑦:同步历史版本到工作空间
git add .
添加到暂存取
git commit -m '版本日志(描述)'
提交
git log --oneline
查看版本信息
> git checkout 版本号
![在这里插入图片描述](https://img-blog.csdnimg.cn/ef6028a8ca3f440b833d32a76a7d21b7.png)
注意 : 只能查看当前版本之前的信息
![在这里插入图片描述](https://img-blog.csdnimg.cn/61830dbf7799470880dc634d1eea7224.png)
不过 可以回到最新版本
, 但是要记住版本号!!!!
![在这里插入图片描述](https://img-blog.csdnimg.cn/3b49e6781871488aa2e72b34f353c590.png)
五、远程仓库
①:远程仓库介绍
远程仓库,远程版本库; 实现版本库的远程存储,以实现团队的协同开发
远程仓库 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/0a28512451d1485fb49854a2effa3974.png) |
②:如何获得远程仓库?
③:创建远程仓库(码云)
1. 注册(注册步骤略~) |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/e8ace4868ce247569ccaa593ca801e53.png) |
2. 创建仓库 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/9ab15dc03d4346b2a872bcf8ef70763b.png) |
仓库地址: https://gitee.com/c-coke/git-demo.git |
![在这里插入图片描述](https://img-blog.csdnimg.cn/badfec437dfc4f2abf397000466e9396.png) |
3. 添加协同开发人员 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/70cb235f9b6e4b62b3fa700835593d7f.png) |
六、远程仓库操作
①:准备工作
-
创建本地工作空间
D:\OOP\java\develop_idea\04_git\01_gitDemo
src
main
java
resources
test
java
pom.xml
![在这里插入图片描述](https://img-blog.csdnimg.cn/e956f813c6984005b5d7a52e72b6f4cc.png)
2. 初始化本地仓库
git init
![在这里插入图片描述](https://img-blog.csdnimg.cn/86bcc2806ba742868ab53f9c9be3d37c.png)
-
将工作空间搭建的项目结构add
到暂存区
git add .
![在这里插入图片描述](https://img-blog.csdnimg.cn/9de96bcc77a247608746edd4335c2938.png)
-
将暂存区文件提交到版本库,生成第一个版本
git commit -m '创建项目'
![在这里插入图片描述](https://img-blog.csdnimg.cn/e2793c8029b748a181b13f72be0f991d.png)
-
为当前项目创建一个远程仓库
远程仓库地址: https://gitee.com/c-coke/01_git-demo.git
![在这里插入图片描述](https://img-blog.csdnimg.cn/b0cb06ca89dc435e814f089edb377770.png)
②:本地仓库关联远程仓库并查看
建立D:\OOP\java\develop_idea\04_git\01_gitDemo
的本地仓库与 远程仓库https://gitee.com/c-coke/01_git-demo.git
的关联
git remote add origin https://gitee.com/c-coke/01_git-demo.git 关联远程仓库
git remote -v 查看远程仓库的状态
![在这里插入图片描述](https://img-blog.csdnimg.cn/1aee9f18dfd84dc888d89cba3f94015d.png)
③:将本地仓库push
到远程仓库
git push origin master origin 远程仓库的别名 master 远程仓库分支名
![在这里插入图片描述](https://img-blog.csdnimg.cn/56889f0b15eb4dcdbfddf9ea71246a77.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/19fe9270db3541879fff318d40412759.png)
在本地仓库中新建文件
main\java
新建 HelloWorld.java
main\resources
中新建一个img
文件夹并在该文件夹中存一张照片添加到暂存区 → 提交 → push到远程仓库
![在这里插入图片描述](https://img-blog.csdnimg.cn/327b80ef3c034bf4b912a97640d52396.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/3bb6776e26d0487dbc0e8f8e4367776f.png)
④:其他开发者pull远程仓库到本地
- 直接从远程仓库上传文件(模拟其他开发人员提交的代码)
![在这里插入图片描述](https://img-blog.csdnimg.cn/3c232487754c4138ba7f816ea85990fe.png)
指令 :git pull https://gitee.com/c-coke/01_git-demo.git master
![在这里插入图片描述](https://img-blog.csdnimg.cn/a73846a02f164896be8a691e9963c422.png)
⑤:解决协同开发冲突问题
1. 模拟其他开发人员修改信息 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/d6267fb7da294ef7aa4eb3d0b971136e.png) |
2.在本地也修改HelloWorld.java中的内容 👉并添加👉提交 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/56a05def301345f0bfcf93982f519d64.png) |
|
3. 当push到远程仓库时会报错(冲突) |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/ef43673d84b24856ade9c3ece68323f1.png) |
出现以下问题解决方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/a0832dda7a664d72b6215c6d71bca071.png)
⑥:从远程仓库拉取报错
![在这里插入图片描述](https://img-blog.csdnimg.cn/c7d698c41c7643a394cfccefdfd32b58.png)
七、分支管理
![在这里插入图片描述](https://img-blog.csdnimg.cn/567672f1dfcf4c6eae51d129a79eeb19.png)
①:分支介绍
分支就是版本库中记录版本位置(支线),分支之间项目不影响,使用分支可以对项目起到保护作用
分支就是一条时间线,每次提交就在这条时间线上形成一个版本
②:分支特性
- 创建一个新的版本库,默认创建一个主分支-master分支
- 每个分支可以进行单独管理(常规分支、保护分支、只读分支)
- 分支是可以合并的
③:分支操作
![](https://img-blog.csdnimg.cn/3b47b46879394e47977728af9e0f336d.png)
01.创建分支
创建分支:git branch 分支名 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/32ca3e09cbe447df951690fa28a31395.png) |
02.查看分支
![在这里插入图片描述](https://img-blog.csdnimg.cn/8ae28ef3a7444465ab5de4c9bdb05eb5.png)
查看分支:gti branch |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/528ac3e0d72a470abcaba4ddfaecf7dc.png) |
03.切换分支
切换分支:git checkout 分支名 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/0cb2f1d1dbbe4084bc83c15f527cc85c.png) |
04.删除分支内容
提交删除信息:git commit -a -m '描述 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/ad741716b0ac4337b2a2339d055f3674.png) |
05.检出分支
检出分支:git checkout 版本号 -b 分支名 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/be0ab4f70fdd435883d2cb82054b90c7.png) |
06.合并分支1(三方合并)
1.先在dev2分支下新建一个文件(master主分支没有的文件) |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/1cc3e4f0a9be49dab4b217b33199b9aa.png) |
2.切换回主分支(master) |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/b9416179ae924071b0bf7031ec36a5a5.png) |
3.合并分支:git merge 分支名 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/fbb949f5f457436e9d74f012949074e2.png) |
07.合并分支2(快速合并)
1.在master分支下新建dev3分支并在该分支下新建dev3.txt文件 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/a971f86eb86e46bd85339dff8a245176.png) |
2.切换会master分支 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/b2bc2d840a8848ae9dbda90d2e9292ae.png) |
3.在master分支下合并dev3分支 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/7463589ee6234ba2864a82b634f0ca92.png) |
08.三方合并和快速合并的区别
![在这里插入图片描述](https://img-blog.csdnimg.cn/c091041f285a4840923f8d0cd307f6b0.png)
09.删除本地分支
git branch -d local_branch_name
git branch 是在本地删除分支的命令。
-d 是一个标志,是命令的一个选项,它是--delete. 顾名思义,
它表示您要删除某些内容。-local_branch_name是要删除的分支的名称。
④:企业分支模型
![在这里插入图片描述](https://img-blog.csdnimg.cn/2f9fc188ad47407e8bc889ea972a79cd.png)
八、标签操作
![在这里插入图片描述](https://img-blog.csdnimg.cn/e7dc9d13e0214ae79b2a3144fba4bdb1.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/efd4bfcbbaa24890a016b3637540e39a.png)
①:创建新标签并推送到远程仓库
![在这里插入图片描述](https://img-blog.csdnimg.cn/b8db5b8479184ac28965326f51405168.png)
②:检出标签(下载)
多个标签切换对比
1. 创建新的文件 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/5cc3c9099fe8471fa9af263f560cf4fb.png) |
2. 创建一个新的标签并推到远程仓库 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/568cc65da2eb41dfbb8b25bf590a5f61.png) |
3. 检出标签(检出标签必须创建一个新的分支) |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/a8ae17b3d834465f847b089accf466ed.png) |
九、IDEA整合Git使用
作为Jva开发工程,我们代码的编写工作都是在lDE工具(idea)中完成,因此我们需要了解和掌握直接使用IDE工具完成Git的操作
①:IDEA关联Git
1.使用Settings for New Projects 永久设置 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/86c8f70718414e22b5d9cf6923799b74.png) |
![在这里插入图片描述](https://img-blog.csdnimg.cn/89f0ba3465c8404abfd83c3877e7aa87.png) |
②:IDEA中Git版本管理
01.准备工作
准备工作
02.创建本地版本库
创建版本库 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/a7d29175dcee4781bae5ab4de7c549aa.png) |
![在这里插入图片描述](https://img-blog.csdnimg.cn/82b2ca988d334dc396e3824cc3f273f9.png) |
03.设置忽略文件(不需要提交的文件)
在工作空间中有些文件是不需要记录到版本库中的(例如.idea、target、iml文件),可以通过设置忽略提交 来实现
- 在工作空间的根目录(项目的根目录)中创健一个名为.g1 tignore文件
- 在.g1t1 gnore文件配置忽略过滤条件
04.将工作空间add到暂存区
1. 选择项目文件-右键-Git-Add(添加到暂存区的文件-绿色) |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/3e7980de8c0a4365a7023cc433c18b21.png) |
![在这里插入图片描述](https://img-blog.csdnimg.cn/3c3d585de8a44e9c912963552b774e54.png) |
2. 如果一个文件创建好之后还没有添加到暂存区-棕红色 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/d7d1511d51e24b8097c3bc935620e477.png) |
3.添加到暂存区的操作可以设置默认添加 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/e2b217975f774b76b8ea7df7de5f7678.png) |
![在这里插入图片描述](https://img-blog.csdnimg.cn/c307b0da84154247aab29f2803ab2bd5.png) |
06. 克隆远程仓库
方式一
![在这里插入图片描述](https://img-blog.csdnimg.cn/abf56176639148d58a69d33ddf9208e0.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/3b0b9b6d170942c99fb8d4a19d982a87.png)
方式二
![在这里插入图片描述](https://img-blog.csdnimg.cn/499952c8e3594c9abc54e20bdacd1e67.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/36cdcaef6ba24825a041e6a5591549d2.png)
克隆一个(开源)的远程仓库
![在这里插入图片描述](https://img-blog.csdnimg.cn/ea8a318b900e4938ac46cdc02af157cc.png)
05.将暂存区提交到版本库
1.选择项目/文件-右键-Git-Commit(记录到版本库的文件-黑色) |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/732778845a564d1e978d4425ad60b39c.png) |
![在这里插入图片描述](https://img-blog.csdnimg.cn/ea73550fb6ee4d8e867b72f2a0d6172d.png) |
2. 如果对记录到版本库的文件进行了修改,也就是说工作空间和版本库不一致一-蓝色 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/0a1a9cb5b80442e7b63bbe55d529d20a.png) |
![在这里插入图片描述](https://img-blog.csdnimg.cn/65142158b86d49b6af98ebf74c9211bb.png) |
③:IDEA中Git分支管理
01.创建分支
1. 点击IDEA右下角Git 2. 在弹窗中点击New Branch 3. 输入新分支的名称 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/f10f93c10f004db6912756c236162c2d.png) |
02.切换分支
1.点击IDEA右下角Git 2.点击非当前分支右边的箭头 3. 在选项卡点击checkout |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/3f982d06eff641c1a8d90293f633f818.png) |
03.删除分支
04.合并分支
例如:将dey合并到naster
- 切换到master分支
- 点击dey分支右面的箭头,在展开的菜单中选择
Merge into current
1.在dev分支中添加一些内容并提交 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/a546cb06d6c8407186826284de97a842.png) |
![在这里插入图片描述](https://img-blog.csdnimg.cn/f3b15b69ce9e41399b1d636d8c270cef.png) |
④:IDEA中使用Git进行团队协同开发
01.项目管理者
-
完成项目的搭建
-
为当前项目创建本地版本库
-
将搭建好的项目提交到本地版本库
- add到暂存区
- 提交
-
创建远程仓库
- https://gitee.com/c-coke/02_git-demo2.git
- 管理👉添加开发者
-
将本地仓库push到远程仓库
- 在远程仓库新建dev分支(master需要进行保护)
- 将本地dev push到远程仓库
|
|
|
| - 将master分支设置为保护分支
02.项目开发者
- 从管理员提供的远程仓库pull到本地
- 远程仓库:https://gitee.com/c-coke/02_git-demo2.git
![在这里插入图片描述](https://img-blog.csdnimg.cn/be3eb43edfb347b888c58b4482423ac4.png)
1. 在远程仓库中直接修改代码 模拟其他开发人员 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/2180e616922e4d96b27d4eed3037e9b3.png) |
2. 拉取远程仓库的信息 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/4ad8bc10e09c4dd6b76e8f4f8f58b151.png) |
![在这里插入图片描述](https://img-blog.csdnimg.cn/1def0b20f878449bb26f9cc598d9e8e5.png) |
⑤:IDEA中使用Git的冲突解决
1. 模拟同时提交冲突问题 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/ba0bcdd33fe04a95a097e03f87c46fef.png) |
2. 模拟另外一名开发者 在本地同样的文件中添加一行代码 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/530eb4d546684d30af228f58a8a18179.png) |
3.本地开发人员push到远程仓库 |
---|
![在这里插入图片描述](https://img-blog.csdnimg.cn/f5a334c06c84465c8226d2e4f99d5aaa.png) |