idea intellij使用——git
idea intellij这款IDE使用广泛,同时越来越多的开发项目使用gitLab,因此快速掌握idea intellij中的git功能有利于提高开发效率。
简述前奏:对于开发者而言,首先从git项目中将项目下载下来(git clone 或者 直接网页下载压缩包),然后根据需求修改代码,这时我们就需要使用git工具了。
1、基本流程(熟悉流程)
1.1、打开commit changes
右键最左边的工程文件》点击git》选择Commit Directory(如何你选择的是git一个文件,这里出现的是Commit File),如下图所示。
- 勾选需要gti提交的文件,不需要的不要勾选!!
- 提交信息(Commit Message必填)
- 红色框中左边的是修改前的版本文件,右边是你增加后的版本文件(这个需要点击之前勾选的文件才可以看见)
- 确认无误后,点击黄色框中的Commit。
如果No errors,那么点击上图的Commit。
1.2、打开Push Commits
与1.1一样,右键最左边的工程文件》点击git》repository》push
- 选择1.1中提交的commits
- 右边出现需要提交的文件信息,如果有遗漏的文件,那么先将这次提交,没有提交的文件再来步骤1.1与1.2。如果多出了文件,那么会很麻烦,提供一个解决方法吧,将你需要提供的文件一个一个的右键git进行步骤1.1与1.2。
- 确认无误后,点击push。
- 显示push successful就成功了,你可以去gitLab上查看你的提交了。
2、 进阶流程(没那么简单)
很多时候我们在push的时候(1.2中的第3步),并不是显示成功,而是如下图所示,push远程仓库被拒绝。这时,你不要点击Merge进行强制提交,你需要点击右上角的×,
2.1、pull最新的版本:
右键最左边的工程文件》点击git》repository》pull。如下图所示,点击pull按钮将最新的版本下载下来。
2.2、如果显示下图所示的pull信息则表明成功。
2.3、修正git树
不是每个人都是直接pull成功,往往会出现以下信息——Git Pull Failed。
2.3.1、回退信息——修改的数据少时可以使用
回退的数据量少时,那么你可以点击View them,进行回退信息,如下图所示。
上图告诉你需要回退的文件有两个(蓝颜色的),双击左键两下进入其中一个文件,如下图所示,左边是本地git中的某一版本,右边是你目前的代码,为了能够将远程仓库的代码pull下来,你需要将自己的代码给替换掉,即点击下图中间的白色双箭头。当所有文件(这里是两个)都没有白色箭头时,即表明本地git仓库与远程git仓库同步了,可以pull文件了,即再次重复pull步骤,将文件拉下来。
2.3.2、回退信息(续)
有些时候会遇见如下图的情况,橘色框中有很多不重要的文件,对于工程没有太大的影响,这时你可以点击黄色框中的按钮(revert)。
将下图黄色框中的所有文件勾选,点击Revert按钮即可。
当下图框中没有任何文件时,表明已经可以pull远程仓库了。
2.3.3 提交本地修改信息,再进行合并
当需要回退的数据量较大时,需要使用另一种方法——先在本地提交一次,然后再远程pull。
上图是已经合并之后再提交的截图,当你在本地提交后,会出现两条没有交点的线,这时,当你pull远程仓库时,会出现一个小框,里面有冲突的文件,依次双击点入逐一修改,完成后,再commit,最后push就完成了。
2.4 总结
因此最直接的步骤:
无论啥情况,先pull,后push
3、终极办法
无论如果都有解决不了的莫名问题!
这时,另外创建一个文件,git clone 项目,将自己修改的文件复制过去,再push,绝对没问题!
4、理解git
经过上面的一顿操作,至少你已经可以将项目push进远程工程项目中了,不过这时我们只知其然不知其所以然,那么接下来理解git,这样你就可以理解为什么需要这样做了
首先我们需要明白两个概念:本地仓库与远程仓库。可以这么说,我们遇见的一切问题都是这**两个仓库不同步**造成的。
4.1、基本流程,一次push就成功
正如图4.1所示,本地从远程仓库clone项目到了本地,那么本地就有了一个与远程完全同步的仓库,当我们修改了代码后,首先需要在本地提交(commit),这样就新生成了一个版本,自然而然,当你push远程仓库时,远程仓库版本新生成一个与本地一样的版本,与本地保持同步了,OK,push成功!
4.2、进阶过程,需要2次push
事物一般不会一帆风顺,总是在曲折中前进
一个项目不可能只有你一个人在提交,总是有其他人在提交,因此当你在本地生成版本三时,远程仓库有了版本二,这时你去提交将会造成冲突!(具体例子,其他人修改了fileA,你也修改了fileA,那么远程仓库怎么知道最终保存谁的版本,除非你强制提交,将其他人的信息覆盖掉,这样你是不是理解了图2.1中,点击×,而不是点击Merge按钮了)。
这时,你需要从远程仓库中pull文件,将版本二与版本三合并成新的版本四,再push版本四。
证明:
如图4.2与图4.3所示,这是提交成功后的查看历史版本号,本地仓库与远程仓库一模一样!
当本地提交后,生成了图4.2的第二行绿框的版本——b4361d0,当然push失败,所以从远程仓库pull文件下来,合并后生成第一行的版本——6b7431a95。同时,本地仓库也会新添加第三行的版本(pull之前是没有的),最后再push,成功后本地与远程仓库就完全一样了。