在公司一年多了,用到的项目都是用svn代码托管,没有git 的用武之地,趁国庆假期稍微自学了一下,然后人比较懒,不愿用原生敲命令行的形式,就在eclipse上学学怎么用git,话说回来用了svn再来学git,既容易也难,难在于git的命令更多,上手也需要时间。我学习用的是廖雪峰的git教程,讲得很好,浅显易懂,他敲得是命令行,我翻译成了如何在eclipse中操作,也是一样学。

廖雪峰的git教程地址:

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

  1. git简介 
    这一段可以直接看廖雪峰教程的介绍,了解svn与git的本质区别是比较重要的。

 
2. 创建版本库和基本操作 
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

在一个java项目中,整个项目就是一个仓库,都归git管理,eclipse都集成git插件,我们只需在新建的项目中 右键项目Team-》share project-》选择git-》然后按操作完成,最后finish 

成功的话就是下面这样: 
 
有一个小箭头,代表git已经开始托管这个项目。

然后我们在这个项目下面编写一个java文件 

最后我们提交这个文件到git仓库: 右键项目Team-》commit

在廖雪峰的教程中,一个文件提交 要先 add 然后 commit,EGIT中只要Commit就可以默认将未监控的文件添加到索引再提交更新,不需要分开操作(egit中的Add to index可以将文件加入git索引,进行版本监控)

还要注意备注信息一定要写,下面要提交的文件除了我们的demo.java,还有一些项目的配置文件,也一并提交。 

然后点击eclipse 的window-》show view ,找到git repositories 

左边找到git就是我们的项目,里面有分支,工作目录等信息,右键git项目-》show in -> history 可以看到右边我们的操作信息,包括刚刚我们提交的操作 

重要概念: 
右框中的id的含义:你看到的右边的id e414f3a 是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。每提交一个新版本,实际上Git就会把它们自动串成一条时间线。 
右框中的master的含义:每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。 
右框中的head的含义:git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是当前最新的提交e414f3a

现在我们再提交一次,这次我们在demo文件里添加一个方法get(),然后history框里会显示这次提交,head也及时指向了最新的提交。 

现在,我们需要回退到 第一次导入git时的版本,也就是回退到版本号为e414f3a。 
我们可以直接在history框中选择我们要回退的版本,然后右键reset-》hard,点确定,然后我们的第二次提交版本就消失了,demo.java文件也还原成了第一次导入的模样,head指针也回退了。 

我们再想回去怎么办?

只要之前提交过的版本都被git记录了下来,在git repositories框中,右键项目-》show in-》git reflog ,git reflog 里面详细记录了你每次的操作 

我们想回去“第二次提交”的版本,只需要查找第二次提交的版本id,就是95bc224,在git repositories框中右键reset,输入版本号,就可以了。 

demo.java文件又还原成了第二次提交时的模样,廖雪峰教程里面有一章“工作区和暂存区”概念很重要,弄明白了暂存区,就弄明白了Git的很多操作到底干了什么。

转自:http://m.blog.csdn.net/article/details?id=52739343

eclipse egit(版本回退)的更多相关文章

  1. eclipse git(版本回退)

    https://www.cnblogs.com/duex/p/6389999.html

  2. eclipse egit 解决冲突

    eclipse egit冲突解决 在 pull 代码的时候 ,从远程仓库与本地仓库进行同步的时候  ,如果服务器版本与本地仓库版本不一致, 需要解决冲突 首先需要将改动的代码commit到本地仓库,冲 ...

  3. egit版本对应关系。

    egit版本对应关系. http://wiki.eclipse.org/EGit/FAQ#What_versions_of_Eclipse_does_EGit_target.3F

  4. git 版本回退

    由于操作失误,需要将代码进行版本回退,首先在本地仓库执行了“git reset --hard HEAD^”命令,这样只会回退本地仓库的代码,但是我的代码之前已经push到了远程库中,查看远程仓库,发现 ...

  5. git误删文件找回方法/git版本回退方法

    使用git命令 git rm css/\*.css 我删掉了css文件夹下所有以.css结尾的文件,那么要怎样才能把文件找回来呢,下面说说方法,删掉其他的文件也是一样的方式找回. 第一步:使用git ...

  6. git版本回退, github版本回退

    上周提交了更改,过了周末回来说要撤销上个story.于是,需要找到上周提交的版本,rollback回来. git版本管理命令,自从习惯使用管理工具之后就很少接触了,当突然寻找其他指令的时候就成浆糊了, ...

  7. 【Git学习笔记】初始化Git仓库和版本回退

    学习地址 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 什么是版本库呢?版本库又 ...

  8. l5如何通过路由走api版本回退查找设置

    l5如何通过路由走api版本回退查找设置 具体需求 当前遇到的问题是使用laravel写接口,但是接口是有版本号的,我们把版本号放在url中,比如: http://yejianfeng.com/api ...

  9. git中的版本回退

    git版本回退有两种情况,一种是从本地版本库中(head区)回退到某个版本,可以用命令 git reset --hard head^ 或git reset --hard head~x ,head指的是 ...

随机推荐

  1. mogoDB工具选择及连接<一>

    最近在某微服务项目中需要用到mogoDB 原因是:开源免费.适合互联网公司.大数据量情况下性能比mysql好 咨询过为啥不用oracle,原因你懂得 --费用 好,言归正传: 1.选择工具,使用工具是 ...

  2. Java基本知识进阶

    1.static 2.代码块 3.继承 4.抽象类 5.接口 6.多态 7.包 8.权限修饰符 9.内部类 10.字节码 11.包装类 12.装箱&拆箱 13.正则表达式 14.异常 15.反 ...

  3. promise请求数据用法

    Promise简介 Promise 是异步编程的一种解决方案,比传统的解决方案–回调函数和事件--更合理和更强大.ES6将其写进了语言标准,统一了语法,里面保存着某个未来才回结束的事件(通常是一个异步 ...

  4. gentoo eclipse swt

    最近学习使用 eclipse rcp 来做一些插件. 首先下载安装 eclipse-rcp,然后安装 swt emerge -av swt 安装完成以后, 在 /usr/portage/distfil ...

  5. html A标签 绑定点击事件。跳转页面。处理

    在平时的页面中,肯定有需要点击A标签 进行处理. 这时候习惯性的绑定一个点击事件进行数据处理. 在A标签中 herf="#" 然后绑定一个点击事件. 或者在A标签里面的元素里面有一 ...

  6. JAVA操作字符串

    package com.test; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /* ...

  7. Javascript 中 null和undefined的区别

    null表示"没有对象",即该处不应该有值.典型用法是: (1) 作为函数的参数,表示该函数的参数不是对象. (2) 作为对象原型链的终点. Object.getPrototype ...

  8. Mybatis的回顾学习

    <!--id:statementId resultType:查询结果集的数据类型 parameterType:查询的入参 --> <selectid="getUserByI ...

  9. __file__ 作用以及模块导入方法

    python 执行py 文件的时候,默认就会把当前目录增加到sys.path中 import os print(__file__) #打印文件当前的位置 直接在目录里面执行,结果显示当前文件(pych ...

  10. air 调用jsfl 执行对应函数,并传参

    jsflPath = "WindowSWF/dt_tool_jsfl/" + event.item.fileName+".jsfl"; var element_ ...