https://shihlei.iteye.com/blog/2124411

前言:
1)Git于SVN的不同
     Git是分布式数据库,本地创建仓库,即可在本地完成版本控制(等价于SVN在本地安装服务器和客户端,SVN服务器如果在远程,断网情况将无法完成提交及版本维护)。
     Git协作开发,大家可以互相克隆版本库(相当于SVN下载项目),进行开发,每人都有完整的库(分布式)。通常为了方便,远程还是会建立一个共享库,如GitHub,方便大家同步和共享,不用互相在线,点对点同步修改。
 
2)Git元素概念
     工作区(Working Directory):代码开发和修改的区域,Eclipse将Workspace区域的文件显示给用户,用于操作。
     暂存区(Index):修改不同文件,通过Add to Index,添加到暂存区,暂存该批次的多个修改。
          注:在最初的Git,文件提交前必须提交到暂存区。EGit这不是必要的,Team => Commit可以提交unstaged变化。可以和暂存区的状态比较和回退暂存区修改。
          (状态参见二)
     版本库(Repository):该到一定程度时,可以提交一批次暂存区的修改,操作后修改提交版本库,并标记版本,是后续分享和回退的批次。
 
3)Git教程:
 
4)文章概述:
1> EGit 安装配置
2> EGit 文件状态及图标标志
2> EGit 本地开发
     创建本地库;提交;回退;创建分支;合并;
3> EGit 协作开发
     项目推送远程仓库;克隆远程仓库导入项目;提交修改到远程仓库程;更新远程仓库修改到本地;解决冲突。
4> EGit 视图
     仓库视图;同步视图;历史视图;
 5)参考
http://eclipsesource.com/blogs/tutorials/egit-tutorial/

一 Eclipse 安装EGit
1)安装

     Eclipse Juno 版后已经集成了EGit,如果使用早些版本,可以通过如下地址安装:http://download.eclipse.org/egit/updates ,选择“Eclipse Git Team Provider”,不需要安装其他插件,直到结束。

  
2)配置
 
     EGit每次提交都将包含用户名和邮件,可以通过“Window => Preferences  =>  Team => Git => Configuration”配置,通过Add Entry 按钮添加信息,
     key : user.name,value:用户名 ;key:user.emai , value : 邮箱,账户信息通常GitHub相同。
 

 
二 EGit文件状态及图标展示
 
EGit会出现如下图标,其对应状态及意义如下:
 

 
 
1)忽略[ ignored ]:仓库认为该文件不存在(如bin目录,不需要关注)。通过右键Team => Ignore 添加忽略文件
2)未跟踪[ untracked ]:仓库未跟踪,通常是新建的文件,要接入版本管理可以通过“Add to Index”或直接“Commit”操作。

3)已跟踪[ tracked ]:文件已被仓库记录。

4)已添加[ added ]:untracked 状态的文件,通过“Add to Index”被仓库已知,但是没有“Commit”,“Commit”后可变为“已跟踪[ tracked ]”状态。

5)已删除[ removed ]:从工作区中删除文件,文件会消失,也就没有图标出现,下一次提交时被删除。Team => Untrack可以触发本图标,在“Commit”对话框中可以看到图标。

6)已修改[ dirty ]: 修改“已跟踪[ tracked ]”的文件,未添加到暂存区Index(未“Add to Index”或“Commit”)的文件,标志与本地库不一致。

7)已暂存[ staged ]:修改“已跟踪[ tracked ]”的文件,并添加到暂存区Index(即执行“Add to Index”);
 
8)冲突[ conflict ] : 进行Marge合并操作会引起冲突,需要人工解决并添加到索引区修改状态。
 

9)已部分暂存[ partially-staged ]:修改“已跟踪[ tracked ]”的文件,部分修改已添加暂存区Index,部分未添加。

     相当于:已跟踪的文件修改,Add to Index ,Commit前又修改了文件。
10)假设有效[ assume-valid ]:一些修改未被Git检查。右键Team => Assume unchanged可产生该状态。
 
三 EGit使用
(一)创建本地仓库
 
Git优势是容易创建本地仓库,将工作本地化,待需要的时候推送到远程仓库,因此所有修改可以在本地版本化。
方法:本地见一个工程,添加一些文件,然后在工程上右键Team => Share Project ,点击 create按钮创建仓库。
 

 
 
尽管我们创建了本地仓库,并share 项目,但库是空的。我们可以向工程添加文件,并提交到本地仓库。
 

 

 
(二) 提交(Commit)
1)创建文件提交
 
     创建新文件,由“?”标记,想提交倒本地仓库进行版本管理,需要右键Team => Add to Index,操作后“?”变成“+”。然后项目右键Team => Commit,输入本次提交信息(注:输入的信息会展示在历史页面),成功后标记由“+”变成“仓库”符号。
    

  =And to Index=>

 
=commit=>
 
===》

 
 
2)产生修改提交
 
修改项目文件,文件会由“>”标记,如果需要同步到本地库,我们需要提交,过程同上commit
 

 
 
(三) 撤销修改
 
方法1:通过和上一次暂存区(Index)文件比较——用于单个文件,一般文件状态为“已部分暂存[ partially-staged ]”
  文件上右键Compare With => Git index
如果想修改暂存区Index,点击Copy All Non-Conflicting Changes from Right to Left-button,修改后文件变为“已暂存[ staged ]”。
如果向回退上次Add to Index的情况,点击Copy All from Left to Right,修改后文件变为“已暂存[ staged ]”。
 

 
方法1:通过和上一次Commit版本比较回退——用于单文件
 
     文件上右键Compare With => HEAD Revision
如果想完全恢复文件,点击Copy All Non-Conflicting Changes from Right to Left-button
如果向回退某几行,选择单独每一行,点击the Copy Current Change from Right to Left button。
 

 
     手工完成修改合并后再提及。
 
方法3:通过重置回退(Revert via Reset)——用于整个工程
 
    在项目上回退所有修改,项目上右键Team => Reset…;选择要回退到的分支(如果没有创建分支,只有有一个Master),Reset Type 选择Hard,点击“Reset”确认。所有修改回退到该分支的最后一次提交,包括工作区所有完成的修改。
 
 

 
注:重置类型(Reset Type):
1)Soft:
     只回退commit信息(HEAD 指针),不回退暂存区(Index)和工作区(Working Directory 文件)源码,如果需要可再次提交,回到上次commit情况。
 
2)Mixed:
     回退commit信息(HEAD 指针)和暂存区(Index),只保留工作区(Working Directory 文件)源码。
3)Hard:
     所有更改都将恢复到所选分支/标记/Commit版本。工作区(Working Directory 文件)源码会变为上一个Commit版本的内容,未提交的更改都将丢失,因此该操作必须确认。
 
(三) 创建分支
项目上右键Team => Switch to => New Branch… ,选择一个新分支的来源,点击创建分支,输入分支名。
新分支会出现在分支选择窗口,如果向检出一个新创建的分支,选择然后点击checkout

 

  
》》》》》》》

 
注:
     Git的一大优势是很容易创建分支,根据需要可以快速创建Bug修复分支,新功能分支,几条分支独立开发,最后合并到主分支。
     分支管理策略(引用:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758410364457b9e3d821f4244beb0fd69c61a185ae0000):

     原则:
          a)master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面开发;
          b)开发都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
          c)每个开发人员都在自己dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
 
 

      
 
(四)合并和解决冲突
 1)合并
     将一个分支合并到另一个分支,首先切换到要合并的分支,项目邮件Team => Switch to => 分支名(或仓库视图,Branches => Local =>指定分支右键Checkout),右键 Team => Merge… 选择要合并到当前分支的分支,点击Merge。
     合并开始并弹出结果,结果有如下几种:Already-up-to-date, Fast-forward, Merged, Conflicting, Failed.

 
 2)解决冲突
     冲突需要手动解决。打开冲突文件,找到冲突修改标志“<<<<<<<”,手动合并后后,需要通知Git冲突解决,Add to index 和commit 完成合并
     

 
 
 
四 远程仓库
     远程仓库一般用于多人共享,GitHub就提供免费的共享空间,注册帐号,在GitHub上创建仓库,就可以推送项目。
 
(一)项目提交远程仓库
1)GitHub上创建项目

 
2)项目:右键 Team => Remote => Push,填写远程仓库信息

 
3)选择推送的分支信息,这里由于建立了master和dev分支,选择并通过"Add Spec"按钮添加,选中复选框“Force Update”,已避免冲突,否则需要现更新再推送。

 
4)由于Force Update所以需要确认。

 
5)推送完成

 
(二)克隆远程仓库导入项目
1)File => Import => Git => Project from Git 

 
2)仓库来源选择:Clone from uri 填写账户信息

 
3)分支选择也没:选择要导入的分支

 
4)本地路径指定地址

 
5)完成后本地仓库出现,克隆完成,可以直接选择“Import as existing project”导入

 
6)导入

 
(三)提交修改到远程仓库程
 
方法1:正常的提交操作:     
     项目右键 => Team => Remote => Push 可以选择不同的远程仓库进行推送。包括其他同事的仓库推送。
 
方法2:向默认远程仓库推送:
      项目右键 => Team => Remote =>Push to upstream
 
(四)更新远程仓库修改到本地
方法1: 
     1)项目右键 => Team => Remote =>Fetch form upstream
     注:该操作首先将远程的分支同步到本地的origin/master分支
     2)项目右键 => Team => Marge
     注:合并,可以查看和本地是否有冲突,可以通过合并解决冲突。
 
方法2: 项目右键 => Team => Pull
     注:Pull 合并了Fetch from upstream 和marge;强制Marge,但上面的方法更安全。
 
五 EGit 视图
(一)仓库视图
     库视图是有用的在处理分支/标记和执行操作,以及处理远程存储库,让你所了解概况。
     右键Team => Show in Repositories View可以看到
 

 
