Git多人协作
参考了网上的各种资料,对Git多人协作有所了解,写下此篇笔记,理理自己的思路
概念介绍
我这里只介绍分支,一般项目中,有下面几种分支
- master分支
- develop分支
- release分支
- feature分支
- fix分支
- hotfix分支
master分支是主分支,一般是由项目经理(负责人)进行管理,一般我们都无法修改其中的内容
develop分支则是在master分支分出来,我们以develop分支作为基本,分出我们的自己需要开发的功能分支,也就是feature分支,之后进行项目的某些功能开发。
开发完之后,与develop分支进行合并,由管理develop分支的开发者进行代码审查和单元测试,然后发送一个更新到master分支的请求给项目经理。
项目经理再次进行代码审查和单元测试,确定无误之后就把develop分支合并到master分支上
master分支
master分支,即主分支。任何项目都必须有个这个分支。对项目进行tag或发布版本等操作,都必须在该分支上进行。
develop分支
develop分支,即开发分支,从master分支上检出。
团队成员一般不会直接更改该分支,而是分别从该分支检出自己的feature分支,开发完成后将feature分支上的改动merge回develop分支。同时release分支由此分支检出。
release分支
release分支,即发布分支,从develop分支上检出。
该分支用作发版前的测试,可进行简单的bug修复。如果bug修复比较复杂,可merge回develop分支后由其他分支进行bug修复。此分支测试完成后,需要同时merge到master和develop分支上。
feature分支
feature分支,即功能分支,从develop分支上检出。
团队成员中每个人都维护一个自己的feature分支,并进行开发工作,开发完成后将此分支merge回develop分支。此分支一般用来开发新功能或进行项目维护等。
fix分支
fix分支,即补丁分支,由develop分支检出,用作bug修复,bug修复完成需merge回develop分支,并将其删除。所以该分支属于临时性分支。
hotfix分支
hotfix分支,即热补丁分支。
和fix分支的区别在于,该分支由master分支检出,进行线上版本的bug修复,修复完成后merge回master分支,并merge到develop分支上,merge完成后也可以将其删除,也属于临时性分支。
多人协作流程
开发步骤:
1.设置编码
去Android Studio的editor->file encodings修改编码为utf-8格式
2.克隆代码
使用Android Studio下载源码
之后在输入框中输入项目的github地址即可自动下载
3.创建分支
下面的代码是创建一个分支,并切换到分支
git checkout -b 分支名(任取)
4.提交、上传、合并
# 之后在你自己创建的分支上进行功能的开发,完成了一个或多个功能都可以输入下面的命令进行保存
# 开发功能过程中,add和commit这两个命令就可以无限循环,写完一个功能来一次
git add .
git commit -m "说明(大概说一下实现了什么功能)"
# 推送到远端,实际也是相当于做一个备份,不需要经常执行
git push origin 分支名(第3步中的取的分支名)
# 更新本地的dev,保持与最新的一致
git checkout dev
git pull
# 合并操作
# 这一步可能会出现冲突,需要进行冲突处理,冲突处理完之后重新执行add和commit命令
git merge --no-ff 分支名(第3步取的分支名)
# 推送合并好的dev分支到远端,供别的开发者更新
git push origin dev
# 之后切换到你自己的分支,再次进行开发
git checkout 分支名
如果合并出现了冲突错误,自己修改一下出现冲突的那些文件
冲突文件的格式如下:
<<<<<<< HEAD
ln -s ../statics xxx
=======
ln -s ../statics statics
>>>>>>> dev
<<< head
到=======
就是你分支中代码,而=======
到<<< dev
则是dev分支中的代码,根据自己的要求保留。
假如我要保留我分支的代码,则照下面的格式删除其他内容
<<<<<<< HEAD (删除)
ln -s ../statics xxx (保留)
======= (删除)
ln -s ../statics statics (删除)
>>>>>>> dev (删除)
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
git branch --set-upstream-to dev origin/dev
团队协作的流程:
- 首先,可以试图用git push origin
推送自己的修改; - 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用git push origin
推送就能成功! - 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令
git branch --set-upstream-to <branch-name> origin/<branch-name>