前言

git是我们日常用的比较多的版本管理工具,在强大的IDEA支持下,git中很多操作都变得很方便,所以这篇文章就专门来介绍一下基于IDEA的关于git的一些常见操作的使用方式。

环境准备

为此我们不妨在gitee上创建一个实验项目。

idea用github克隆的项目为什么resource不会变色_java

点击创建之后,将仓库名称命名为idea-git,项目设置为私有,完成这些设置之后点击创建即可。

idea用github克隆的项目为什么resource不会变色_github_02

为了方便后续项目的演示,我们在这里顺手把readme初始化一下

idea用github克隆的项目为什么resource不会变色_svn_03

自此我们的项目就准备好了。

idea用github克隆的项目为什么resource不会变色_git_04

常规操作

克隆项目到本地

我们日常将项目clone到本地可能都是通过图形化工具将项目clone到本地

idea用github克隆的项目为什么resource不会变色_项目管理_05

其实IDEA也有办法将项目clone到本地,如下所示,通过导航栏的vcs选择checkout from version control,然后点击git。

idea用github克隆的项目为什么resource不会变色_git_06

将从gitee上复制的仓库地址粘贴到url上,点击clone,这时候IDEA就会自动将项目clone到对应的文件夹下。

idea用github克隆的项目为什么resource不会变色_svn_07

注意这里我们项目还是个空项目,所以暂时不将其创建为项目,所以这里选择no。

idea用github克隆的项目为什么resource不会变色_项目管理_08

初始化项目并提交代码到远程仓库

我们到spring官网创建一个基础的spring boot项目,然后将代码复制到gitee克隆下来的项目中。

idea用github克隆的项目为什么resource不会变色_java_09

完成这些步骤之后,我们再通过idea将这个项目打开。可以看到一堆红色的文件,说明这些文件目前还没有被git受控。

idea用github克隆的项目为什么resource不会变色_java_10

此时我们点击IDEA右上角的commit键将需要提交的文件勾选提交到本地仓库。

idea用github克隆的项目为什么resource不会变色_svn_11

这里笔者为了方便直接勾选所有文件。然后直接点击右下角的push。

idea用github克隆的项目为什么resource不会变色_git_12

如果IDEA弹出这样的输出就说明代码提交到本地仓库成功了。

idea用github克隆的项目为什么resource不会变色_项目管理_13

然后我们就可以通过push键将本地仓库的代码提交到远程仓库。注意IDEA默认这里是没有push键的,如果读者希望push键出现在右上角可以参考笔者的这篇文章:在IDEA中配置Git的Push键

idea用github克隆的项目为什么resource不会变色_git_14

此时我们到gitee查看仓库,可以看到我们刚刚的提交记录了。

idea用github克隆的项目为什么resource不会变色_java_15

从远程仓库拉取代码

为了演示从本地拉取远程仓库的更新,笔者这里直接在gitee上直接完成仓库的修改。我们直接在项目中点击readme.md这个文件。

idea用github克隆的项目为什么resource不会变色_svn_16

然后点击编辑进行文件修改操作。

idea用github克隆的项目为什么resource不会变色_github_17

我们将内容进行一番操作

idea用github克隆的项目为什么resource不会变色_git_18

然后添加提交信息并将修改保存

idea用github克隆的项目为什么resource不会变色_项目管理_19

可以看到这里修改生效了,然后我们就可以通过IDEA拉取这个改动了。

idea用github克隆的项目为什么resource不会变色_java_20

这里我们介绍两种拉取更新的操作,第一种就是直接点击pull键进行拉取。它会将默认的分支的改动直接拉取到本地,这种方式默认分支情况下比较推荐。

idea用github克隆的项目为什么resource不会变色_github_21

这里笔者演示一下第二种,如果仓库中有多分支的情况,我们希望本地仓库拉取指定分支的代码那么就需要使用第二种方式。

首先对准项目右键点击git找到pull选项,如下图

idea用github克隆的项目为什么resource不会变色_svn_22

此时就会弹出所有的远程分支,因为我们这里只有一个默认的master,所以我们直接默认master点击pull即可

idea用github克隆的项目为什么resource不会变色_java_23

可以看到我们成功的拉取到远程代码的修改了。

idea用github克隆的项目为什么resource不会变色_java_24

基于IDEA解决提交时的文件冲突

