一、创建SpringBoot项目

首先在idea中快速创建一个SpringBoot项目,然后我们将代码托管至Github上面。

1、pom.xml文件依赖、很简单的web项目依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency>
</dependencies>

2、基础包结构,大致如下,反正就是先创建很简单的web项目,我们将它托管到Github上面,这才是本篇文章的意义

二、Git全局配置

第一步配置Git本地安装地址,找到本地安装目录/bin/git.exe,将其加入idea当中,如下

第二步配置Github账号、具体如下

接下来点击添加账户,会弹出一个框输入Github账号密码,进行登录

登录成功以后,会显示自己的Github登录用户名名称以及邮箱头像信息,如下

点击apply,ok,这样Git的全局配置在idea中已经完成了。

三、初始化Git仓库

点击工具栏VCS、按照以下步骤依次操作,进行Git仓库创建。

选择之后,会弹出一个框,如下,选择项目的父级目录,如下。

选择ok之后,我们的项目出现了如下变化。

进入我们本地创建的项目根目录下,胡发现多了一个 .git 的文件夹,如果没显示,可调式计算机显示隐藏文件即可看到,如下。

并且idea工具栏上方多了一个Git的操作工具,如下

此时相当于该项目全部模块交给Git管理了。

四、忽略掉Git提交的文件

项目右键,点击Git,点击 .git/info/exclude,会弹出一个编辑区。当然你找到本地项目存放地址,在.git目录下也是可以找到该文件的。

我这里是打开本地项目存储位置.git下面的那个文件,进行编辑的。你在idea中直接编辑也是可以的,因为我的打不开那个文件,所以我没在idea里面编辑


排除 .idea 以及所以带 .iml 后缀的文件,因为有的文件我们是不需要同步到Github上面进行托管的。

此时当我们编辑保存后,idea会自动刷新的,那些我们排除托管的文件包就变成了灰色,如下

五、将代码添加至暂存区

同样还是对着项目根目录鼠标右键,如下,点击Add

此时我们的代码文件就变成绿色了,如下。

此时我们点击idea上面的Git工具栏,绿色打钩那个按钮,进行提交注释,如下

进行提交注释,创建Git本地版本库。

此时可能,提交不成功,就是会检测有的文件不规范,你直接选择commit,强制提交就好了。如果错了怎么办,我们回滚回去,重新提交就好了,选择idea工具栏上面的Git工具栏,这个返回箭头位置,点击可进行回滚到之前的状态。当然我的提交成功了 所以就不能回滚了。

然后你点击这个时钟按钮就可以查看历史提交记录了,如下。

五、将本地Git仓库上传至Github上

1、创建Github仓库

创建一个仓库,输入仓库名称信息等。

点击创建后,可看到创建的仓库Https地址,如下界面

此时我们复制好仓库地址,回到idea中,对着项目鼠标右键,如下

点击push后,弹出Github仓库地址填写,将我们复制好的仓库地址填写如其中,点击ok

ok之后,再点击push,如下

push的时候可能会失败,比如出现如下错误。

Caused by: java.io.IOException: Server returned invalid Response.

仔细检查网络,一般都是网络问题,重新push一下,就好了,出现如下提示:说明推送成功了

16:33    Pushed master to new branch origin/master

六、刷新Github仓库

可以发现我们的项目已经成功提交了。

七、测试代码更新提交

此时我们到项目中再添加一点代码,再次提交至Github中

此时该文件变蓝色了,表示修改了未提交。

项目的本地存储文件,有个红色的感叹号,表示我们修改了里面的内容,但未提交至Github当中。

修改以后,再次提交。
1、第一步还是提交至本地Git仓库


2、push到远端
怎么push,操作和上面说过的一样。

出现如下说明第二次修改提交也完成了。

登录至Github上面查看

此时我们的项目托管已经ok了,不过这只是针对个人开发进行的项目托管。

八、创建分支以及合并分支

1、创建分支

点击弹出一个框,然后我们点击创建一个分支,如下

