Git入门与使用 (四) IDEA集成Git,并通过图形化界面进行Git相关操作


一、前言

  在上一篇文章中已经对使用GitHub进行代码托管的相关操作进行了讲解,下面正式进入到IDEA集成Git,并通过图形化界面进行Git相关操作的讲解。



二、IDEA集成Git

1、在顶部工具栏中找到File → Settings


2、找到Version Control → Git,点击"…"按钮配置Git


3、配置好Git后,点击"Test"按钮进行测试,出现Git版本提示框,则表示Git配置成功




三、使用IDEA推送项目至远程仓库

1、创建远程仓库

1.1、登录GitHub,点击右上角的"+",选择New repository,创建一个新的仓库

1.2、进入到新建仓库页面,填写仓库的相关信息,点击Create repository按钮,创建远程仓库

1.3、创建好远程仓库之后,会进入到GitHub的操作提示页面,同时页面也会给出远程库的地址(有Https和SSH两种类型的地址)


2、创建项目并添加到本地仓库

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.10、填写提交的信息,点击"Commit"按钮进行提交

2.11、提交之后,会弹出一个Code Analysis窗口,继续点击"Commit"按钮

2.12、可以看到左边红色方框中的文件颜色又恢复到原来的白色


3、查看项目提交历史记录

3.1、选择名为springboot-project的项目,鼠标右键选择Git → Show History (即相当于git log命令查看提交历史记录)

3.2、可以看到 作者: lemon 、提交时间: 2019/12/29 17:08、提交记录: 首次使用IDEA进行Git提交项目 以及 当前所在分支为master分支


4、添加远程仓库地址别名映射

4.1、选择名为springboot-project的项目,鼠标右键选择Git → Repository,选择Remotes (即相当于git remote add 别名 远程仓库地址命令添加远程仓库地址别名映射)

4.2、点击复制按钮,复制远程仓库地址

4.3、点击"+",添加远程仓库地址别名映射

4.4、输入远程仓库地址,点击"OK"按钮



5、推送项目至远程仓库

5.1、选择名为springboot-project的项目,鼠标右键选择Git → Repository,选择Push (即相当于git push 远程仓库地址别名 本地仓库分支名命令推送项目至远程仓库)

5.2、点击"Push"按钮,将项目推送至远程仓库

5.3、执行推送后,需要输入GitHub的用户名和密码进行验证,才能推送至远程仓库

5.4、查看GitHub远程仓库,此时项目已经成功推送至远程仓库




四、使用IDEA克隆远程仓库项目

1.1、在顶部工具栏中找到VCS (Version Control System) → Checkout from Version Control,选择Git (即相当于git clone 远程仓库地址命令克隆远程仓库项目)

1.2、复制远程仓库地址

1.3、输入远程仓库地址,并选择项目的存放路径,最后点击"Clone"按钮

1.4、克隆远程仓库项目之后,会弹出一个Checkout From Version Control的提示框,点击"Yes"按钮

1.5、可以看到,我们已经从远程仓库中把项目给克隆下来了




五、使用IDEA拉取远程仓库修改的内容

1.1、对名为springboot-project的项目中的IndexController新增一个名为add的方法 (细心的小伙伴可以发现,此时修改之后的文件颜色为蓝色,表示文件被修改)

1.2、由于我们只修改了IndexController,所以我们可以单独对IndexController文件进行git addgit 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方法之后的状态了




六、使用IDEA进行分支操作

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.6、切换到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分支




七、使用IDEA解决协同开发时产生的冲突

1.1、将上一步合并到master分支下的内容推送至远程仓库,由于上一步只对IndexController文件做了修改和添加到本地仓库,所以我们只需要单独对IndexController文件进行git push操作即可

1.2、查看GitHub远程仓库,此时合并的内容已经成功推送至远程仓库

1.3、由克隆的springboot-project项目切换到原先的springboot-project项目,可以看到此时master分支下的IndexController文件还处于之前未添加select方法的状态

1.4、此时我们不拉取远程仓库最新的修改内容,直接修改IndexController文件,并对IndexController文件进行git addgit commit提交操作 (前面已经有对文件进行git addgit 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>>或者<<X符号的代码都处理完,这里我选择将本地和远程仓库的代码都合并到Result代码区域中

1.12、将所有带有X>>或者<<X符号的代码都处理完之后,点击"Apply"按钮

1.13、可以看到此时已经将本地代码和远程代码进行了合并

1.14、由于前面冲突的存在,导致推送至远程仓库失败,所以在解决完冲突之后,我们需要再次对合并冲突之后的IndexController文件进行git push操作,重新提交到远程仓库

1.14、查看GitHub远程仓库,此时合并冲突的内容已经成功推送至远程仓库

建议:在每次编写或者修改代码之前,我们都先去使用IDEA进行Pull操作,拉取一下远程仓库最新的修改内容,即保证在编写或者修改代码前,本地仓库的版本与远程仓库的版本保持一致,这样能够在很大程度上降低冲突产生的概率



八、使用IDEA进行版本的前进与回退

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介绍与安装




                   如果有遇到不懂或者有问题时,可以扫描下方二维码,欢迎进群交流与分享,希望能够跟大家交流学习!

发布了76 篇原创文章 · 获赞 253 · 访问量 43万+

猜你喜欢

转载自blog.csdn.net/qq_39135287/article/details/103746369
今日推荐