您的位置:首页 > 运维架构 > Shell

Git Bash+EGit在项目中配合使用最常用方法总结(根据场景使用)

2014-03-30 16:05 441 查看
最近在项目中使用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一下工程,重新编译刷新一下即可解决。
以上是个人观点,请读者批评指正,谢谢。(待续)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: