最近在项目中使用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一下工程,重新编译刷新一下即可解决。

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

Git Bash+EGit在项目中配合使用最常用方法总结(根据场景使用)的更多相关文章

  1. git分支概念与项目中的应用

    文档:https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%AE%80%E4%BB%8B 分支理解 m ...

  2. github 用git bash上传项目 最后提示 Everything up-to-date 但没传上去

    今天为了把本地的项目远程到githup远程仓库,把好久不用的githup命令重新用了起来,不用怀疑,很正常的出错了. 为了长点记性,总结错误与解决办法如下: 1.我犯得第一个简单错误,是忘了git c ...

  3. Git 如何只更新项目中某个目录里的文件

    Git由于在远端和本地都有一个代码库, 这样更新单个文件比SVN要麻烦一点.   1. 如果想拿远端git服务器上的最新版本(或某个特定版本)覆盖本地的修改,可以使用git pull命令,   但这会 ...

  4. Windows下使用Git Bash上传项目到GitHub

    http://blog.csdn.net/qq_28304687/article/details/69959238?locationNum=8&fps=1

  5. 项目中关于RPC 和rocketMQ使用场景的感受

    在花生待的这半年,切身体会了系统之间交互场景的接口技术实现方式,个人总结.仅供参考: 1.关于rpc接口,一般情况下 都是同步的.A系统的流程调用B系统.等着B返回,根据返回结果继续进行A接下来的流程 ...

  6. 【开发工具】-- IDEA集成Git在实际项目中的运用

    1.企业实际项目中Git的使用 在实际的企业项目开发中,我们一般Java的项目在公司都有自己的局域网代码仓库,仓库上存放着很多的项目.以我工作过的公司如华为的项目,一般是存放在企业内部的CodeHub ...

  7. 第一次使用Git Bash Here 将本地代码上传到码云

    当我们安装成功git工具时候,初次使用Git时,需要Git进行配置. 1.点击桌面上的这个图标,打开Git Bash:如图所示 2.配置自己的用户名和邮箱 git config --global us ...

  8. Java算法之递归打破及在真实项目中的使用实例

    开心一笑 刚才领导问开发:"你觉得这个项目的最大风险是什么",开发说:"加班猝死" , 气氛尴尬了一分钟!!! 提出问题 1.递归算法简单复习 2.如何实现递归 ...

  9. 项目中使用Prism框架

    Prism框架在项目中使用   回顾 上一篇,我们介绍了关于控件模板的用法,本节我们将继续说明WPF更加实用的内容,在大型的项目中如何使用Prism框架,并给予Prism框架来构建基础的应用框架,并且 ...

随机推荐

  1. Angular中 build的时候遇到的错误--There are multiple modules with names that only differ in casing

    今天早上遇到一个Angular的编译的时候的错误 具体信息: There are multiple modules with names that only differ in casing.This ...

  2. Linux中/etc/fstab /etc/mtab /proc/mounts这三个文件的分析与比较 分区表位置

    本文主要讲解Linux中/etc/fstab /etc/mtab /proc/mounts这三个文件的作用以及不同之处. 转自http://haohaozhang.blog.51cto.com/917 ...

  3. vue环境搭建过程中,遇到的坑爹的问题

    1,在配置package.json下载node依赖包时,执行$cnpm install过程中,这个过程是比较漫长的,尤其的这种core i5配置的电脑,简直有点卡的人怀疑人生,后来动了下有消息输出,我 ...

  4. JMeter如何和Charles进行接口测试

    什么是接口测试,接口测试到底如何开展,我相信任何一个软件测试人员都会有这样的疑问, 这里我以接口测试自动化平台的登录接口进行讲解. 一.什么是接口测试? 接口测试是测试系统组件间接口的一种测试.接口测 ...

  5. Rabbitmq集群

    分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 Rabbitmq集群高 ...

  6. ACM hdu 3336 Count the string

    [题意概述] 给定一个文本字符串,找出所有的前缀,并把他们在文本字符串中的出现次数相加,再mod10007,输出和. [题目分析] 利用kmp算法的next数组 再加上dp [存在疑惑] 在分析nex ...

  7. 【Java 语言】Java 多线程 一 ( 线程启动 | 线程中断 )

    一. 线程启动 线程启动 : -- 1. 继承 Thread 运行线程 : 重写 Thread 类的 run 方法, 然后执行该线程; -- 2. 实现 Runnable 接口, 并运行线程; -- ...

  8. Rx系列二 | Observer | Observable

    Rx系列二 | Observer | Observable 上节课我们对RX的一些基本概念和使用JAVA代码实现了一个观察者,但是这只是对思路的一个讲解,在我们JAVA中,其实是已经封装好了观察者对象 ...

  9. Bootstrap3 栅格系统-栅格参数

    通过下表可以详细查看 Bootstrap 的栅格系统是如何在多种屏幕设备上工作的. -–下面有个"顶"字,你懂得O(∩_∩)O哈哈~ -–乐于分享,共同进步! -–更多文章请看:h ...

  10. Redis集群功能预览

    目前Redis Cluster仍处于Beta版本,Redis 3.0将会加入,在此可以先对其主要功能和原理进行一个预览.参考<Redis Cluster - a pragmatic approa ...