Eclipse插件EGit的安装配置使用新手指南实用方法教程
http://tampermonkeya.com/ 2022/4/10 23:16:21 作者:tampermonkey
Git 作为近来最流行的分布式版本控制软件来说应用的十分广泛。EGit就是一款Eclipse上的Git插件。小编今天给大家介绍的是Eclipse插件EGit的安装配置使用方法。 一、安装EGIT插件 1、打开eclipse,点击上方的:Help -> Install New Software, 2、在打开的界面里,点击右上方的“Add…”,然后在弹出框的“Name”中填入“egit”,“Location”中填入“http://download.eclipse.org/egit/updates/”,最后点击OK, 3、接着点击“Work with”的下拉列表,能够看到刚才添加的下载路径, 4、找到这三个文件并且勾选,注意contact all。。。和hide items。。。这两个不要勾选。 5、找到Available Software Sites并点击, 6、注意只要勾选egit就行,其他的全部取消打钩, 7、后面就是一路next,最后安装完成egit,安装后进行重启Eclipse就可以使用git了。 二、使用EGIT前的配置 这里有个前提,就是首先电脑上必须安装有git的客户端 1、点击Preferences》Team》Git>Configuration,点击Add Entry,在弹出框里面输入key和value的值,名字的key :user.name ; value:是你的github用户名。邮箱的key:user.email ; value:你的登陆GitHub邮箱账号。 2、以后你使用git提交代码时候,eclipse会自动提取这些信息,和代码一起发送到git远程仓库。 三、新建GIT仓库 1、新建NC module project。 2、l File > Team > Share Project 选择GIT,点击Next。 3、按下图勾选后创建仓库。 4、创建仓库后,在$workspace\demo目录下的.git文件夹,就是git的仓库地址。和CVS、SVN不同,GIT不会在每一个目录下建立版本控制文件夹,仅在根目录下建立仓库。 5、同时,eclipse中的project也建立git版本控制,此时未创建分支,处于NO-HEAD状态 6、文件夹中的符号”?”表示此文件夹处于untracked状态,这样就成功创建GIT仓库。 四、配置.gitignore 1、此时我们尝试做一次提交,点击 l Team -> Commit… 2、如上图所示,Author和Committer会默认为Git配置的用户信息。下面的Files窗口中可以看到此次提交的文件,其中有非常多带有NC_HOME的文件,此时可以猜测出,在我们的project中链接的NC_HOME也被GIT默认到版本控制中了,如下图: 3、显然NC_HOME和out是不需要进行版本控制的,我们可以通过配置.gitignore来排除这两个文件夹,打开Navigator窗口,在project根目录中添加.gitignore文件,将需要排除控制的目录写入.gitignore文件中。 4、再次尝试commit,需要提交的文件已经被过滤。 5、首次提交后,会自动生成master分支。 6、然后在public中新建一个文件,可以看到图标依然是问号,处于untracked状态,即git没有对此文件进行监控。 7、通过Team -> Add to index可以将文件加入git索引,进行版本监控。 8、可以看到图标显示也有了变化(EGIT中只要Commit就可以默认将untracked的文件添加到索引再提交更新,不需要分开操作)。 9、也可以通过Team -> Untrack将文件从索引控制中排除。将此次新增的文件commit到仓库中,文件将处于unmodified状态,或者说,这就是一种staged状态 10、然后修改文件的内容,文件将处于modified状态。 五、查看历史记录 1、点击Team -> Show in history可以查看版本历史提交记录。 2、效果如图: 3、还可以选择对比模式。 4、对比效果如图: 六、远程GIT仓库 此小结的前提是已经搭建GIT服务器,并通过SSH协议连接。本文使用RHEL5.5系统下的GIT-2012-01-11,用户root/password,GIT仓库统一存放在/app/gitspace目录下。首先通过shell工具连接到服务器,建立空仓库gitdemo,此时的ssh访问地址如下,分别由协议名称、用户名、IP、端口、git仓库目录组成。ssh://root@192.168.1.101:22/app/gitspace/gitdemo1、打开GIT资源库窗口,选择克隆资源库。 2、点击后出现下图,填写后点击Next。 3、选择后点击Next。 4、将下图填写好后即可。 5、然后你就可以在Git Repositories界面看到当前分支和服务器分支。 6、现在已经把远程的GIT仓库克隆到本地,接下来需要将仓库检出为NC模块项目。点击下图按钮。 7、点击后出现下图,选择下图选项。 8、最后得到gitdemo模块项目,分支是mirror。 七、推送远程仓库 1、克隆服务器端仓库后,会在本地建立一个一样的仓库,称本地仓库。在本地进行commit操作将把更新提交到本地仓库,然后可以将服务器端的更新pull到本地仓库进行合并,最后将合并好的本地仓库push到服务器端,这样就进行了一次远程提交。 2、先提交一次到本地仓库。 3、然后push到服务器端的mirror分支,Team -> remote -> Push。 4、完成推送后,可以在服务器端mirror镜像的log中查看到此次记录。 八、解决推送冲突 多人协作开发的情况下,往服务器推送更新时难免出现冲突,所以推送之前需要解决服务器端的最新版本和本地仓库的冲突。Pull操作就是把服务器端的更新拉拢到本地仓库进行合并,解决好合并冲突后,就可以顺利push到服务器分支了。 1、假设现在Mairo兄弟在用GIT协作开发NewSuperMairoBro游戏,目前服务器端的mushroom.java文件的内容如下: 2、MairoBro克隆出代码后,Mairo哥哥做了如下修改。 3、Mairo弟弟做了如下修改。 4、然后Mairo弟弟先push代码,Mairo哥哥使用pull来合并本地仓库和远程仓库,将发行文件出现冲突,此时GIT会自动合并冲突的文件,如下图所示: 5、很明显自动合并的冲突文件不能直接使用,我们可以手动调整,右键发生冲突的文件,选择Team -> Merge Tool。第一项是将GIT自动合并过的文件和服务器端文件进行对比,第二项是用本地最新版本的文件和服务器端文件进行对比,建议用此项。 6、接下来就是熟悉的对比界面: 7、Mairo哥哥将冲突文件修改如下: 8、然后右键点击此冲突文件,选择Team -> Add to index再次将文件加入索引控制,此时文件已经不是冲突状态,并且可以进行提交并push到服务器端。 9、解决合并冲突后,Mairo弟弟只需要将服务器中合并后的版本pull到本地,就完成了一次协作开发的代码合并。从历史记录中可以看到,从mushroom开始历史进入分支,先是mushroomA的记录,然后是mushroomB的记录,最后历史分支合并。 九、Rebase和Merge的区别 Rebase和Merge操作最终的结果是一样的,但是实现原理不一样。1、从上面的MairoBro例子可以知道pull大概对历史记录进行了怎样的合并操作,其实默认pull的操作就是一个分支的merge操作,如下图重现一下:a.Mairo弟弟的提交记录如下: b.Mairo哥哥的提交记录如下: 2、首先是Mairo弟弟把更新push到服务器,这样服务器端的记录就和Mairo弟弟本地的记录是一样的,接着Mairo哥哥执行pull操作,现在分析下pull是如何操作的。 pull默认就是先把服务器端的最新记录更新到本地的Remote Tracking中对应的mirror分支,接着对Local的mirror分支和Remote Tracking的mirror分支进行merge操作。 3、Merge操作后的结果就是会新增加一个merge记录节点,如下所示: 4、从上图可以看出,mushroomA是在mushroomB之前的,这个时间关系不取决于谁先执行push,而取决于本地仓库中谁先执行commit。所以merge会按照时间顺序严格的记录每一次commit。接下来看看rebase,其实rebase也是把两个分支进行合并的操作,当Mairo弟弟push更新后,服务器端的mirror分支的历史如下: Mairo哥哥本地的历史如下: 5、现在Mairo哥哥不是执行merge操作,而是执行rebase操作,最后结果如下: 6、很明显的区别是没有出现分支的记录,而且注意到mushroomA*,请注意这个记录和mushroomA不是同一个记录,我们先分析下rebase操作下,Mairo哥哥的历史记录都做了哪些变化:a.先将当前分支的更新部分保存到临时区域,而当前分支重置到上一次pull的记录. b.然后将服务器端的更新添加到当前分支,此时当前分支和服务器端分支是一样的. c.最后将原分支的更新部分mushroomA提交到当前分支的后面,就是要在mushroomB的后面添加mushroomA的更新,当然此时更新记录已经不是之前的mushroomA了,如果出现冲突则使用对比工具解决冲突,最后记录变成mushroomA*。 7、如果Mairo哥哥提交过mushroomA1、mushroomA2、mushroomA3,那么执行rebase后会对mushroomA1、mushroomA2、mushroomA3分别顺序执行上图所示的合并,最后记录为mushroomA1*、mushroomA2*、mushroomA3*。很显然rebase操作更复杂,冲突的概率也更高,并且不是按照时间顺序记录。 十、Rebase和Merge如何选择的简单解析 1、对于一个多人开发团队频繁提交更新的情况,如果使用merge会使得历史线图非常复杂,并且merge一次就会新增一个记录点,如果使用rebase就是完全的线性开发。 2、上图所示是Merge和Rebase的两个结果,显然你不想要merge的混乱结果吧,你能告诉我merge图中那条线是master分支吗?所以给出如下建议,如果同一文件反复修改或提交次数比较多,预期会出现很多的conflict,那么可以使用merge合并,仅需要解决一次冲突即可(不过,大范围主题式的修改,是不是应该事先就新开一个分支呢?);如果修改范围小,预期conflict少,则建议使用rebase。EGIT中默认的pull操作是Fetch+Merge,如果要用rebase,可以分开操作。先执行Fetch更新remote tracking,再执行rebase进行合并(下一小节将介绍rebase操作)。或者修改pull的默认操作,在.git/config文件中配置: 3、上述配置只对mirror分支有效,也可做全局配置,在$HOME/.gitconfig中配置,windows系统如果没有配置HOME变量的话就默认在$documents and settings/ USER目录下: 十一、Fetch和Rebase 1、MairoBro来做fetch和rebase的测试,首先Mairo弟弟在client中添加文件OPQ分别提交,并push到服务器,如图: 2、此时服务器端的历史已经被更新,但是Mairo哥哥的remote tracking中mirror分支并没有更新到最新的记录,如图: 3、所以需要更新remote tracking中的分支,使得它与服务器端的分支同步,右键点击资源库选择Fetch。 4、点击后出现下图。 5、这样就更新了本地的remote tracking中的分支,使得它和服务器端分支同步。 6、然后Mairo哥哥在本地的private中添加文件ABC,并分别提交到本地仓库中。 7、然后将本地mirror分支和remote tracking中的mirror分支进行rebase,先checkout本地mirror分支 ,然后右键点击选择Rebase。 8、点击后出现下图,选择rebase对象。 9、点击OK。 10、如下图可以看到历史记录的顺序是OPQABC,已经rebase成功,接着push到服务器即可。 十二、重置功能 GIT中有三种重置功能,分别是soft、mixed、hard,区别如下:a.Soft - 当前分支重置到指定commit记录位置,索引和工作树不变;b.Mixed - 当前分支重置到指定commit记录位置,索引被更新,工作树不变;c.Hard - 当前分支重置到指定commit记录位置,索引和工作树都更新。貌似不好理解,首先要理解GIT的三个区域(工作树、索引区、仓库),可以参考文档《GIT简介》。1、先做soft的测试,新建Soft.java文件,可以看到此文件未添加到索引控制。 2、先进行一次提交,提交后在History窗口中重置此次提交,如图: 3、重置后查看工作树,如图: 4、从上图可以看出,soft文件还存在,说明重置没有改变工作树,而且soft文件不是“问号”图标,说明已经添加到索引,说明索引也没有变。唯一重置的是历史记录。然后新建Mixed.java文件,此时Mixed.java也没有添加到索引控制,然后提交。 5、在History窗口中重置。 6、重置后查看工作树结果如图: 7、从上图可以看出,Mixed.java文件还存在,说明工作树没有改变,但是文件状态是untracked,说明索引被更新,此时文件没有添加索引控制。最后来看hard重置,新建Hard.java文件,此时文件没有添加索引,然后提交。 8、在History界面重置此次提交,如图: 9、重置后再查看工作树,结果如图: 可以看到Hard.java文件已经不存在了,说明索引和工作树都被更新。 十三、从git云端下载项目到本地 1、创建github账户,并new一个新的库repository,点击clone ,记住克隆的地址(.git结尾的网址),如下图。(或者找到你想复制的别人的库,点击clone并记住库的克隆地址。) 2、从Eclipse中选择File-》import-》Git-》Projects from Git,点击Next。 3、选择URI后点击Next。 4、粘贴如下信息(注意填上您在github上申请的账号密码),点击Next。 5、进入分支选择,这里选择的是master(如果是大型项目,可能会有多个分支,选择master即可),点击Next。 6、配置本地项目存放路径,一般是c:/你的userName/git。 7、单击Finish,然后选择Import existing projects,然后再单击Finish即可在Eclipse中看到导入的项目了。(项目复制到了eclipse的工作空间中) 8、注意:这里选择Import existing projects可能会出现一个问题:就是系统提示.project文件已存在。当遇到这种情况我们先后退一步;然后进入c:/你的userName/git下载的项目文件夹中,把原项目的.project文件删除(没关系,这个文件不重要),然后再点击Finish。 十四、修改并提交自己的代码到云端 上面把项目下载并导入到到了本地,自己肯定要修改一下,或者加上一些自己的代码。那么修改好之后怎么发布回GitHub云呢?1、把修改好的文件上传到本地仓库,就是把你在eclipse-workspace的项目,提交到C:/../Git/项目 中去。 a.点击项目右键>team>commit。 b.在注释中输入提交信息:记录一下修改了哪些文件/为啥修改;方便以后查阅。 c.勾选你需要提交的文件(确定修改的文件),或者右边小勾,点击全选。执行commit ,提交到本地仓库。这样你的修改就在本地仓库确认了。接下来我们把本地项目提交至远程远程仓库github上。 2、把本地项目提交至远程远程仓库github上之前,我们首先要pull一下,表示从云端拉取最新的版本。防止在你修改的过程中,云端代码有变化(别人修改)。右键点击项目 -> team -> pull 3 、提交代码到云端,在本地修改好文件,并在本地仓库确认后,就可以把代码上传到云端。有两种办法:a. 简易方法:直接上传到master分支右键点击项目 -> team -> push Branch master,点击next 最后点击finish即可。b.或者上传分支右键点击项目 -> team -> Remot->Push。 然后进行如下设置,最后点击finish。 小结 以上就是小编为大家介绍Eclipse插件EGit的安装配置使用方法,下面在给大家分享一些使用的小技巧。 1、如何恢复未提交的修改文件有的时候,我修改了代码,但是觉得改的不好,想恢复原装,只需要Replace With–HEAD Revision (命令行为 git checkout head .): 2 查看提交记录Team–Show in History (命令行为:git log)3 更新项目远程仓库:Team– Pull (命令行:git pull https://github.com/someone/xxx.git) 参考文章: 1、https://blog.csdn.net/luckarecs/article/details/7427605?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2 2、https://www.cnblogs.com/javazyh/p/10675920.html