有时候我们在本地修改某个文件的时候,远程的文件已经被人修改了,这种情况就会导致提交时会出现冲突,git就会要求我们解决冲突后才能提交。

idea用github克隆的项目为什么resource不会变色_java_25

我们不妨模拟一下这种情况,首先在gitee上将readme改为bbb,模拟开发人1修改了代码。

idea用github克隆的项目为什么resource不会变色_项目管理_26

修改提交信息,保存这个修改操作。

idea用github克隆的项目为什么resource不会变色_github_27

然后我们本地将文件内容修改为ccc,尝试push到远程仓库

idea用github克隆的项目为什么resource不会变色_java_28

这里我们直接选择commit and push将文件提交上去。

idea用github克隆的项目为什么resource不会变色_github_29

提交过程中IDEA报提示说远程分支拒绝接受修改,因为远程仓库有了最新的修改,所以我们需要在本地将远程仓库的修改合并到本地代码中,所以我们点击merge进行合并

idea用github克隆的项目为什么resource不会变色_java_30

然后IDEA就会弹出产生冲突的文件,这里有3种合并方式:

  1. 将冲突文件内容覆盖为我们的本地文件。
  2. 将冲突文件的内容改为远程仓库的内容。
  3. 手动合并。

所以我们选择第3个选项,直接点击merge。

idea用github克隆的项目为什么resource不会变色_github_31

可以看到面板分为3栏,左边的我们的文件,中间我们本地修改前的内容,右边为远程仓库修改的值。

idea用github克隆的项目为什么resource不会变色_java_32

我们希望保留远程仓库的修改,所以我们先点击右边的箭头,保住其他人的修改。

idea用github克隆的项目为什么resource不会变色_git_33

然后再点击左边的箭头,将我们的修改放到下一行。

idea用github克隆的项目为什么resource不会变色_github_34

最终修改结果如下,点击apply完成代码合并。

idea用github克隆的项目为什么resource不会变色_github_35

最后点击push将代码提交

idea用github克隆的项目为什么resource不会变色_svn_36

到gitee上查看修改成功与否,可以看到我们将冲突解决并将自己的代码提交了。

idea用github克隆的项目为什么resource不会变色_svn_37

取消文件版本控制

有时候IDEA会自动将某些文件受控到版本控制中,如下所示。

idea用github克隆的项目为什么resource不会变色_github_38

如果我们不希望某些文件受控的话,可以对着文件键入CTRL+alt+z然后就会弹出下面的对话框,我们选择rollback,即可将文件取消受控。

idea用github克隆的项目为什么resource不会变色_svn_39

最终文件就会变成这样。

查看git仓库的提交历史

我们希望在IDEA中可以看到关于当前项目中所有的修改历史,那么我们可以通过导航栏找到version control或者用快捷键alt+9将版本控制历史记录调出来。

idea用github克隆的项目为什么resource不会变色_svn_40

可以看到IDEA最下方此时就会输出提交的日志,我们在这里就可以看到我们的所有操作了。

idea用github克隆的项目为什么resource不会变色_java_41

将多次提交合并成一个提交

有时候我们为了修改一个bug进行了多次commit,如下图所示,我们希望将这些修改合并成一次commit,我们完全可以通过IDEA实现这个操作。

idea用github克隆的项目为什么resource不会变色_git_42

操作方式很简单,我们找到需要合并的最早一个提交,点击下图所示选项

idea用github克隆的项目为什么resource不会变色_svn_43

将第一条设置为pick,其余的修改都设置为squash,点击start rebasing。

idea用github克隆的项目为什么resource不会变色_svn_44

键入合并的信息,点击resume rebasing

idea用github克隆的项目为什么resource不会变色_项目管理_45

自此,修改合并成功了。

idea用github克隆的项目为什么resource不会变色_git_46

代码回退操作

回退工作区代码

我们在开发过程改动了某个文件,对这个文件进行各种增增改改,我们希望将文件还原回修改前的样子,在IDEA的操作下,这种工作区代码还原非常方便。

我们可以在local change中看到本次修改的文件。可以看到我们修改了readme.md。

idea用github克隆的项目为什么resource不会变色_java_47

我们不妨对准readme.md键入ctrl+d

idea用github克隆的项目为什么resource不会变色_项目管理_48

