GitHub团队项目合作流程
已在另一篇博客中写出关于以下问题的解决,点此进入:
- 同步团队项目到本地时出现冲突怎么办?
- 项目负责人merge一个Pull Request后发现有错怎么回退?
目录:
- 零、前期准备
- 一、创建开发分支
- 二、Fork项目到个人的仓库
- 三、Clone项目到本地
- 四、和团队项目保持同步
- 五、push修改到自己的项目上
- 六、请求合并到团队项目上
- 七、团队项目负责人审核及同意合并请求
注:其中
零、一、七
是由团队项目负责人来完成的。开发人员只要从二
开始就行了。
零、前期准备:
- 首先把队友直接push的权限关掉,即设置成Read。这样可以防止队友误操作,未经审核就把代码push到团队项目上。
- Teams用来分配issue的时候会用到,所以保留下来,并不是没有用。
一、创建开发分支
- master分支一般用来发布稳定版本,dev分支(开发分支)用来发布开发版本。
输入分支名称后,下面会跳出Create branch,点击即可创建。
下面图片写的是develop,是因为我们这个项目已经有dev分支了。如果你们没有dev分支,那么名字改成dev即可。这个影响不大。
- 分支创建完毕后,会自动跳转到dev分支。由于dev分支是从master分支上创建的,因此内容与master分支一致。
二、Fork项目到个人的仓库
- 点击右上角的Fork,并选择你的账号(一般在第一个)。就可以Fork团队项目到个人仓库啦。
- Fork完成后
三、Clone项目到本地
首先是clone,clone的地址可以直接点击按钮复制(如下图)。
推荐使用SSH协议,用HTTP协议有时会出问题。
注意,这里clone的是你自己仓库里的项目
- 打开git命令行,输入指令和刚才复制的地址,回车即可克隆到本地
- 此时你只能看到master分支,并没有把dev分支clone下来。使用
git branch
命令查看本地分支,发现本地只有master分支。如下图的①
- 如上图的②,使用
git branch -a
查看所有分支,就能看到远程分支。 根据远程分支,我们可以创建一个新的本地分支dev,并把该项目的dev分支的内容放到本地dev分支。如上图③。
git checkout -b dev origin/dev
的意思是,创建一个dev分支(-b),并把远程dev分支(origin/dev)的内容放在该分支内。接着切换到该分支(checkout)
- 现在使用
git branch
可以查看两个分支,并且用ls
或者dir
就能看到dev分支的内容了。想切换回master分支的时候,再用git checkout master
即可。
- 上面的操作完成后,你就可以在本地进行开发了。但是如果要将你修改完的代码合并到团队项目上,还需要进行下面的操作。
四、和团队项目保持同步
- 首先查看有没有设置upstream,使用
git remote -v
命令来查看。如下图①
- 如果没有显示upstream,则使用
git remote add upstream 团队项目地址
命令。如上图② - 接着再次使用
git remote -v
,如果如上图③,显示出了upstream,那么就设置好了
- 开始同步。首先执行
git fetch upstream
获取团队项目最新版本。如下图①
此时并没有把最新版本合并到你本地的分支上,因此还需要一步。如上图②,当前分支是dev分支,执行
git merge upstream/dev
命令后,会将源分支(upstream/dev)合并到当前分支(dev)。如果你是在本地的master分支上开发,那么在使用该命令前,先切换到master分支。
merge的时候,有可能碰到冲突。需要解决冲突才能继续下面的操作。冲突的解决可以参考→ 冲突的解决
五、push修改到自己的项目上
解决冲突后,就可以使用
git push
命令将本地的修改同步到自己的GitHub仓库上了。注意,在当前所在分支使用push,会push到与这个分支相关联的远程仓库分支。这里dev分支与origin/dev关联,因此push到GitHub上的dev分支。
六、请求合并到团队项目上
- 首先到你的GitHub上,进入你Fork的仓库里。点击红框处的Pull request
- 下图左边红框,表示要合并到fzu2015/CourseManagement项目的dev分支。
- 下图右边红框,表示要从自己仓库的dev分支发起合并请求。
- 点击红框处的 Create pull request就可以发送合并请求了。
- 当然,在发送请求之前,你可以检查一下你都改了哪些东西。在上面那个页面往下拉,就可以看到两者的对比。如下图
- 以上操作结束后,基本已经好了。
七、团队项目负责人审核及同意合并请求
- 首先进入GitHub的团队项目仓库中。此时右边的Pull requests显示当前项目有几个Pull request。点击进入查看。
- 选择一个Pull request
- 项目负责人审核有两个要注意的地方
- 一个是下图的①。一定要看清楚是合并到哪个分支。这里是从schaepher的dev分支合并到fzu2015的dev分支。
另一个是下图的②。点击进去后,就可以查看该Pull request对项目做了哪些修改。这样如果有问题,可以及时发现,并关闭该Pull request。
如果关闭了,一定要告诉队友,否则他可能会不知道。虽然也可以直接在下面发布Comment告诉他,但队友不一定看到。
- 如果没有问题,可以点击Merge pull request。这样就合并好了。
GitHub团队项目合作流程的更多相关文章
- 转:GitHub团队项目合作流程
转自:https://www.cnblogs.com/schaepher/p/4933873.html GitHub团队项目合作流程 已在另一篇博客中写出关于以下问题的解决,点此进入: 同步团队项 ...
- 常用工具说明--GitHub团队项目合作流程
注:其中 零.一.七 是由团队项目负责人来完成的.开发人员只要从 二 开始就行了. 零.前期准备: 首先把队友直接push的权限关掉,即设置成Read.这样可以防止队友误操作,未经审核就把代码push ...
- GitHub团队协作流程
说来惭愧,这么长时间,第一次参与修改开源项目,所以整理了一份GitHub团队协作流程,作为备忘,文章大部分内容参考https://www.cnblogs.com/schaepher/p/4933873 ...
- [GitHub]第五讲:团队合作流程
文章转载自:http://blog.csdn.net/loadsong/article/details/51591631 前几天还都是一个开发者唱独角戏.但是尽管如此也可以看出 Git 带来的便利了, ...
- 超详细!Github团队协作教程(Gitkraken版)
超详细!Github团队协作教程(Gitkraken版) 一.前期工作 1. 在 Github 上创建 organization step1. 登录Github网站,点击右上角头像,选择 " ...
- Github团队开发示例(二)
Github团队开发示例(二) 作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/6063765.html 接之前讲的Github团队开发示例(一),本文主 ...
- Github团队开发示例(一)
Github团队开发示例(二) 作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/6044837.html 我们可以在Github上管理自己的团队项目.团队 ...
- 从零开始,创建GitHub团队开发环境
从零开始,创建GitHub团队开发环境 GitHub提供免费的团队环境,不过免费仓库容量是300MB,请大家注意. 申请GitHub个人账号 1. 使用浏览器访问GitHub主页.如果使用IE,尽量不 ...
- Github: 团队账号:https://github.com/ChenRuTing
Github: 团队账号:https://github.com/ChenRuTing 以后我们做好的代码会随时更新上传到这里,请老师届时帮我们看看.谢谢老师.
随机推荐
- 命名空间“System.Web”中不存在类型或命名空间名称“HttpUtility”。是否缺少程序集引用?
vs2010下解决方案: 1.右击项目选择“属性”,目标框架选择“.net FrameWord 4”; 2.右击项目中的引用,添加引用,在.net下选择System.Web,确定OK. 解释: fra ...
- bzoj3343
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1178 Solved: 527[Submit][Status][Discus ...
- 用Python建立最简单的web服务器
利用Python自带的包可以建立简单的web服务器.在DOS里cd到准备做服务器根目录的路径下,输入命令: python -m Web服务器模块 [端口号,默认8000] 例如: python -m ...
- 优化php代码 - 字符串echo输出 逗号也可作php连接符
2016年12月12日10:00:16 ====================== 网页访问速度的提升,是可以通过代码的优化来实现的.代码的优化,并不是说代码越少越好,而是主要看代码的运行能力和执行 ...
- web开发——写一个简单的表格导出操作
一.前台页面: 主要是一个按钮和一个表格,表格有显示数据,按钮负责将表格中的数据选择性地导出.除此外,可以附加一个小窗口和进度条,用于显示下载进度. 1. 按钮:<a href="ja ...
- u盘安装Fedora23
-2.计划用ultraiso安装 fedora 23 ,然后从windows平台转到Linux平台上. -1.概念理解 硬盘模式:achi(sata) ide (ata) 分区格式:主引导记录(mbr ...
- tail -f 和 -F 的用法
tail -f 和 -F 的用法 Tai 2010-08-16 16:03:18 -f 是--follow[=HOW]的缩写, 可以一直读文件末尾的字符并打印出来."[=HOW]" ...
- Coursera-Getting and Cleaning Data-Week2-课程笔记
Coursera-Getting and Cleaning Data-Week2 Saturday, January 17, 2015 课程概述 week2主要是介绍从各个来源读取数据.包括MySql ...
- [Scala] akka actor编程(一)
Akka基础 Akka笔记之Actor简介 Akka中的Actor遵循Actor模型.你可以把Actor当作是人.这些人不会亲自去和别人交谈.他们只通过邮件来交流. 1. 消息传递 2. 并发 3 ...
- int类型的正负数转换
int aid = -this.id; 不能直接转 必须先赋值给一个变量 int c = this.id; int a = c * (-1); this.id = a;