已在另一篇博客中写出关于以下问题的解决,点此进入

  • 同步团队项目到本地时出现冲突怎么办?
  • 项目负责人merge一个Pull Request后发现有错怎么回退?

目录:

注:其中 零、一、七 是由团队项目负责人来完成的。开发人员只要从 开始就行了。


零、前期准备:

  • 首先把队友直接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团队项目合作流程的更多相关文章

  1. 转:GitHub团队项目合作流程

    转自:https://www.cnblogs.com/schaepher/p/4933873.html GitHub团队项目合作流程   已在另一篇博客中写出关于以下问题的解决,点此进入: 同步团队项 ...

  2. 常用工具说明--GitHub团队项目合作流程

    注:其中 零.一.七 是由团队项目负责人来完成的.开发人员只要从 二 开始就行了. 零.前期准备: 首先把队友直接push的权限关掉,即设置成Read.这样可以防止队友误操作,未经审核就把代码push ...

  3. GitHub团队协作流程

    说来惭愧,这么长时间,第一次参与修改开源项目,所以整理了一份GitHub团队协作流程,作为备忘,文章大部分内容参考https://www.cnblogs.com/schaepher/p/4933873 ...

  4. [GitHub]第五讲:团队合作流程

    文章转载自:http://blog.csdn.net/loadsong/article/details/51591631 前几天还都是一个开发者唱独角戏.但是尽管如此也可以看出 Git 带来的便利了, ...

  5. 超详细!Github团队协作教程(Gitkraken版)

    超详细!Github团队协作教程(Gitkraken版) 一.前期工作 1. 在 Github 上创建 organization step1. 登录Github网站,点击右上角头像,选择 " ...

  6. Github团队开发示例(二)

    Github团队开发示例(二) 作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/6063765.html 接之前讲的Github团队开发示例(一),本文主 ...

  7. Github团队开发示例(一)

    Github团队开发示例(二) 作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/6044837.html 我们可以在Github上管理自己的团队项目.团队 ...

  8. 从零开始,创建GitHub团队开发环境

    从零开始,创建GitHub团队开发环境 GitHub提供免费的团队环境,不过免费仓库容量是300MB,请大家注意. 申请GitHub个人账号 1. 使用浏览器访问GitHub主页.如果使用IE,尽量不 ...

  9. Github: 团队账号:https://github.com/ChenRuTing

    Github: 团队账号:https://github.com/ChenRuTing 以后我们做好的代码会随时更新上传到这里,请老师届时帮我们看看.谢谢老师.

随机推荐

  1. [转]Struts2.3.16.1+Hibernate4.3.4+Spring4.0.2 框架整合

    原文地址:http://blog.csdn.net/ycb1689/article/details/22928519 最新版Struts2+Hibernate+Spring整合 目前为止三大框架最新版 ...

  2. Delphi 实现数字转大写

    从网上找的一段代码 /// <summary> /// 小写转大写 /// </summary> /// <param name="mmje"> ...

  3. 从基层容器类看万变不离其宗的JAVA继承体系

    以容器类为例子,可以观一叶而知秋,看看以前的前辈们是如何处理各种面向对象思想下的继承体系的.读的源代码越多,就越要总结这个继承关系否则读的多也忘得快. 首先摆上一张图片: 看到这张图很多人就慌了,难道 ...

  4. elastichq 离线安装

    plugin install file:///home/hadoop/xxxx.zip 奇怪的是,这样安装成功后访问host:port:9200/_plugin/hq/ 仍然会报错,找不到一些js函数 ...

  5. global name 'validate_on_submit' is not defined错误

    原因就是validate_on_submit()方法是属于form的方法我使用的时候忘了form. 还有一个比较重要的是validate_on_submit()方法是wtf特有的而wtform是没有这 ...

  6. Ubuntu一路填坑...

    1.安装 从ubuntu9.0开始,一路更新,越来越垃圾,更可恶的是工作上经常指定特定的版本,于是乎,我电脑里装了n个版本的ubuntu. Win7 + Ubuntu 15.10 1)装完win7之后 ...

  7. [NHibernate]存储过程的使用(一)

    目录 写在前面 文档与系列文章 Nhibernate中使用存储过程 一个例子 总结 写在前面 上篇文章一个小插曲,分析了延迟加载是如何解决N+1 select查询问题的.这篇开始介绍在nhiberna ...

  8. Error: Collection was modified; enumeration operation may not execute.

    http://blog.csdn.net/ffeiffei/article/details/6131254

  9. Java编程中“为了性能”需做的26件事

    1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: (1)控制资源的使用,通过线程同步来控制 ...

  10. I() 方法

    I()方法的介绍及使用: http://www.jb51.net/article/51213.htm