IDEA内置git功能的使用教程
IDEA被公认为是最好的java开发工具,除了在代码助手、代码提示、重构工具等方面有比较好的支持,还在各类版本控制工具(git、tfs、svn、github等)功能上可以说是超强的。近期一个 Java项目使用了IDEA作为开发工具,也是摸索了一段时间,下边就对IDEA内置Git功能的使用做的一个整理。
使用前的准备
- 先要安装 git 的管理工具到本地,关于git的下载安装可以看这里;
- 配置好环境变量;
- 通过终端命令“git version”可以查看git工具的版本:

- 对git有基本的理解,这个你可以去网上查找git的教程或说明,很多的。简单来说Git是一个开源的分布式版本控制系统,可以对项目版本进行管理。

Git简单原理图
- 选择git服务器
- 国内的代码托管平台(码云)地址:https://gitee.com/
- 国外git服务器(github)地址:https://github.com/
- 自己搭建的git服务器(成本很低)
IDEA中使用git的功能
(克隆、提交、推送、分支、冲突解决、历史查看、版本回退、版本对比)
1. 在IEDA里配置git执行程序的路径
- 安装完Git工具后第一步需要在IEDA里配置git执行程序的路径,选择 【File】→ 【Settings】→ 【Vwesion Control】→ 【Git】,选择git可执行文件的路径(正确配置的情况下,点击Test会弹出git版本的提示)

配置git可执行文件路径
2. 在远程git服务器上创建仓库
- 在github上创建一个空白的远程仓库,用于存储开发过程中的代码

创建远程仓库
- 将生成的git仓库的地址复制下来

3. 使用IDEA中Git工具从远程仓库克隆项目
- 打开IDEA,选择菜单上的 VCS(版本控制工具),选择【Checkout from Version Control】→【Git】

- 然后将上边复制的 git仓库地址粘贴到URL中,选择一个本地一个空的目录作为工作区,如图,然后点击 Clone

- 克隆完成之后,IDEA会提示导入项目,这边选择创建一个新的项目作为演示使用

- 创建一个简单的 Java web应用程序

- 此时打开项目文件夹可以看到下图:

4. 添加文件到暂存区
- 开始程序员造天地了,我们在项目里每添加一个文件,IDEA就会询问我们是否将文件添加到Git,选择【Add】将文件添加进git暂存区,此时git就可以对其文件进行追踪。

- 那如果在上面的提示中不小心选中了No,可以通过另一种方式添加到git暂存区。如图,点击文件右键 → 【Git】→ 【Add】

5. 提交到本地仓库
- 完成代码的开发后,需要将修改和添加的代码或文件提交到本地仓库上(文件已添加至暂存区,受git追踪),选择【VCS】→ 【Commit】进行如下图图示操作:

提交
6. 推送到远程仓库
- 把代码推送到远程服务器上,点击项目右键 →【Git】→【 Repositry 】→【Push】

推送
- 打开推送提交的窗口,点击【Push】

- 在推的过程中,会弹出输入git服务器的用户名和密码的窗口,正确输入即可,一次输入后后续继续提交推送可不用再输入了

登录Github
- 推送成功后,在 github 服务器上就会看到新推送的项目文件

7. 分支开发
- 划重点了,使用分支管理是有一定意义的(Git分支的作用),简单来说分支可以让你在主线(master分支)之外进行代码的修改提交,同时又不会影响主线代码。假如,现在项目开发完成,需发布1.0版本,然后添加一个1.0的分支。

打开分支面板
- 打开git分支的面板,点击【New Branch】

创建新分支
- 输入分支名称,点击【OK】,创建了1.0的分支

添加1.0分支
- 然后切换回主干分支,进行2.0版本的开发

切换主分支
- 在主干分支上添加了用户的新的功能,然后提交和推送到服务器上

- 切换到1.0分支,进行Bug修复,同样别忘了提交并推送到远程1.0的分支上

- 在github仓库上可以看到1.0和master两个分支

8. 分支合并
- 在1.0分支上完成BUG修改后,将主分支(master分支)与1.0分支进行合并。切换到master分支,然后进行下图的操作:

打开合并分支面板
- 选择合并的分支(remote/orgin/1.0-提交到远程服务器上的1.0版本),填写合并的消息,点击【Merge】。

合并分支
- 合并后,就把 master分支推上服务器。然后再从 mater 中创建2.0分支,那么 master 就是3.0分支了

创建2.0分支
- 远程仓库里就有了三个版本

9. 冲突解决
- 冲突的场景
- 多个分支合并的时候(下边演示);
- 在一个分支上拉取或推送远程文件时;
- 在2.0分支上给项目中的某个类添加一些代码,比如添加个方法,然后提交推送到远程服务器上

2.0分支上的修改
- 然后在mater分支上同样修改这个类,添加或修改一些代码

mater分支上修改
- 在mater分支上对2.0的分支进行合并,合并失败,因为代码冲突了

合并2.0版本
- 在冲突的面板上可以选择一个解决方案来解决冲突,前两个都是进行的覆盖操作,这里选择【Merge】进行手动合并

冲突解决方案
- 弹出代码合并的对照窗口,一共有三个屏,左右两侧分别是你和服务器的代码,并且高亮显示代码不同的部分,带有箭头和叉号,通过点击 ">>" 将两边冲突的代码添加到中间的合并区域中去,点击 "×" 则放弃那一段代码,待所有冲突处理完成后merge就成功了。

冲突合并
10. 提交历史记录查看
- 查看文件或项目提交的历史记录:点击文件右键菜单 → 【Git】→ 【Show History】

- IDEA默认展示你当前所选择文件的提交历史,左侧是文件的历史提交列表,右侧是每次提交与上一版本的比较

- 点击左侧的【 log 】,则可以显示整个团队每个人的提交记录;在选中每一次的记录以后,会弹出每次提交的所有文件(对其中弹出的文件右键,可选择对比还原等一些操作,小伙伴们都可以试一试)


11. 对比不同版本
- 1.对单个代码文件的比较,点击文件,右键弹出的菜单选项 → 【Git 】→ 【compare with...】,几个比较方式如下:
- Compare with the Same Repository Version 当前文件与服务器同一分支上该文件版本的内容进行比较
- Compare with 当前文件与文件各次提交的版本做比较
- Compare with Branch 当前文件与其他分支上该文件版本进行比较

与不同版本进行比较

12. 回退上一个版本
- 当你误删了一段代码(方法),但又提交了,可以使用下面Get的操作来进行回退。打开文件的历史提交记录(在上边的第10点),选择回退的版本 → 【Get】,然后你就可以看到你的代码又回来了~