(二)同步视图
     工作区和本地库的对比或者当前分支和其他分支的对比是通过同步操作完成的。
     右键Team => Sychronize Workspace ,工作区会和当前分支比较并展示出不同。
     右键Team => Advanced => Synchronize… 可以查看当前分支和其他分支的比较。这包括所有本地未提交的变化。


 

(三)历史视图
     查看已共享文件的历史,右键Team => Show in History.
     可以进行比较,标签,回退。

 
 
Java你会用,但这10点实战经验你一定不知道!
8大企业级实战项目提炼,总200+课时,限时助学2折特惠,立省4688元!

EGit(Git Eclipse Plugin)使用的更多相关文章

  1. Hadoop 1.1.2 eclipse plugin 编译 win7 集成

    Windows平台上使用ANT编译Hadoop Eclipse Plugin 一.准备工作:   1.安装JDK 下载页面:http://www.oracle.com/technetwork/java ...

  2. Peer Code Reviews Made Easy with Eclipse Plug-In

    欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...

  3. GWT(Google Web Tookit) Eclipse Plugin的zip下载地址(同时提供GWT Designer下载地址)

    按照Eclipse Help->Install new software->....(这里是官方安装文档:http://code.google.com/intl/zh-CN/eclipse ...

  4. Installing the Eclipse Plugin

    Installing the Eclipse Plugin Android offers a custom plugin for the Eclipse IDE, called Android Dev ...

  5. Eclipse Plugin Dev Materials

    以下资料是本人在开发Eclipse 插件时候收集的一些比较有用的资料Link,和大家分享下. 比较权威的资料: Helpful Eclipse Plugin Websites: Eclipse Art ...

  6. Eclipse plugin web site 发布和版本更新

    Eclipse plugin web site 发布和版本更新 在eclipse插件开发过程中免不了要发布1.0, 1.1, 1.2…….等等,随着版本的递增,假如每次都发布一个插件zip包,那使用者 ...

  7. eclipse plugin 导出插件包

    当我们的插件在完成一个阶段性开发的时候,我们要发布一个1.0的版本.这个时候会碰到一个问题.如何把我们的插件打成包?有多种途径,下面具体讨论一下. 首先从插件完成到被他人(或者我们自己)使用有两个步骤 ...

  8. How to setup Eclipse with WinAVR and the Eclipse plugin AVR-eclipse

    源:How to setup Eclipse with WinAVR and the Eclipse plugin AVR-eclipse Arduino development with Eclip ...

  9. Jenkins Git Changelog Plugin

    https://wiki.jenkins.io/display/JENKINS/Git+Changelog+Plugin

随机推荐

  1. CSS3动画的使用

    0921自我总结 CSS3动画的使用 一.动画的创建 @keyframes规则是创建动画 浏览器兼容 1.@keyframes myfirst 2.@-webkit-keyframes myfirst ...

  2. 24.Firewalld防火墙

    1.Firewalld防火墙的概述 RHEL/CentOS 7系统中集成了多款防火墙管理工具,其中firewalld是默认的防火墙配置管理工具它拥有基于CLI(命令行界面)和基于GUI(图形用户界面) ...

  3. .netcore控制台->定时任务Quartz

    之前做数据同步时,用过timer.window服务,现在不用那么费事了,可以使用Quartz,并且配置灵活,使用cron表达式配置XML就可以.我用的是3.0.7版本支持.netcore. 首先创建一 ...

  4. Data Management Technology(1) -- Introduction

    1.Database concepts (1)Data & Information Information Is any kind of event that affects the stat ...

  5. GitHub访问速度慢的一种优化方法

    GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名GitHub. 由于GitHub是一个国外网站,在国内访问速度如何呢? 我们通过浏览器访问下ht ...

  6. 缺少控制文件备份时如何还原数据库 (Doc ID 1438776.1)

    How to restore database when controlfile backup missing (Doc ID 1438776.1) APPLIES TO: Oracle Databa ...

  7. 【转】bootstrap table轻松实现数据表格

    在使用bootstrap table时可能在很多时候回用的表格来显示数据,如果自己写那肯定没问题,但是数据展示出来就麻烦多了,然而bootstrap table 封装了一套完善的数据表格组件,把从后台 ...

  8. NOIP 2016 组合数问题

    洛谷 P2822 组合数问题 洛谷传送门 JDOJ 3139: [NOIP2016]组合数问题 D2 T1 JDOJ传送门 Description 组合数Cnm表示的是从n个物品中选出m个物品的方案数 ...

  9. WPF DataGrid 绑定数据及时更新的处理

    原文:WPF DataGrid 绑定数据及时更新的处理 默认情况下datagrid 绑定数据源后,在界面编辑某一列后,数据不会及时更新到内存对象中.如在同一行上有一个命令对来获取 当前选中行(内存对象 ...

  10. 向技术领先的华为说No,就是对国家的通信前景说No!

    历史已经证明了,任何一项可以加速人员.物资.能源.金钱.信息迁移的技术,都会让社会原有的生产力成倍地增长.中国在互联网.移动互联网保持令整个世界震惊的飞速发展,以BAT为首的诸多商业帝国建立,还有人们 ...