版权
IDEA中内置的GIT功能已经比较全面,对于同时使用两款软件的同学,其实已无需安装其它软件,本文旨在尽可全面的介绍IDEA中操作git,对此已经很熟悉或是习惯直接操作命令的同学可以略过。
几点说明:
1、本文会尽可能减少原理说明和直接使用命令的情况。
2、本文会略过安装配置相关内容。
3、使用版本:window版IntelliJ IDEA 2017.1.5,其他版本可能会略有差异。
4、文章将分为三部分内容,一git简要说明,二高频操作(基本可以覆盖日常工作的90%),三其他操作(方便需要的时候查看)。
一、git简介
二、常用操作
1.下载项目(git clone)
2. 提交(git commit)
3. 推送远端(git push)
4. 分支(git checkout)
5. 日志面板(git log)
6. 回退/撤销(revert/reset)
7. 合并分支(git merge)
8. 总结
三、其他操作
1. fetch vs pull(git fetch)
2. 标签管理(git tag)
3. 临时存储(git stash)
4. 整理提交(git rebase)
5. 部分合并(cherry pick)
6. 创建版本库
7. 快捷键
8. 总结
一、git简介
这一部分介绍几个必要的git概念,只做基本了解,方便对于一些操作的理解,有关git原理性的内容请自行搜索。
1、工作区(Working Directory):通常来说就是我们的代码工程目录
2、暂存区(staging area):暂存区就是一个文件(工作区.git/index),当我们修改文件,并执行add之后,修改就被放入暂存区。
3、本地/远程仓库(Repository):这个很好理解,当我们把暂存区中的文件commit之后,就会生成一条提交,push之后就会把修改同步到远端。
4、git分支:分支的目的是让我们可以并行的进行开发,比如当我们开发新功能时为了不影响这期间其他功能正常上线,一般就新建一个分支。
二、常用操作
1、下载项目(git clone)
位置:VCS——Checkout from Version Control——git
2、提交(git commit)
位置:VCS/项目目录鼠标右键——git——Commit DIrectory
说明:idea中commit操作不需要手动执行add操作。git菜单入口有2个,在项目上鼠标右键,或者菜单栏VCS中都有git选项,下文不再对此说明。一般使用中会直接操作快捷键,关于快捷键最后说明。
3、推送远端(git push)
位置:VCS——git——Push
说明:一般情况commit操作会连带跳出push弹窗,图中标注的选项,在下文对应场景中说明。需要注意的是除非特殊情况,不要使用强制提交。
4、分支(git checkout)
位置:idea窗口右下角
说明:idea中集成了分支的创建,切换、删除等操作,右下角的入口使用十分方便,推送分支到远端,需要push操作。
5、日志面板(git log)
位置:窗口左下角Version Control
说明:顾名思义查看git提交日志,图中标出的位置可以通过分支、提交用户等进行筛选,对应右侧窗口显示选中提交中包含的内容,可点开查看代码,图中另一个红色标记reset命令下一步会说到。
6、回退/撤销(revert/git reset)
revert
位置:项目右键——git——Revert
说明:idea中的revert 与 git revert 命令含义并不一样,此处仅说明idea中revert操作。
revert相当于把未进行commit操作的更改撤销,如图所示
reset
位置: 如5日志面板图中标示 Reset
说明:简单说明下几个选项的含义,
soft只会回退本地版本库(其实是修改head指向),操作后可以重新再提交,在撤销commit的操作时比较有用。
mixed(默认选项):相比soft又多回退了一个暂存区,实际使用没什么差别。
hard:全部回退,本地代码会丢失,虽然有方式找回,但还是要慎用,一定要清楚自己再做什么操作。
此外一旦代码push到远程,强烈不推荐再执行reset——push force命令组合。
7、合并分支(git merge)
位置:VCS——git——Merge Changes
合并:
说明:merge操作一般来说选项都是默认即可,如图中简单解释了几个选项的意思,
几个选项虽然是复选,但实际使用中往往需要几个配合勾选才能达到效果,具体信息这里不做展开说明。
冲突
说明:merge如果发生冲突,idea会弹出下图界面,根据实际情况选择处理方式即可
放弃合并
说明:放弃合并虽然可以用上文提提到的reset的方式解决,但reset这个操作还是要格外小心,在这里并不推荐使用,推荐终端直接使用命令。
如图:git merge --abort
8、总结
以上就是git常用操作,使用很简单,但基本涵盖了多数的工作场景,一般开发流程是,在主干上新建分支,在分支上开发,commit代码,每次push之前要先pull代码,开发完成合并到主干,流程结束
三、其他操作
1、获取代码(git fetch)
位置:VCS-git-fetch
说明:pull操作相当于fetch+merge,由于pull操作会隐藏一些合并细节,所以有推荐fetch+merge的说法。使用时首先执行fetch,然后在手动执行merge远程对应分支即可
2、维护版本-标签操作(git tag)
创建一个tag
位置:VCS-git-tag(在最新一次提交新建tag),日志面板——选中一个commit右键——new tag(在当前commit上新建tag),
说明:一般每次发版之后,会在主干分支新建一个tag,方便记录、回滚、查看等功能。
推送tag到远端,需要注意在push操作时勾选“push tag”,push一节中已经标注。
查看所有tag
idea中目前没有发现能直接查看tags的位置,可以通过控制台,直接输入git tag查看
checkout对应tag的代码
位置:窗口右下角创建分支处——Checkout Tag or …
说明:checkout后会产生一个临时分支,在此基础上再操作新建分支即可checkout对应tag
3、暂时存储代码(git stash)
位置:VCS——git——stash
说明:stash意思是暂时存储已经更改但未提交的代码,这样工作空间将变成干净的,需要时unstash再恢复回来,使用场景比如需要临时处理一些其他的功能,但正在开发的功能还不太适合commit,会用到这个功能。
4、获得清晰的commit记录(git rebase)
位置:VCS——git——rebase
说明:首先说明rebase是一个危险的操作,除非在足够熟悉他的情况下,慎用。笔者在实际工作中对这个命令也很少操作,这里只做简单介绍,rebase直译是变基,其功能和merge相识,不同点在于它产生的commit记录更加清晰干净,切记永远不要rebase一个已经push的分支,会产生很多混乱。
5、合并分支上的部分提交(cherry pick)
位置:日志面板——右键——cherry-pick
说明:有些时候需要合并分支上的部分commit,这时候就可以用cherry-pick
6、创建版本库(git init…)
位置:如图
说明:创建git仓库,可以本地创建,在push到对应远端即可,不做过多说明
7、关于快捷键
由于每个版本的快捷键有一些差异,在此就不罗列具体的快捷键了,对应操作的快捷键可以通过图中方式查看或设置,也可以去搜索下通用的快捷键相关的文章。
8、总结
除了上面提到的图形界面操作,git还有更加丰富的命令行操作方式,比如合并多次commit,git reflog、git bisect这种命令,只不过日常工作极少用到,如果感兴趣可以继续学习下git命令,最后欢迎沟通指教。