
本文介绍使用IDEA控制Git操作
关联本地Git客户端
首先要根据系统环境安装Git客户端
然后使用File –> Settings –> Version Control –> Git配置客户端安装目录

创建本地仓库
根据项目要求创建自己的项目
然后使用VCS –> Import into Version Control –> Create Git Repository…在项目上创建Git仓库

创建成功后会在项目文件夹内出现.git 目录
克隆远程仓库
我们可以通过两种方式克隆Git项目。
第一种,通过其他工具(如:Git Bash)将Git项目克隆到本地,然后使用IDEA直接打开项目。File –> Open…
第二种,使用IDEA从版本库直接导入项目。File –> New –> Project from version control –> Git
我们需要填写Git版本库URL、存储目录

提交代码
我们如果希望文件被Git管理那我们就要将文件进行add操作。
在IDEA中我们只要对某个文件设置一次add,之后就不用在手动进行add了。
文件右键 –> Git –> Add

提交代码时我们使用 文件右键 –> Git –> Commit Directory…进行提交

分支管理
分支管理主要集中在IDEA的右下角操作区。

主菜单功能

New Branch : 从当前分支新建分支。上图就是从master分支创建新的分支。
Checkout Tag or Revision : 使用分支、标签或提交编码,检出一个临时分支。
Local Branches : 本地分支列表。同时显示对应了那个远程分支。
Remote Branches : 远程分支列表。
本地分支菜单

Checkout : 检出这个分支。
Checkout As… : 使用这个分支创建新的分支并检出到新分支。
Compare With… : 使用当前分支与所选分支做代码提交比较。
Rebase Current onto Selected: 在当前分支做变基。(将所选分支提交加入到当前分支)
Checkout with Rebase : 检出所选分支并做变基。(将当前分支提交加入到所选分支)
Merge into Current: 合并到当前分支(将所选分支合并到当前分支)
Rname:修改所选分支名称
Delete :删除所选分支
远程分支菜单

Checkout As… : 使用远程分支创建一个新的本地分支,并检出这个分支。
Compare With : 使用当前分支与所选分支做代码提交比较。
Rebase Current onto Selected : 在当前分支做变基。(将所选分支提交加入到当前分支)
Merge into Current: 合并分支(将当前分支与所选分支进行合并)
Delete :删除所选分支
本地分支推送到远程仓库

检出要推送的分支,然后项目右键 –> Git –> Repository –> push
push的时候会有new标签提示会在远程新建分支

标签管理
检出要打标签的分支,然后Git –> Repository –> Tag…

本地标签推送到远程仓库
项目右键 –> Git –> Repository –> push

然后选中底部的Push Tags。我们可以选择推送所有标签还是当前分支标签。

代码拉取、推送
代码拉取项目右键 –> Git –> Repository –> pull

代码推送项目右键 –> Git –> Repository –> push

变基操作
普通变基
选择分支执行变基操作。这里需要注意当前分支为补丁分支,选中的分支为基底分支。也就是说当前分支提交会添加在选中分支提交之后。

合并提交(交互式变基)
在代码没有pull前我们可以在本地分支进行提交的合并。这样会使得远程分支不去关心本地开发过程日志,而使得远程日志干净整洁。
变基前log

找到要合并的第一条log,然后右键选择Interactively Rebase from Here…进行交互式变基
(此选项低版本IDEA可能没有请更新到2018版以上)

除题一条外其他全部选择squash随前面的提交一并提交

编辑交互式变基提交说明。默认显示合并的所有提交的内容,我们也可以添加和修改内容。

变基后日志

查看提交日志
log页签

查看控制台
console页签。在控制台中我们可以看到实际执行的git命令,可以帮助我们查找问题。

储藏工作区
有时我们需要经正在编写的代码临时储藏,然后去修改一些bug,完成bug修改后进行恢复。这时我们可以使用代码储藏。
项目右键 –> Git –> Repository –> Stash Changes

填写储藏名称

这是我们会发现修改的代码不见了。
之后我们要恢复储藏区的内容
项目右键 –> Git –> Repository –> UnStash Changes

选择要恢复的暂存名称并恢复暂存

这时我们发现修改的代码又回来了
提交回退
我们如果想要放弃最近一次提交的内容可以使用提交回退
回退前log

项目右键 –> Git –> Repository –> Reset HEAD…

执行回退(HEAD后面加几个^就回退几次提交)

执行后日志

管理远程仓库地址
项目右键 –> Git –> Repository –> Reotes…


提交应用(挑樱桃)
我们可以使用提交应用的方式,将一次提交应用在其他分支上。
首先我们要切换至需要应用提交的分支上。
然后在log界面找到那次提交,右键 –> Cherry-Pick
