Eclipse Git使用

前言

在之前写过Git的一些基本命令,但是,实际开发工作中,一般不直接使用命令行,而是使用集成开发工具,工具可以极大提高效率,而不用去记忆繁多的命令。团队中无法使用Git的主要原因我觉得也在于现在工具与Git结合的说明文档过少。

下面讲EclipseGit的集成。 #1 环境准备 ###1.1 JDK 略 ###1.2 Eclipse 这里就不再讲如何安装插件了,而且直接下载Eclipse4.5 Mars(其它版本未下载测试过),这个版本直接自带了Git的插件,也避免了各种翻墙安装不了、各种鬼速卡死问题。Eclipse 官网下载 64Bit 32Bit 。如果你连这个网站也上不了,可以用我的Win 64Bit备份。 ###1.3 git.oschina.net帐号 在git.oschina.net中注册帐户,并仓库一个空的仓库,如下,我创建了一个git-practice练习仓库,地址:http://git.oschina.net/zhengchaoken/git-practice git clone https://git.oschina.net/zhengchaoken/git-practice.git

输入图片说明 ###1.4 创建工程 Eclipse解压启动后,创建一个Java Project,名字取为git-practice,在其中创建一个类HelloWord代码如下:

package com.zx.test;

/**
 * @author Ken
 * @version 2016-06-29
 */
public class HelloWord {

}

#2 基础练习 ###2.1 share project 项目上右键,Team -> Share project...

输入图片说明 Finish后工程上会有一定的变化。

输入图片说明 打开工程的实际目录,可以看到Git已经初始化了这个目录为仓库,但是NO-HEAD和包及文件夹上的问题表示还没有提交到仓库。

输入图片说明 我们用Git Bash来看下

$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        .classpath
        .gitignore
        .project
        .settings/
        src/

nothing added to commit but untracked files present (use "git add" to track)

这提示项目工程的配置文件.classpath,.project等还没有提交。 ###2.2 本地提交commit 先commit 一下吧,如下:

输入图片说明 选中要提交的文件,写好注释,提交即可。

输入图片说明 提交完后,工作空间目录中的代码也就与本地仓库同步了

输入图片说明 ###2.3 修改及比对代码diff 修改代码是码农的第一要务,新需求,Bug Fix 都需要不断修改代码。这里对HelloWorld类添加一个main方法。保存,即可看到Eclipse已经在文件名前用>符号提示了这个文件有了变动,同时逐级的目录结点止也有>提示,这就很直观地表示该文件有修改。这是不是就是git status的功能的可视化?

输入图片说明 挺好的。但是如果修改很多文件,在不同的文件切换来来去去,最后,记忆不好,不知道文件具体修改哪里了,怎么办? 不用担心,还是项目右健->Team,在菜单中找到Synchronize Workspace,就可以找到熟悉的文件差异对比视图了。

输入图片说明 这个是git diff吧,来看下:

$ git diff
diff --git a/src/com/zx/test/HelloWord.java b/src/com/zx/test/HelloWord.java
index c7e09fa..61c2ed0 100644
--- a/src/com/zx/test/HelloWord.java
+++ b/src/com/zx/test/HelloWord.java
@@ -5,5 +5,7 @@ package com.zx.test;
  * @version 2016-06-29
  */
 public class HelloWord {
-
+       public static void main(String[] args) {^M
+               System.out.println("Hello world");^M
+       }^M
 }

###2.4 回复代码reset 文件改错了?如果是部分,那么就在2.3中提到的Synchronize Workspace中的视图中,把错的那些改回来。如果是都已经不需要了,那么git reset拉。 步骤项目右健->Team->Reset,我们要回复工作空间的代码,当然选择带有working directoryreset type

输入图片说明 执行后,整个工作空间都清静了,世界又回到原来的样子。

#3 同步远程服务器 ###3.1 本地代码初始化到远程仓库push 像本文写的就是这种情景,git.oschina.net上新建的仓库中没有代码,需要在本地初始化工程提交到远程仓库。这种一般使用第一次初始化远程仓库。 步骤:

  • 右键->Team->push Branch 'master'

输入图片说明

  • 在弹出的窗口中输入要push的远程仓库地址及必要的用户名及密码。点击next

输入图片说明

  • 对话框中点击“advance push”(因为远程仓库中已有文件,本地与远程仓库不一致,现在要用本地覆盖远程仓库)

输入图片说明

  • 再次填入要push的远程仓库地址及必要的用户名及密码。点击next

输入图片说明

  • 选择本地及要push到远程的分支,然后"Add Spec",add后选择‘Force Update’强制覆盖,“Finish”

输入图片说明

输入图片说明

  • 提示成功

输入图片说明

  • 接着就可以在提交时选择 "commit and push",这样本地仓库的代码和远程服务器对应分支代码都会更新。

###3.2 远程仓库 初始化到 本地 clone 这种情景最常使用,即,从远程仓库检出一个分支,然后,再在这个分支上开发新功能,Fix Bug等。最为常用。 - 在上面步骤基础上删除git-practice工程 - Eclipse -> import -> 'projects from gits' -> 'clone URI' -> 输入对应的git地址https://git.oschina.net/zhengchaoken/git-practice.git ->勾选自己想下载的分支,后续即可。 - 结果

输入图片说明

#3 分支练习 分支是Git中最重要的,Git Flow中给出的实践中就有许多分支。而且分支在日常的开发中非常有用,正式环境突然有一个紧急BUG要修复、一个新功能需要调研、每个开发者一个模块的开发任务、需要从某历史版本(分支)拉出新分支开发新产品或功能。等等,都需要分支。而分支也是Git的强项。

3.1 本地切换(创建新的)分支

Eclipse中很简单,项目右键->Team->'Switch To' 选择“new branch ”或选择已经有的本地分支即可。如果选择创建新的分支(从master创建)。如下图

输入图片说明 确定后,Eclise工程上就会显示已经切换到该工程。

输入图片说明

3.2 远程分支

这个需要你有远程创建的创建分支的管理权限。以git.oschina.net为例:

输入图片说明 - 远程创建分支 选择'管理分支'-> '新建分支'

输入图片说明 这样就可以从mater拉出一个bug/bugfix分支 - 本地Eclipse切回本地的master分支 - 将远程信息同步到本机 fetch

输入图片说明

输入图片说明 - 切换到远程分支项目右键->Team->'Switch To' 选择“other ”,在弹出的如下对话框中选择远程的仓库

输入图片说明

输入图片说明

3.3 分支合并merge

分支创建后必然会遇到合并分支中的功能到特定分支或主干分支。 准备一下,在bugfix分支的main函数中添加一段代码:System.out.println("this is fixbug branch");并提交到远程服务器。 #####准备将bugfix分支的代码合并到master中#####

  • 切换回master分支
  • 选择'merge'

输入图片说明

  • 选择被merge的分支 fixbug

输入图片说明

  • 留意弹出的对话框中的选项,你可以对这样的合并仅移动指针,也可以生成一个commit信息。遇到如下提示表示有需要push到远程的。

输入图片说明 - 同上面,项目右键->Team->push Branch 'master' 即可。

3.4 冲突解决

不免开发中有同时修改同一个文件的,这时合并就会造成冲突。

  • 创建一个新分支,代码改为如下并提交
public static void main(String[] args) {
        new HelloWord().function();
    }

    void function() {
        System.out.println("this is funciton1 branch");
    }
  • bugfix代码改为如下并提交
  public static void main(String[] args) {
        System.out.println("Hello world");
        new HelloWord().bugFix();
        System.out.println("this is fixbug branch");
    }

    void bugFix(){
        System.out.println("fixbug branch commit 2");
    }
  • 切换到master分支合并bugfix 没有问题
  • 合并function1分支 出现冲突,大家都改了同一个类中的同一处代码。

输入图片说明

输入图片说明 这时根据提示解决冲突,改后代码:

    public static void main(String[] args) {
        System.out.println("Hello world");
        new HelloWord().bugFix();
        System.out.println("this is fixbug branch");
        new HelloWord().function();
    }
    
    void function() {
        System.out.println("this is funciton1 branch");
    } 

    void bugFix(){
        System.out.println("fixbug branch commit 2");
    }
  • 标记冲突解决

输入图片说明

  • 提交

输入图片说明 提交对话框会自动为你生成一条merge注释

输入图片说明

#4 结语 工具还是极在提升了效率。用Eclipse的过程中感觉Eclipse切换分支的速度是非常快的,但是当文件很多及要将要比对的文件超级多时就慢了,这时提示在计算'Git status' 。

2016-07-07 23:33:24 星期四

转载于:https://my.oschina.net/kenzheng/blog/708767

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值