git是一个优秀的分布式版本控制系统。但是当集成到IDEA中,每一个功能又该怎么操作呢?这篇文件涵盖了IDEA中常见的Git功能的操作,每一步都有图示,强烈建议收藏。
进入到Git官网的下载地址:https://git-scm.com/downloads
选择和自己操作系统相符的版本。
然后,按照提示安装完成。
最后一定要记得把git安装目录下的bin目录添加到windows系统的环境变量中。
安装Git步骤可以参考Git安装教程(windows)
在IDEA中依次点击file->setting->version control -> Git
首先在step1的位置填上你安装的git中的git.exe路径,然后点击step2处的test测试一下。最后点击step3的ok按钮,然后就大功告成了!
先在Github上创建一个空的仓库。
为新仓库填写名称,并且勾选初始化readme.md文件。
接下来点击create repository按钮,然后就会跳转到下面的仓库页面。
点击clone or download按钮可以看到该新建项目的ssh地址,把这个地址复制一下,一会儿会用到。
第一次使用IDEA中的Git时,需要开启版本控制系统VCS->Enable version control…。
接下来打开IDEA,依次打开VCS->Git->clone,如下图所示。
然后输入在Github上的仓库的url,也就是上面复制的那个url地址,可以点击tes测试一下。Directory是最后克隆到本地后仓库所在的上层目录,可以根据需要进行调整。最后点击clone按钮。
接下来就可以看到clone成功了,在本地可以看到readme.md内容了。
接下来我们看一下怎么把本地已有项目上传到Github中。
首先在IDEA中创建一个普通的java项目File->new->project。然后点击next。
和clone项目一样要开启版本控制系统。具体步骤参看上面第2小节的步骤。
接下来,依次点击VCS->Import into Version Control -> Share Project on Github。
接下来可以写一些描述,然后点击share。
接下来就是确认要推送的文件了。
好了,现在就已经把本地IDEA创建的项目推送到github上了。如果过程中需要输入你的github用户名和密码,那么按照提示输入就行,大体步骤就是上面这些流程。
下载我们把gitdemo_2项目中的Main.java文件做一些修改。
修改前:
然后就是要提交修改了,非常的简单。依次点击CVS->git->commit file
然后就是确认修改的内容,强烈建议一定要提交的备注信息。
好了,现在就完成了提交修改。不过得注意,提交的修改是到本地git版本库了,并没有推送到github上。所以接下来就是推送修改到远程库github上了。
推送修改的过程也很简单,依次点击VCS->Git->Push
接下来确认要推送的修改。
然后等一会儿就好了。最后可以到对应的github仓库上验证一下是否推送成功了。
查看版本历史很简单,首先把鼠标在项目名称上点击一下,然后选择Git->Show History。
接下来就可以看到版本历史信息了。
可能会遇到这种情况,就是对程序进行了修改,但是现在退回到之前的版本上。
现在我们创造一个这种情况。
首先对Main文件进行两次修改,每一次修改都提交,并且推送到远程Github仓库上。
两次修改后的main文件内容如下:
接下来进行第三次修改,但是这次只进行提交,不进行推送。修改后的Main的内容如下。
可以在git的log中看到远程origin/master分支指向的是第二次修改,本地的master分支指向的是第三次修改了。
现在第三次还么有进行提交,所以只需要简单的操作就可以回退到版本了。
首先在log中复制要退回到的旧版本的版本号。我这儿选择是第二次修改的提交,你也可以选择其他的,按时实际情况来。
接下来依次点击VCS->Git->Reset HEAD
然后输入刚才复制的旧版本的版本号,类型一定要选择hard,最后点击reset按钮。
接下来可以看见Main文件的内容退回到指定的旧版本了,并且Git的log也做了相应的回退。
可以看到远程origin/master和本地master都执行了第二次修改的提交。
上面一种情况是还没有把修改提交到远程仓库的退回,是比较好修改的。下面要介绍的远程仓库版本退回就没有那么容易了。
接下来还是构造一下场景,接着上面的程序版本,首选对Main进行第三次修改,提交修改并推送到远程Github仓库上。下面是修改后的结果。
注意看Main文件内容和Git的log信息。
首先还是复制第二次修改的版本号。
接下来可以看到Main文件的内容确实回退了,本地master也指向了第二次提交,但是远程仓库origin/master依然指向的是第三次提交,这会出现问题的。
接下来我们要把本地“版本退回”这个修改提交到远程仓库上去。
可以看到Github拒绝了我们的推送。其原因应该是远程仓库的仓库快照(commit)是提前我们本地的,所以不行。那现在怎么解决呢?
解决方法还是有的,首先点击Cancel。然后我们复制刚才回退之前的最新版本的版本号,也就是第三次提交的版本号。
然后再进行本地版本退回,不过这次要选择Mixed类型,把我们上边复制的退回之前的最新版本号粘贴进去。
然后点击Reset按钮,可以看到文件内容没变,但是本地master和远程origin/master都指向第三次修改。
可以看到推送成功了:
然后我们再看看Github上的内容:
可以看到Github上的Main文件内容也被退回到旧版本了。
依次点击CVS->Git->pull就可以进行拉取远程库内容了。
第一步,依次选择CVS->Git->branches
然后选择新建分支。
可以看到左下角显示已经切换到新建的dev分支了。
啊???为什么Github上没有新建的dev分支?原因是我们再本地新建dev分支这个修改还没有提交并推送到远程仓库。
好了,现在我们再本地进行提交修改并提交到远程仓库。
CVS->Git->commit files,然后确认信息。
然后推送到远程仓库,CVS->Git->push。
然后我们再看Github上的分支信息,就可以看见dev分支了 ^_^
为了演示合并分支,我们现在dev分支上进行一些修改。
接下来切换到master分支。
依次点击CVS->Git->branches,然后做下面的选择。
可以看到文件内容已经切换回master分支,并且左下角也显示现在已经在master分支。
然后依次点击CVS->Git->branches,选择要合并到当前分支(master)上的分支,并且选择Merge into current。
注意:
最后提交到远程仓库, CVS->Git->push。
可以看到master分支的内容发生改变,并且本地、远程的master分支和dev分支都指向最新的修改。
在5.2中已经演示出如何从dev分支切换回master分支了,CVS->Git->branches,然后选择master分支->checkout。
首先依次点击CVS->Git->branches
然后点击对应的分支删除,比如dev分支->delete。
可以点击一下左下角的git分支信息,看看还有没有dev分支了。
可以看到本地分支中已经没有dev了。但是远程仓库分支中怎么还有dev?那是因为我们还没有删除远程的dev分支呢。
依次点击CVS->Git->branches,然后选择远程的dev分支进行删除。
可以发现现在已经IDEA已经显示没有远程仓库的dev分支了。
让我们再看看Github上的情况。