然后我们就会看到变化的内容了,然后我们直接点击箭头即可将代码还原回去。

idea用github克隆的项目为什么resource不会变色_java_49

可以看到工作区的代码直接还原了。

idea用github克隆的项目为什么resource不会变色_项目管理_50

本地代码回退到历史版本

有时候我们希望本地代码可以回退到之前修改的某个版本查看代码的改动记录,例如我们希望回退以看到最早初始化的代码,但是我们不希望这个回退后可以还原,对远程仓库没有任何影响。

idea用github克隆的项目为什么resource不会变色_svn_51

做法很简单,对准需要回退的修改中右键选择下图所示选项。

idea用github克隆的项目为什么resource不会变色_svn_52

选择hard选项,这个选项会将工作区和缓存区代码全部重置。

idea用github克隆的项目为什么resource不会变色_github_53

可以看到回退后我们就可以看到这个修改时所有代码的样子了。

idea用github克隆的项目为什么resource不会变色_git_54

远程代码回退到历史版本

还是接上一个例子,我们希望将回退的代码提交到远程仓库中,很简单,我们直接对着这个修改右键选择revert即可。

idea用github克隆的项目为什么resource不会变色_github_55

然后点击commit and push即可

idea用github克隆的项目为什么resource不会变色_java_56

可以看到,代码直接被还原了。

idea用github克隆的项目为什么resource不会变色_svn_57

分支管理

本地创建分支并推送到远程仓库

我们使用git开发的模式都是通过分支修改合并到主干的方式完成的,所以我们也希望可以在idea实现创建一个名为dev的分支并推送到远程仓库。

操作方式很简单,点击右下角的git:master,然后选择new branch

idea用github克隆的项目为什么resource不会变色_svn_58

然后将分支名设置为dev

idea用github克隆的项目为什么resource不会变色_github_59

此时我们的分支dev就创建完成了,并且分支也切换到dev上。

idea用github克隆的项目为什么resource不会变色_github_60

然后我们直接点击push即可将dev分支提交到远程仓库上。

idea用github克隆的项目为什么resource不会变色_git_61

IDEA输出这段文字就说明提交完成了。

idea用github克隆的项目为什么resource不会变色_项目管理_62

查看仓库可以看到dev分支已经出现了。

idea用github克隆的项目为什么resource不会变色_svn_63

本地切换分支

我们上文将分支切换到dev,我们希望本地分支切换为master进行开发。操作方式也很简单,点击右下角,选择master。

idea用github克隆的项目为什么resource不会变色_svn_64

然后选择checkout即可

idea用github克隆的项目为什么resource不会变色_项目管理_65

将分支代码合并到主干上

我们希望dev分支修改的记录可以合并到主干master上。基于IDEA我们也可以很简单的完成这个操作。
为了演示这个操作,我们首先修改dev分支,将readme修改并提交。

idea用github克隆的项目为什么resource不会变色_java_66

然后回到master分支,右键项目选择pull

idea用github克隆的项目为什么resource不会变色_svn_67

选择dev点击pull,可以看到master分支得到的dev关于readme的修改。

idea用github克隆的项目为什么resource不会变色_java_68

然后我们将这个修改push到远程仓库即可

idea用github克隆的项目为什么resource不会变色_项目管理_69

将分支2的代码合并到分支1上

我们在分支2修改了代码,希望将这个修改合并到dev1上。对此我们也可以用IDEA实现这个操作,首先我们创建一个dev2的分支对readme进行修改并提交到远程仓库。

idea用github克隆的项目为什么resource不会变色_项目管理_70

然后将分支切换到dev,选中远程仓库分支dev2选择merge info current将分支2的代码合并到分支1上。

idea用github克隆的项目为什么resource不会变色_java_71

然后我们的dev分支就会得到dev2的修改结果,我们将其push到远程仓库即可。

idea用github克隆的项目为什么resource不会变色_git_72

删除本地分支

例如我们想删除本地分支dev2,我们退出这个分支,然后右下角git找到这个分支点击选择delete即可。

idea用github克隆的项目为什么resource不会变色_git_73

删除远程分支

删除远程分支的方式和本地分支差不多,这里就不赘述了。

idea用github克隆的项目为什么resource不会变色_github_74

可以看到选择delete之后,远程仓库关于dev2的信息都消失了。

idea用github克隆的项目为什么resource不会变色_github_75