在公司一年多了,用到的项目都是用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. WPF 自定义分页控件一

    一:右键添加新建项,选择新建自定义控件,命名为:KDataPager public class KDataPager : Control { static KDataPager() { Default ...

  2. 《C++数据结构-快速拾遗》 树结构

    1.简单的二叉树结构 #include <iostream> using namespace std; typedef int DATA; //建立二叉树的简单结构 typedef str ...

  3. spark partition 理解 / coalesce 与 repartition的区别

    一.spark 分区 partition的理解: spark中是以vcore级别调度task的. 如果读取的是hdfs,那么有多少个block,就有多少个partition 举例来说:sparksql ...

  4. HTML5 实现获取 gzip 压缩数据,并进行解压,同时解决汉字乱码,相关 pako.js

    1, 下载 pako.js => http://nodeca.github.io/pako/#Deflate.prototype.onData 2, 首先需要了解一下 XMLHttpReques ...

  5. docker pull centos慢问题的解决方案

    1.现象 如果直接docker pull centos 两个小时才down下来8M,很慢 2.解决 [root@localhost network-scripts]# cd /etc/docker [ ...

  6. PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法

    使用unserialize函数将数据储存到数据库的时候遇到了这个报错,后来发现是将gb2312转换成utf-8格式之后,每个中文的字节数从2个增加到3个之后导致了反序列化的时候判断字符长度出现了问题, ...

  7. mysqldump: Got error: 1066: Not unique table/alias

    mysqldump: Got error: 1066: Not unique table/alias myql 导出时提示如下: [root@localhost mysql]# mysqldump  ...

  8. win7下iis的配置问题

    开始asp的学习时,首先得配置iis服务,中途遇到各种问题也谷歌了不少,但是答案都很凌乱,折腾了两天才彻底解决这个问题.下面是我坎坷的配置过程,希望对你有所帮助: 第一步:打开Internet信息服务 ...

  9. Linux命令:sshpass

    sshpass介绍 sshpass是一款凡是为凡是使用ssl方式访问的操作提供一个免输入密码的非交互式操作,以便于在脚本中执行ssl操作,如ssh,scp等.sshpass是一家以色列公司Lingnu ...

  10. php中的错误和异常

    总结: php错误不会抛出异常,因此不能被catch,但会根据配置写入日志文件或者输出到浏览器,所以可以通过日志文件查看错误 php异常都必须自己抛出,并通过catch捕捉.SQL语句执行的错误好像可 ...