Skip to content

git在IDEA中的使用

IDEA 中配置Git

选择File→Settings打开设置窗口,找到Version Control下的Git选项,然后配置Git路径。如果Git安装在默认路径下,IDEA可以自动找到。选择路径后点击右侧Test,出现版本号提示即可[由于IDEA版本问题,提示的方式可能不一致]。

alt text

将本地项目推送到远程仓库

创建项目远程仓库

以码云为例,创建一个test仓库 alt text

初始化本地仓库

创建完远程仓库之后,还要通过 IDEA 开发工具来初始化一个本地仓库,相比于 Git Bash 这样的命令行来说,IDEA 非常方便可以进行可视化的 Git 管理

如下图所示,在工具栏中的 VCS,鼠标光标移动到 Import Version Control -> Create Git Repository,点击 Create Git Repository。 alt text

点击 Create Git Repository 之后,弹出一个小窗口,选择要初始化的本地项目,初始化之后,发现idea文件名颜色发生了变化,说明对这些文件进行了版本管理。

连接远程仓库

初始化本地仓库,并且创建完远程仓库项目之后,下一步就需要将本地和远程进行对接交互了。那么在交互之前,肯定是要进行建立连接的,就像打电话之前先呼号建立通话连接一样,之后再进行信息交换。

工具栏 VCS -> Git -> Remotes,点击 Remotes 添加远程仓库连接信息。 alt text

添加 Remote,输入 Name 和 URL,这里的 Name 如果没有特殊设置就是按照默认的 origin 来,也是 IDEA 自动补全的,建议在创建远程项目的时候不要轻易修改,这里的 URL 就是在远程项目信息中可以看到。 之后弹出一个登录的窗口,输入自己在码云注册的账号和密码即可,然后点击 Log In.验证通过之后,Git Remotes 中便出现了远程项目的 Name 和 URL,最后点击 OK,这样就正式连接远程仓库项目了 alt text

提交代码到本地仓库

在工具栏中,点击绿色的图标,表示 commit 到本地仓库。

  • 弹出一个 Commit Changes 窗口,然后,选择我们的项目 ,会自动选中项目中的有变化的文件,第一次 commit 整个项目,会把所有项目文件进行 commit.
  • 一般地,在 commit 操作之前,需要仔细查看每个文件细节内容,避免因为鼠标键盘无意按压动作导致对代码文件带来非本意的修改,这是要养成的习惯。
  • 在 commit Message 中填入提交记录说明,最后点击右下角的 commit,提交项目到本地仓库 alt text
  • 如果项目存在 warnings,即使项目没有错误可以正常运行,IDEA 还是会给出提示,询问是否要 review 一下,这里我直接忽略,直接 Commit 提交即可。

推送到远程仓库

推送项目到远程仓库,按照下图操作即可。在 push 之前需要对每个文件内容进行检查,避免因为鼠标键盘无意按压动作导致对代码文件带来非本意的修改。推送成功之后,可以在 IDEA 中看到提示信息,也可以在远程仓库中查看结果。 alt text

基础操作

代码提交到缓存区

拉取代码后开始工作,比如这里我们修改了一些类中的代码,又新增了一些类。但是这个红色的要引起注意 alt text

右键项目,选择Git→ Add 将文件信息加到暂存区。 alt text

可以发现刚刚未提交的文件由红色变成了绿色,说明文件加入了暂存区

暂存区代码提交到本地库

右键项目,选择Git→ Commit;或者是点击菜单栏Git旁边绿色对号 alt text

本地仓库代码提交到远程仓库

右键选择Git→ Repository→ Push 或者快捷键 Ctrl+Shift+K alt text

撤销本地提交

如果我们再提交到本地仓库后,推送到远程仓库之前,发现提交的代码有错误,此时可以撤销本地提交:在日志中右键点击需要撤销的记录,选择undo Commit即可。 alt text

会弹出个框,选择默认的即可;操作完可以发现提交到本地提交的记录已经撤销了,文件的状态回到了暂存区。 alt text

撤销远程提交

方案一:Revert

我们修改了代码,并且推送到了远程仓库(如下图所示): alt text

这个时候发现推送错了,可以在Version Control的Log中本地分支中选中想撤销的记录,选中Revert Commit: alt text

但是这个时候只是撤回本地,不会影响到远程仓库,所以我们还需要做一次推送: alt text

注意: 退回之后会有一条回退的数据记录,而且回退改次提交,这次的提交内容在本地会直接消失。

方案二:Reset

此时查看日志,如果我们想把第一条Commit撤销,那么也就意味着回到第二条Commit的位置 alt text

右键第二条记录,选择 Reset Current Branch to here alt text

然后会弹框出现一下内容如图所示 alt text

  • Soft:暂存区【Add后】和你本地改动代码都在,新增的文件你会发现它是绿色
  • Mixed:本地改动代码在,暂存区没有了,你刚刚新增的文件是红色了
  • Hard:在选择的回退点之后的所有更改都会被丢弃(包括未提交和已提交的文件)。这种方式会删除回退点之后的所有文件,影响巨大,除非真的有此需要,否则不推荐使用。
  • Keep:在选择的回退点之后的所有已提交的更改会被丢弃,但未提交的文件会被完整地保存下来。

