一、创建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漫长的等待。
好处四:指定和若干不同的远端代码仓库进行交互