填写分支名称

创建成功后,idea左下方会有一个提示,如下

表示分支创建成功,摈弃已经成功切换至该分支了(test分支),怎么证明呢?
项目鼠标右键选择Git…如下。

看到如下这个分支前面的标签,说明已经切换到test标签了。

此时我们在这个分支上面添加一些代码。

然后我们再次commit它


此时我们查看历史提交记录,点击Git工具的那个时钟按钮

可以看到我们在分支上面添加了记录。
2、合并分支
切换到master主线上面。还是项目鼠标右键

弹出如下框,选择master,点击切换Checkout

此时查看我们的历史记录,已经成功切换至master了,并且test分支创建的提交历史记录在这里已经看不到了,而且代码在主线里面也看不到了。

开始合并分支代码,还是项目鼠标右键,选择这个Merge Changs

选择要合并的分支,打钩,进行合并。

出现如下提示表示合并成功了。并且很直观的看到我们的代码中已经合并了test分支的代码片段了。

最后我们再次push提交至远端。

ok提交成功了。

Github上面的代码中也成功推送进来了

九、Git解决冲突

1、首先我们在主干(master)上面添加内容

再进行commit提交

2、切换到分支(test)上面添加内容

同样添加内容后进行commit操作

现在分别在主干和分支添加了内容我们要进行合并,合并在哪里呢?肯定是主干了。
1、先切换至主干
2、再次合并分支
合并分支此时勾选了合并要合并的分支后,会弹如下框,表示出现冲突了,需要处理。

我们选择Merge按钮,此时也会弹出一个框,将主干的代码与分支代码标注出来,可选择进行合并主干的还是分支的。

当然也可以两者都合并在一起,我们选择两者都合并。依次点击双向箭头,进行合并。

此时可看到对主分支代码进行了合并

点击apply即可完成冲突代码合并。查看历史提交记录,已经合并了test分支,解决 了冲突。

然后我们可再次push到远端。

十、更新本地库

在协同开发过程中,可能是多个人一起开发,提交至Github上,此时你要保证本地库是最新的,才能push到远端。
1、测试,修改远端代码
假设你的同伴修改了代码,做了提交,此时你本地已不是最新的代码,你做修改了之后也提交了,能提交成功吗?当然不会,怎么做呢?

然后我们编辑一下

2、测试,修改本地代码进行提交
此时本地已经不是最新代码,我们添加新的代码,再次commmit再push


此时本地不是最新的代码,同伴已经对仓库里最新代码做了修改提交,然后我们本地做新的内容添加提交会成功吗?
点击push进行远端推送。此时弹出一个框,push失败了,遭到拒绝了,因为现在不是罪行的,需要从远处合并过来最新的。

我们点击Rebase,保持和远端一样,再提交。然后又会弹出一个框,需要我们进行合并远端代码。我们点击合并。

和之前合并还是一样的操作。

此时可能会出现push失败了,出现如下警告。

我们重新push就好了。

ok、Github上面已经做了最新的合并提交了

十一、总结

到此Idea中如何使用Git进行分布式版本控制就实战完了。
好处一:本地拥有版本库,随时进行版本后退

比如我们在workspace做一个登录注册的功能,可以先把一部分写好的代码commit到本地库Repository,后面再完成另一部分代码后再次commit到Repository,这个时候我们想要回退到前一个代码版本,直接在本地操作即可,待最后功能完成就可以push到远程库Remote,而不会出现别人在svn下载到一份有不完整功能的代码。

好处二:非常简单的建立分支

比如我们针对Android项目研究是否兼容X5,如果在svn我们往往会从服务端update一份新的代码下来本地进行修改研究。而使用Git则可以直接建立一个分支branch,直接在该分支上修改,修改之后commit到该分支的对应本地库的位置,期间还可以切换回主分支进行修改其他代码。

好处三:速度更快,特别是熟悉git命令后

无论是在克隆clone代码还是切换分支、提交修改,这些步骤无论从逻辑机制和速度来说都有了极大的提高,为我们节省了不少宝贵的时间,而不需要SVN漫长的等待。

好处四:指定和若干不同的远端代码仓库进行交互

Java开发必会Git分布式版本控制系统实战篇相关推荐

  1. Git分布式版本控制系统(上)

    Git分布式版本控制系统(上) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...

  2. Git分布式版本控制系统

    Git分布式版本控制系统 git remote -v 查看仓库 一 企业高效持续集成平台场景介绍: 二,GIT分布式版本控制系统: 2.1 Git简介: 2.1.1 git是什么? Git在Wikip ...

  3. Git 分布式版本控制系统

    目录 文章目录 目录 Git 分布式版本控制系统 Git 的基本概念 Git 的仓库结构 Git 的核心对象 Git 的数据结构 Git Flow 参考文档 Git 分布式版本控制系统 Git 是一个 ...

  4. g4e基础篇#2 Git分布式版本控制系统的优势

    1. 基础篇: 为什么要使用版本控制系统 Git 分布式版本控制系统的优势 Git 安装和设置 初始化Git存储库(Repo) 起步 1 – 创建分支和保存代码 起步 2 – 了解Git历史记录 起步 ...

  5. Git分布式版本控制系统(下)

    Git分布式版本控制系统(下) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...

  6. Git 分布式版本控制系统使用教程

    Git 专栏索引: Git 分布式版本控制系统使用教程 在 IDEA 中使用 Git 图文教程 Git 分布式版本操作系统使用教程 1. 版本控制系统简介 1.1 集中式版本控制系统 1.2 分布式版 ...

  7. 22-07-14 西安 Git 分布式版本控制系统 、代码管理

    Git是目前世界上最先进的分布式版本控制系统,Git可以做源代码管理 Git的诞生 Linus (Linus Torvalds 林纳斯.托瓦斯)是在BitKeeper停止向开源社区提供免费版本后开发了 ...

  8. 使用Git分布式版本控制系统

    GIT(分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理 ...

  9. Git分布式版本控制系统简介和使用

    Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.[1] Git的读音为/gɪt/. Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本 ...

最新文章

  1. python变量类型-python变量的数据类型有哪些?
  2. Python 3.x 引入了函数注释
  3. OpenGL编程指南13:光源移动
  4. pku 2635 The Embarrassed Cryptographer 数论——素数筛选法+模拟大数除法
  5. java list接口方法_java List集合接口的坑
  6. python统计分析--3.线性回归四种算法
  7. java file_java开发之File类详细使用方法介绍
  8. VueJS组件之全局组件与局部组件
  9. 【JS】call,apply,bind
  10. PgSQL · 应用案例 · 逻辑订阅给业务架构带来了什么?
  11. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_6-2.申请微信支付介绍和不同场景的支付方式...
  12. 移位运算符 java_java.移位运算符
  13. 「上海院子」打造不可复制的国宅风华
  14. itextpdf加盖章
  15. 从零起步做到Linux运维经理, 你必须管好的23个细节
  16. 基于PaddleX的岩石识别
  17. 【Django】admin的save_modle方法重写-20220803
  18. 使用Google colab的GPU运行resnet
  19. Py西游攻关之RabbitMQ、Memcache、Redis
  20. vue和java获取地理位置经纬度

热门文章

  1. 小木棍(信息学奥赛一本通-T1442)
  2. 组合数学 —— 组合数取模 —— 卢卡斯定理与扩展卢卡斯定理
  3. VMweare 典型创建 Kali Linux 虚拟机
  4. 走迷宫(信息学奥赛一本通-T1252)
  5. 空格分隔输出(信息学奥赛一本通-T1026)
  6. 红黑树结构完整实现与详解
  7. linux suse 安装redis,suse 安装redis(示例代码)
  8. C++导入导出动态库
  9. linux 串口 vmin vtime ,Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用
  10. mariadb mysql同步_MySQL(Mariadb)主从同步基础