转自:https://cloud.tencent.com/developer/news/40670
主要讲解如何在IntelliJ IDEA开发工具中使用Git图形化工具来提交代码。
Git是一个开源免费的、分布式的版本管理工具(以前都是使用SVN),功能更强大,越来越多的公司更倾向于使用Git来做项目的版本控制。IntelliJ IDEA开发工具提供了对Git的图形化操作,使得那些不懂或者记不住git命令的开发人员可以很方便地使用Git。下面我们就通过一个视频来讲解如何使用IDEA提供的Git图形化的操作来向Git服务器提交代码、修改代码、删除代码以及获取最新代码。
本节视频课程主要涉及到6个知识点:
(1)将github上的代码导入到IDEA开发工具中;
(2)创建并提交代码;
(3)提交删除;
(4)提交修改;
(5)撤销修改;
(6)获取最新代码。
下面是录制的视频课程,时长约15分钟,建议在wifi环境下观看:
不方便观看视频的网友,也可以阅读下面的文章,和视频内容基本一致:
01
—
从Github导入代码到IDEA
Github是一个可以免费托管开源项目的网站,它就相当于一个git服务器(一般企业不会把自己的代码放到Github上,因为Github只能创建开源项目,创建私有的项目是要收费的,所以,一般企业会使用开源的gitlab作为git服务器,因为它允许创建私有项目,而且还可以做一些权限配置,比如指定哪些员工可以访问哪些项目)。
本文是以github为例来进行讲解,我已经在github网站上面创建了一个名为xbs-springboot-maven-jar的maven工程,大家可以从这个地址获取代码进行练习:https://github.com/xuebus/xbs-springboot-maven-jar
在将github上的代码导入到IDEA开发工具之前,需要在IDEA中事先配置好git和github,大家可以从IntelliJ IDEA开发工具中配置git和github这篇文章中学习如何进行配置以及如何将github上的代码clone到IDEA开发工具中,这里不再赘述。
02
—
创建并提交代码
使用git将新创建的文件提交到git服务器(这里指github)的基本流程:
(1)创建文件;
(2)执行add命令(快捷键Ctrl+Alt+A);
对于新创建的文件,如果文件的名称是红色的,说明还没有执行过add命令,执行过add命令的文件名称都是绿色的。
(3)执行commit命令;
执行过commit命令之后,文件的名称会变成白色。
(4)执行push命令(这一步将会真正将代码同步到git服务器);
将工程导入到IDEA开发工具之后,在工程名称(或任意目录及文件)上面点击鼠标右键会看到Git菜单:

这样在鼠标右键中就可以看到Git菜单了。
在工程的controller目录下面创建一个名为TestController的java文件:

点击OK之后,可能会弹出如下窗口,询问你是否将新创建的这个文件交给git:
如果你选择了“YES”,那么该文件的名称将是绿色的,表示该文件已经执行了git的add命令:

如果你选择了“NO”,那么该文件的名称将是红色的,表示该文件还没有交给git,需要你手动执行下git的add命令:

在TestController文件上点击鼠标右键,通过如下方式执行git的add命令之后,文件名称就会变成绿色:

文件名称变绿之后,就可以使用commit命令来提交文件了,在文件名称上或者在文件内部任意位置点击鼠标右键,选择Git-->Commit File:

在弹出的窗口中输入描述信息,否则提交不了:

然后点击Commit下拉菜单,选择Commit and Push:

下面会弹出一个再次确认的窗口,双击右侧窗口中的文件名称可以打开预览窗口,查看代码文件中代码变动情况,确定要提交之后,点击下方的Push按钮,这个命令将会真正将代码同步更新到github服务器上:

正在Push代码到Github服务器:
右下角弹出如下提示,代表Push成功了:
到github网站上面去看一下吧,确实多了一个TestController.java文件:

同时注意观察提交之成功之后,在IDEA中,TestController文件名称的颜色会变成白色(正常的颜色):

03
—
删除代码
在IDEA中删除文件并提交的基本流程:
(1)选中要删除的文件,右键选择delete;
(2)执行commit命令;
(3)执行push命令;
备注:在IDEA中,commit命令和push命令可以分别单独执行,也可以合并成一个Commit and Push命令执行;
选中要删除的文件,右键选择delete(或者按键盘上的delete键),对文件进行删除操作:
然后在项目名称上面点击鼠标右键(不要在文件上点击右键),选择Git-->Commit File来提交删除操作,在弹出的如下窗口中输入描述信息:

在右下角的Commit下拉菜单中选择Commit and Push(提交并同步到git服务器),这一步将真正从git服务器上删除文件:

再次确认,点击右下角的Push按钮:

提示push成功之后,到github服务器上看一下吧,TestController.java文件已经没有了:
04
—
修改代码
测试对文件的修改操作并提交,以RedisController.java文件为例,将person方法中的如下代码删除:

注意观察,RedisController.java文件名称的颜色会变成蓝色,表示该文件中的内容被修改了:
在RedisController.java文件名称上(或者在文件内部)点击鼠标右键,选择Git-->Commit File,进行提交:

点击Commit and Push按钮:

再次进行确认:

提示push成功之后,到github网站上面看一下吧:
查看github上RedisController.java文件中的person方法的代码,验证下修改是否成功:

05
—
撤销代码
有的时候,我们对代码做了一些修改,想撤销所做的修改,怎么办呢?使用Ctrl+Z固然可以撤销,但是撤销的步骤是有限的。我们可以使用Git的撤销命令进行全部撤销,或者有选择性地进行撤销。
假如我删除了RedisController.java类中get()方法中的如下一句代码:
如果想撤销刚才的操作,可以在被修改的文件名称上面点击鼠标右键,选择Git-->Revert(或者使用快捷键 Ctrl + Alt + Z):

在弹出的窗口中,可以勾选要撤销的文件(如果你对多个文件做了修改,在下面的窗口中会被列出来,我们双击文件名可以打开预览窗口来查询具体做了哪些修改操作,在预览窗口中还可以对代码进行编辑),点击Revert按钮:

这样代码就被撤销了。
06
—
获取最新代码
在企业中,通常都是团队协作进行开发,每个人对代码做了修改并提交之后,我们需要从git服务器上面获取最新的代码,该如何操作呢?
这里我们就模拟一下这种场景,登录github网站,在github服务器上对RedisController.java文件做一些修改操作,比如删除一个名为del()的方法:

删除del方法之后,在下方输入描述信息,并点击提交按钮使修改生效:

然后回到IDEA开发工具,可以在项目名称上面点击鼠标右键,选择Git-->Repository-->Pull,这样就可以从github服务器上更新最新的代码了:

除了上面这种方式之外,还可以点击工具栏中的如下按钮(快捷键 Ctrl + T)来获取最新代码:
如果弹出如下窗口,点击OK即可:

直到右下角弹出更新成功的提示信息:

在IDEA中打开RedisController.java文件,经过确认,del()方法的确被删除了。