1 Git的.gitignore配置
一般来说每个Git项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中心。实际项目中,有很多文件都不需要版本管理的,比如*.class、.classpath、.project等。.gitignore文件的内容是一些规则,Git会根据这些规则来判断是否将文件添加到版本控制中。
下面我们看看常用的规则:
- /target/ 过滤整个文件夹
- *.class 过滤所有.class文件
- .classpath 过滤某个具体文件
.gitignore文件中还可以指定要将哪些文件添加到版本库中,唯一的区别就是规则开头多了一个感叹号。
- !*.java
.gitignore文件的配置语法及过滤规则,有兴趣的的话自己可以深入研究下,这里不具体展开。
注意:一定要养成在项目开始就创建.gitignore文件的习惯,如果不慎在创建.gitignore文件之前就push了项目,处理起来会比较麻烦。
2 分支管理策略
2.1主分支Master
首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。
Git主分支的名字默认叫做Master。它是自动建立的,版本库初始化以后,默认就是在主分支上进行开发。
2.2 开发分支Develop
主分支只用来发布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做Develop。如果想正式对外发布,就在Master分支上,对Develop分支进行“合并”(merge)。
2.3 临时性分支
前面讲到版本库的两条主要分支:Master和Develop。前者用于正式发布,后者用于日常开发。其实,常设分支只需要这两条就够了,不需要其他了。
但是,除了常设分支以外,还有一些临时性分支,用于应对一些特定目的的版本开发。临时性分支主要有三种:
功能(feature)分支
预发布(release)分支
修补bug(fixbug)分支
这三种分支都属于临时性需要,使用完以后,应该删除,使得代码库的常设分支始终只有Master和Develop。
3 Git开发流程
3.1 从远程仓库克隆
任何开发者都不会对源仓库进行直接的操作,源仓库建立好后,每个开发者都需要做的事情就是把源仓库
“复制”一份到本地,作为自己日常开发的仓库。
git clone url
3.2 查看远程分支
git ls-remote
3.3 创建本地开发分支
所有开发者在开发前都需要基于远程develop分支创建一个本地develop分支。
git branch local_develop origin/develop
切换分支,现在开发者就可以在local_develop分支上开始开发、提交commit,贡献自己的代码。
git checkout local_develop
git status 时刻掌握仓库当前的状态
git add <file>
git commit –a –m “”
当然,你还可以创建自己的特性分支,在特性分支上进行开发工作
git checkout –b feature_branch
git add <file> 添加文件
git commit –a –m “” 提交
git checkout local_develop 切回到local_develop分支
git merge feaure-branch 将特性分支合并到local_develop分支
git branch –d feaure-branch 删除特性分支
无论你通过哪种方式开发,现在本地仓库的local_develop上就是开发者最新的修改,只需要把在本地分支上的修改推送到远程分支,开发者就算贡献了自己的第一次提交。
git push origin local_develop:develop
3.4 合并分支
所有开发者的提交都会在远程develop分支中汇总,当develop中的代码经过不断的测试,逐渐趋于稳定了,可以把develop分支合并到master分支中,同时添加一个新的版本号。
任何人都不应该向master直接进行无意义的合并,正常情况下,master只接受develop的合并。
git checkout develop
git fetch origin/develop
git checkout master
git merge develop
git push origin master:master
3.5 解决冲突
在多人开发的情况下,冲突在所难免。如何快速准确的解决冲突是每个开发人员必须掌握的技能。
1、直接编辑冲突文件
冲突产生后,文件系统中冲突了的文件(这里是test.txt)里面的内容会显示为类似下面这样:
上图中:冲突标记<<<<<<<(7个<)与=======之间的内容是我的修改,=======与>>>>>>>之间的内容是别人的修改。
此时,还没有任何其它垃圾文件产生。
最简单的编辑冲突的办法,就是直接编辑冲突了的文件(test.txt),把冲突标记删掉,把冲突解决正确。
2、利用图形界面工具解决冲突
使用git自带的工具查看差异和合并差异十分不方便,
如果要解决的冲突很多,且比较复杂,图形界面的冲突解决工具就显得很重要了。
执行git mergetool/git difftool用预先配置的Beyond Compare工具解决冲突。git mergetool/git difftool的具体配置方法可在网上搜到很多参考资料,这里不详细讲解。
资料推荐
掌握Git基本原理、开发流程及Git命令是每个开发者的必备技能,这里推荐一些资料供大家学习参考。
《Pro Git》
《Git-Book》
《Git版本控制管理》