在上一篇文章中已经对使用GitHub进行代码托管的相关操作进行了讲解,下面正式进入到IDEA集成Git,并通过图形化界面进行Git相关操作的讲解。
1、在顶部工具栏中找到File → Settings
2、找到Version Control → Git,点击"…"按钮配置Git
3、配置好Git后,点击"Test"按钮进行测试,出现Git版本提示框,则表示Git配置成功
1.1、登录GitHub,点击右上角的"+",选择New repository
,创建一个新的仓库
1.2、进入到新建仓库页面,填写仓库的相关信息,点击Create repository
按钮,创建远程仓库
1.3、创建好远程仓库之后,会进入到GitHub的操作提示页面,同时页面也会给出远程库的地址(有Https和SSH两种类型的地址)
2.1、使用IDEA开发工具创建一个名为springboot-project
的项目,并添加一些内容(注意:项目名称可以与远程仓库名称不一致,这里只是为了好区分,所以才命名一致)
2.2、对名为springboot-project
的项目进行Git版本控制,在顶部工具栏中找到VCS (Version Control System) → Import into Version Control,选择Create Git Repository (即相当于git init
命令进行初始化)
2.3、选择名为springboot-project
的项目对其进行初始化,注意:此时的文件颜色显示的是白色
2.4、可以看到左边红色方框中的文件颜色已经变成了红色
,表示这些文件尚未被Git管理,同时,图标一栏中多出了Git
相关操作图标
2.5、编辑.gitignore
文件,配置需要忽略的文件 (配置完需要忽略的文件后,需要手动敲击Ctrl + s进行保存才能生效
),创建的springboot项目是自带.gitignore
文件,但是其他项目是没有.gitignore
文件的,例如:maven项目,需要我们安装.ignore插件
可能很多人不理解为什么要忽略这些特定文件,因为这些特定文件是IDE开发工具 (如: IntelliJ IDEA 和 Eclipse) 为了管理我们创建的项目而自动生成的维护文件,例如:IntelliJ IDEA开发工具的.idea/文件夹
和*.iml文件
,然而这些文件和我们的代码并没有直接关系,同时不同版本的IDE开发工具所生成的相关项目的特定文件是有可能不相同的,如果这些特定文件加入到版本控制中,由于开发团队中很难保证大家都使用相同的IDE开发工具,就会导致在推送项目时需要为这些文件解决冲突 或者 克隆项目到本地时项目无法运行
### IntelliJ IDEA ###
.idea/
*.iws
*.iml
*.ipr
### Eclipse ###
.classpath
.project
.settings/
### Maven ###
.mvn/
mvnw
mvnw.cmd
HELP.md
target/
2.6、可以看到左边红色方框中的特定文件颜色已经变成了灰色
,需要注意的是:.gitignore
文件只对尚未被Git管理的文件起作用,如果已经提交到了暂存区,即使文件颜色为灰色,也是能够提交的,这时需要使用git rm --cached filename
命令撤销已添加到暂存区的文件即可
2.7、选择名为springboot-project
的项目,鼠标右键选择Git → Add,将项目中的所有文件 (被忽略的特定文件是不会添加到暂存区的) 添加到暂存区 (即相当于git add .
命令将所有文件添加到暂存区),也可以鼠标右键单个文件,单独添加到暂存区
2.8、可以看到左边红色方框中的文件颜色已经变成了绿色
,表示这些文件添加到了暂存区但还未提交到本地仓库
2.9、选择名为springboot-project
的项目,鼠标右键选择Git → Commit Diretoty,将项目中的所有文件添加到本地仓库 (即相当于git commit -m "提交信息"
命令将所有文件添加到本地仓库),也可以鼠标右键单个文件,单独添加到本地仓库
2.11、提交之后,会弹出一个Code Analysis窗口,继续点击"Commit"按钮
2.12、可以看到左边红色方框中的文件颜色又恢复到原来的白色
3.1、选择名为springboot-project
的项目,鼠标右键选择Git → Show History (即相当于git log
命令查看提交历史记录)
3.2、可以看到 作者: lemon 、提交时间: 2019/12/29 17:08、提交记录: 首次使用IDEA进行Git提交项目 以及 当前所在分支为master分支
4.1、选择名为springboot-project
的项目,鼠标右键选择Git → Repository,选择Remotes (即相当于git remote add 别名 远程仓库地址
命令添加远程仓库地址别名映射)
4.3、点击"+",添加远程仓库地址别名映射
4.4、输入远程仓库地址,点击"OK"按钮
5.1、选择名为springboot-project
的项目,鼠标右键选择Git → Repository,选择Push (即相当于git push 远程仓库地址别名 本地仓库分支名
命令推送项目至远程仓库)
5.3、执行推送后,需要输入GitHub的用户名和密码进行验证,才能推送至远程仓库
5.4、查看GitHub远程仓库,此时项目已经成功推送至远程仓库
1.1、在顶部工具栏中找到VCS (Version Control System) → Checkout from Version Control,选择Git (即相当于git clone 远程仓库地址
命令克隆远程仓库项目)
1.3、输入远程仓库地址,并选择项目的存放路径,最后点击"Clone"按钮
1.4、克隆远程仓库项目之后,会弹出一个Checkout From Version Control的提示框,点击"Yes"按钮
1.5、可以看到,我们已经从远程仓库中把项目给克隆下来了
1.1、对名为springboot-project
的项目中的IndexController
新增一个名为add
的方法 (细心的小伙伴可以发现,此时修改之后的文件颜色为蓝色
,表示文件被修改)
1.2、由于我们只修改了IndexController
,所以我们可以单独对IndexController
文件进行git add
和git commit
提交操作
1.3、在提交时,我们可以看到IndexController
文件修改前与修改后之间的差异
1.4、推送至远程仓库,可以看到此时我们已经成功把修改的内容推送到远程仓库中
1.5、切换到我们之前克隆的项目中,可以看到此时的IndexController
文件还处于我们之前未添加add
方法的状态
1.6、选择名为springboot-project
的项目,鼠标右键选择Git → Repository,选择Pull (即相当于git pull 远程仓库地址别名 远程仓库分支名
命令拉取远程仓库修改的内容)
1.7、点击"Pull"按钮,拉取远程仓库修改的内容
1.8、可以看到此时的IndexController
文件已经处于添加add
方法之后的状态了
1.1、选择名为springboot-project
的项目,鼠标右键选择Git → Repository,选择Branches (即相当于git checkout -b 新分支名
命令创建并切换分支)
1.2、选择New Branch,创建分支
1.3、输入新的分支名,同时会切换到该分支下
1.4、对名为springboot-project
的项目中的IndexController
新增一个名为select
的方法 (此时修改之后的文件颜色为蓝色
,表示有文件被修改)
1.5、将名为feature
的新分支推送至远程仓库,可以看到此时远程仓库多了一个feature
分支
1.7、将feature
分支合并到master
分支,由于我们需要把feature
分支合并到master
分支,所有我们需要先把分支切换到master
分支下,再进行合并操作,同样选择springboot-project
项目鼠标右键选择Git → Repository,选择Branches
1.8、选择master → Checkout,切换到master
分支下 (即相当于git checkout master
命令切换分支)
1.9、提示已经切换到master
分支下,同时可以看到此时master
分支下的IndexController
文件还处于之前未添加select
方法的状态
1.10、将feature
分支合并到master
分支,选择名为springboot-project
的项目,鼠标右键选择Git → Repository,选择Merge Changes (即相当于git merge feature
命令合并分支)
1.11、可以看到Branches to merge里有feature
本地分支和remotes/origin/feature
远程分支来提供合并操作,而remotes/origin/feature
远程分支是由feature
本地分支推送至远程仓库的,所以feature
本地分支和remotes/origin/feature
远程分支中的内容是相同的,在合并时,选择两个分支中的任意一个都是可以的,这里我选择feature
分支,然后填写提交信息,点击"Merge"按钮,进行合并操作
1.12、可以看到此时已经将feature
分支下新增的内容成功合并到master
分支
1.1、将上一步合并到master
分支下的内容推送至远程仓库,由于上一步只对IndexController
文件做了修改和添加到本地仓库,所以我们只需要单独对IndexController
文件进行git push
操作即可
1.2、查看GitHub远程仓库,此时合并的内容已经成功推送至远程仓库
1.3、由克隆的springboot-project
项目切换到原先的springboot-project
项目,可以看到此时master
分支下的IndexController
文件还处于之前未添加select
方法的状态
1.4、此时我们不拉取远程仓库最新的修改内容,直接修改IndexController
文件,并对IndexController
文件进行git add
和git commit
提交操作 (前面已经有对文件进行git add
和git commit
提交操作的图片展示,这里不再给出)
1.5、提交至本地仓库后,我们对上一步修改的IndexController
文件进行推送至远程仓库
1.6、由于我们不是基于远程仓库最新内容进行修改和推送操作,所以导致冲突产生,点击"Merge"按钮对冲突进行合并操作
1.7、可以看到Files Merged with Conflicts窗口中显示了存在冲突的文件和三种解决方案:
Accept Yours
:表示采用你的代码(即:本地的代码),覆盖掉远程仓库的代码Accept Theirs
:表示采用别人的代码(即:远程仓库的代码),覆盖掉本地的代码Merge
:表示手动合并冲突1.8、这里我们选择Merge
手动合并冲突,一般在实际开发中,需要跟修改了同一个文件的同事商量如何解决冲突
1.9、可以看到如下标注的三个红色方框,左边表示本地的代码,中间表示合并冲突的代码,右边表示远程仓库的代码
1.10、同时在左下角也提供了两种解决方案,Accept Left 和 Accept Right
Accept Left
:相当于前面的Accept Yours
Accept Right
:相当于前面的Accept Theirs
1.11、这里我们直接手动解决冲突,将需要的内容点击>>
或者<<
合并到中间的Result
代码区域中,不需要的内容点击X
即可
需要注意的是
:在点击"Apply"按钮应用之前,我们需要将所有带有X>>
或者<
Result
代码区域中
1.12、将所有带有X>>
或者<
1.13、可以看到此时已经将本地代码和远程代码进行了合并
1.14、由于前面冲突的存在,导致推送至远程仓库失败,所以在解决完冲突之后,我们需要再次对合并冲突之后的IndexController
文件进行git push
操作,重新提交到远程仓库
1.14、查看GitHub远程仓库,此时合并冲突的内容已经成功推送至远程仓库
建议
:在每次编写或者修改代码之前,我们都先去使用IDEA进行Pull
操作,拉取一下远程仓库最新的修改内容,即保证在编写或者修改代码前,本地仓库的版本与远程仓库的版本保持一致,这样能够在很大程度上降低冲突产生的概率
1.1、可以看到此时我们处于解决冲突之后的状态,此时有index、add、update和select
方法
1.2、选择名为springboot-project
的项目,鼠标右键选择Git → Show History (即相当于git log
命令查看提交历史记录)
1.3、选择我们需要回滚到某个状态的历史记录 (这里我选择首次使用IDEA进行Git提交项目的历史记录),鼠标右键选择Copy Revision Number,复制其历史记录的版本编号
1.4、选择名为springboot-project
的项目,鼠标右键选择Git → Repository,选择Reset HEAD (即相当于git reset
命令版本回滚)
1.5、选择Reset Type (这里我选择为Hard
),同时将之前复制的历史记录的版本编号粘贴至To Commit输入框,最后点击"Reset"按钮,进行版本回退操作,其中Reset Type有三个选项,其区别如下所示:
soft
:仅仅只会回退本地仓库
中的内容(即:git commit
提交的内容),不会影响到暂存区
和 工作区
中的内容。如果回退之后还要提交,可以直接使用git commit
命令提交到本地仓库
即可。
mixed
:此为默认方式
,不带任何参数的git reset
,默认就是这种方式,它会回退本地仓库
中的内容(即:git commit
提交的内容) 和 暂存区
中的内容(即:git add
提交的内容),不会影响到工作区
中的内容。
hard
:本地仓库
、暂存区
和 工作区
全部回退到指定版本的内容。
1.6、可以看到,此时我们就已经回退到原来最开始提交的状态了
Git入门与使用系列文章列表:
Git入门与使用 (一) Git介绍与安装
Git入门与使用 (二) Git相关命令的介绍与使用
Git入门与使用 (三) 使用GitHub进行代码托管的相关操作
Git入门与使用 (四) IDEA集成Git,并通过图形化界面进行Git相关操作
Git入门与使用 (五) GitLab介绍与安装
如果有遇到不懂或者有问题时,可以扫描下方二维码,欢迎进群交流与分享,希望能够跟大家交流学习!