如果需要回退分支操作,可以选择选择 Soft或Mixed后,还需要强推提交一下就可以了。

**注意:**当回退到上一次提交记录时,那么需要回退的目标提交中的文件会在本地中,并且是未跟踪或者是本地仓库的状态;当你会退到上上次或者更早的提交记录上时,🆗,前几次的记录也会在本地中存在,并且时未提交到远程的状态。

revert 与 reset的区别

两者都可以完成git的回滚操作,但是还是有很多的区别的,最大的区别就是

  • reset 会把 commit 记录直接抹除,而 revert 会在原有基础上新添加一条记录,是单独的一条回滚commit
  • reset要慎用,revert要更加安全一些
  • reset更适合操作本地的commit记录,如果是远程的commit,那么会涉及到协作者的git记录同步的问题,比较棘手
  • revert则可以用于本地和远程

更新代码操作

一般在将本地代码提交到远程仓库时,最好先更新下远程仓库的代码到本地,从而避免不必要的冲突。【养成良好的习惯,每天到公司就先更新代码】

通过IDEA的右上角更新图标,或者通过快捷键 Ctrl + T 进行拉取: alt text

alt text

更新时有两种方式:

  • Merge incoming changes into the current brance
  • Rebase the current branch on top of incoming changes

当前情况: alt text

Merge: 最后会形成一个新的 commit 提交 alt text

Rebase: 最后会把你的提交作为父节点延续下去 alt text

暂时修改

适用场景:

  • 代码没有commit,但是需要pull代码
  • 代码没有commit,但是需要切分支

alt text

这样就可以把本地的改动暂存起来;

alt text

pull完代码后再通过Unstash Changes把藏起来的代码释放出来: alt text

分支操作

选择分支

实际项目中会存在很多分支,那我们需要拉取正确的分支来进行开发,在IDEA的右下角可以选择,默认是master分支,想要哪个分支直接选中右键Checkout即可。

alt text

新建分支

在实际项目开发过程中,当遇到一个需求时,我们并不会直接就在主分支(master)上面进行开发,而是在主分支的基础上单独创建一个新的分支进行开发,当新建分支的代码经过代码评审以及测试验证通过,确认准确无误之后才会将新增的代码合并到主分支master,这才是一个规范的git操作流程。

alt text

此时新建的分支只是在本地仓库中,需要在该分支上提交push操作,将分支提交到远程,这是远程仓库才会佑该分支。

比较分支

分支比较就是对比不同分支之间的差异。例如,需要比较当前所在分支与 master 分支之间的差异,可以选择需要对比的 master 分支,然后单击 “Compare with Current”,在弹出的窗口可以看到具体的差异,具体的差异是两个分支之间的不同的提交记录。

alt text

合并分支

合并分支是将 A 分支合并到 B 分支,A 分支称为源分支,B 分支称为目标分支。

合并分支规则:master 分支是我们部署在生产环境服务器的分支,master 分支的代码往往是最新的代码。通常我们有一个新的需求时不会直接在 master 分支进行实施编码,而是基于 master 分支拉出一个新的分支,在拉出来的新分支进行实施编码。只有当新分支的代码经过 code review 以及测试联调通过之后,才会将代码合并到 master 分支等待部署上线。合并分支的流程务必规范:先将 master 分支合并到新分支,之后再将新分支合并到 master 分支。 这样做的原因是因为一个 项目通常由多个人负责,可能在你开发的过程中,有新的代码已经合并到 master 分支并且部署上线了,但是你拉的新分支上的代码依旧是 master 分支的老代 码。所以需要先更新你拉的新分支上的代码,将其他人更新的代码合并过来,保证你拉的新分支代码与最新的 master 分支代码一致(以免因为丢失最新修改的 代码而造成线上事故)之后再将你的新拉的分支代码合并到 master 分支上面。

1、切换分支到a1分支上;将master分支代码先合并到a1分支上,并提交到远程仓库,第二章图中红色框的部分就是master中合并到a1的代码记录alt text

alt text

2、然后切换分支到将master分支上,将a1分支代码合并到master分支上,并提交到远程仓库,第二张图是合并之后master分支的提交记录alt text

alt text

分支删除

在删除分支之前,建议先切换到(Checkout)其他分支,例如,Checkout到master分支,当然这并不强制,只是为了方便删除分支而已。

1、切换到master分支,然后右键需要删除的b1分支,点击删除

alt text

2、Restore 是还原删除的分支,Delete Tracked Branch 是并删除远程分支 alt text

解决代码冲突

出现场景:合并分支时,远程分支版本领先于本地版本,并且远程代码和本地的代码有冲突,需要进行冲突合并

alt text

Accpet Yours 是选择自己的全部代码,Accpet Theire 是全部选择远程仓库的代码,Merge是自定义合并代码 alt text

常见的快捷键

快捷键作用
Ctrl+Alt+A将文件添加到暂存区
Ctrl+K提交变化到本地仓库
Ctrl+Shift+K将本地仓库变化推送到远程仓库
Ctrl+T将远程仓库的代码合并更新到本地
Ctrl+Alt+Z代码回滚

Last updated: