zoukankan      html  css  js  c++  java
  • Git Bash+EGit在项目中配合使用最常用方法总结(根据场景使用)

    最近在项目中使用Git进行代码管理,之前一直用SVN进行管理,现在谈一谈Git在项目中如何与EGit插件配合使用,高效同步开发。

    使用过SVN一段时间的人,初识Git一定感觉很别扭,发现会遇到各种各样的问题,感觉没有SVN方便,究其原因是还没有领略到Git之美,没有熟练使用Git。

    因为我在刚开始的时候就有这样的感觉,当深入研究Git一段时间之后才深深的被Git的魅力吸引,慨叹Linux大师深刻而又灵动的思想,顶礼膜拜。

    闲话不多说,现在开始谈一谈Git菜鸟如何快速使用Git+EGit进行项目开发:


    这里补充一下:工具是死的,管理是灵活的。无论是SVN还是CVS或者是Git,如果各位在网上看见说是必须这么这么管理,一定是错误的。因为管理工具必须依附于工作场景才能够正确使用,下面我会结合我在项目管理时的经验,谈谈Git应该怎么使用。


    EGit是Eclipse的Git插件,下载安装方式这里不介绍了,从网上自学一下吧。

    Git命令行方式网上也有很多介绍,安装方式这里也不做介绍,网上自学一下 吧,我这里采用的是GitBash。

    简单说来Git+Egit进行代码管理,主要解决以下几个方面:

    1. 理解分支----团队开发如何管理分支

    2.注意开发过程---理解本地提交commit、远程推送push、远程获取更新pull、查看本地版本库状态status等命令

    3.一些经验


    那么首先我先从分支说起:

    1.Git分支的操作建议在EGit中操作,很方便简单,如下图所示:

    在将一个新工程clone到本地的时候,应该在local(本地分支)和remote(远程分支)中只有一个master分支,也就是默认的主干分支。

    那么Git相比于SVN的第一个优势在此体现出来,Git可以灵活快捷的创建和切换分支,SVN创建分支和签出分支很麻烦需要将整个工程签出,而Git只保存不同的地方所以签出很快。

    Git分支主要有如下几个作用:

    一、普通分支(团队如何通过分支合理有效的管理代码)

    (1)保证一个主干分支master,一般这个分支是严格控制的,是确保上线的发布版本。

    (2)创建一个develop分支,这个分支是大家平时开发的分支,每个开发人员都需要把develop签到自己的本地。然后由一个人定期的将可用稳定的develop分支合并到master分支中。

    (3)每个开发人员在本地,以develop分支为基础,创建自己的develop_XXX_2014XXXX分支,这里的分支可以不断的合并到自己的develop分支上。也可以经常删除。

    注意:一般在本地可以有多个分支,而在远程主要有master和develop两个分支。这里不是绝对的,这里是需要与管理方式相结合的,请注意使用场景,一会在Bug分支上我做详细说明。

    常见的操作及问题:

    1.分支的创建及切换



    newBranch可以创建一个分支。那么想切换哪一个分支,在分支上双击即可。

    注意:如果分支中有些改动一旦push到远程,而远程没有这个分支的时候,在远程会自动创建分支。

    在切换分支的时候,如果该分支有没有提交的代码,是不允许切换的,这时候可以进行两个操作:

    (1)commit提交

    (2)stash保存工作区,也就是保存工作场景,你会发现在图形化界面中多了一个stashed commits,在切回该分支的时候可以右键这个,将其恢复。

    二、Bug分支

    其实这个分支是很有讲究的,因为这种分支的场景主要是当前看团队如何组织修改bug:

    场景1:上线前测试:此时应该部署的是develop分支,因为总是在改动,这个时候应该采用"个人本地"模式进行开发。如果发现bug,那么个人应该在本地基于develop创建小分支,修改完bug后,合并到develop中,测试没问题将小分支删除。

    场景2:上线后发现bug打补丁:此时应该基于master分支创建新分支master_note1,即修补点1,并且提交到远程。每个开发者将远程的master_note1 check下来,并在本地建立分支master_note1。然后每个人可以在本地基于此创建自己的分支,进行合并和提交操作。最后测试没问题后,由一个负责将master_note1合并到master中,并将本地和远程的master_note1删除。


    这里介绍几个常见的删除分支的命令,这里建议用GitBash命令行的方式,因为用EGit删发现删不干净。

    1.git branch -a     //查看本地和远程分支
    2.git push origin --delete <branchName>  //删除远程分支
    3.git push origin --delete tag <tagname>  //删除tag标记

    4.git branch  -D  <branchName>  //删除本地分支


    这样之后发现分支被删除了。


    2. 现在我再来讲讲开发过程如何理解本地提交commit、远程推送push、远程获取更新pull、查看本地版本库状态status等命令

    这里我不会很详细的讲这块,只列出一些基本的命令,如果有问题的可以去网上查询,commit、push、pull命令我就不写了很简单。

    (1)git status;
    如果显示changes not staged for commit 表示修改完文件后,没有add
    如果add之后,会显示Changes to be committed:将要被提交

    (2)通过git status之后,可以查看列表文件中,某一个文件改变的具体详情
    git diff readme.txt

    注意:用“git diff HEAD -- readme.txt”命令可以查看工作区和版本库里面最新版本的区别:

    git diff:是查看working tree与index file的差别的。
    git diff --cached:是查看index file与commit的差别的。
    git diff HEAD:是查看working tree和commit的差别的。(你一定没有忘记,HEAD代表的是最近的一次commit的信息)


    (3)每次改一个文件,可以git add readme.txt

    (4)git log 查看最近三次提交记录/ git log --pretty=online

    (5)git reset --hard HEAD^(代表回到最近一次版本的上一个版本)

    或者是 git reset --hard 3828164(可以不写全)


    (6)git reflog 可以查看最全的记录,包括通过reset之后删除的记录

    (7)git pull
    如果pull下来的文件,你在本地工作空间有修改,但是没commit,会pull不下来,报错。
    如果本地修改后commit了,pull正常有可能有冲突。
    如果pull下来的文件,不是你在本地空间修改的文件,那不用commit也可以正常pull

    (8)$ git checkout -- readme.txt(从版本库恢复,如果有缓冲区,从缓冲区中恢复,如果没有就从版本库中恢复)
    在工作空间修改文件,未add,未commit,想撤回刚才操作。
    如果add这个文件了,就不行了。
    如果add之后又修改了,用checkout 可以回退到刚add的时候。
    如果这个时候想撤销回add,可以使用下面命令:

    git reset HEAD readme.txt

    补充几个分支操作命令:

    1.git branch -a
    //删除远程分支
    2.git push origin --delete <branchName>
    3.git push origin --delete tag <tagname>
    //删除本地分支
    4.git branch -d xxxxx   



    最后我来说说Git的开发经验:

    1.了解Git区域划分,如下图:

    2.尽量多次commit。在push之前先pull,修改完冲突之后立刻commit。

    3.如果有不希望改动之后在commit中体现的文件,请及时写在ignore中。

    4.如果有异常情况,比如在target文件夹下class等文件莫名其妙的出现在改动列表中,请clear一下工程,重新编译刷新一下即可解决。

    以上是个人观点,请读者批评指正,谢谢。(待续)


  • 相关阅读:
    用icas下载文件报错
    jboss7.1.1相关error及解决办法
    Base-64编码介绍
    上传文件路径问题
    ZooKeeper安装(Windows)
    DBCP连接池配置参数说明
    Linux普通用户使用sudo权限启停apache服务
    线程池中的队列
    java线程池原理及实现方式
    https基础流程
  • 原文地址:https://www.cnblogs.com/hainange/p/6153629.html
Copyright © 2011-2022 走看看