方法一:添加 Collaborators

  Collaborators 类似于Team模式。

  Repository的拥有者Owner 可以直接添加合作者到自己的仓库中, 让合作者拥有几乎等同拥有者的权限。

  操作方法如图所示: Repository的Owner在自己的repo中点Settings添加想要合作的User。

  添加成功后被邀请的合作者会收到GitHub发送的邀请邮件, 该邮件会发送到受邀人的github注册邮箱中。

  

  Collaborators模式可以描述为:

  1)Repository的拥有者A想要合作者B参与到该repo的团队开发中, 于是A邀请B并成功添加B到该repo合作中,这样B作为合作者便拥有了贡献代码到A仓库中的权利。

  2)作为 B 所需要做的是 先Clone A的仓库到本地,这样B在自己的本地就拥有了向A仓库中提交代码(commit/push/merge/branch)的权限,就好比B拥有A的repo一样, 但是B操作 A repo仓库的时候使用的是 B 自己的github账号和密码。

  3)同样此时B自己的github账号中并不会出现A的仓库Repo, 这也就完全不同于fork代码了(fork代码会把拥有者的代码复制一份到自己的github中)。

方法二:Organization & Team 的方式

  如果你已经创建了一个组织,你可以在该组织中创建一个team进行合作开发。

  

  管理者A可以在创建完的team中 add repo. 设置其权限, 添加team成员, 这样team成员间就可以合作开发这些项目了。

方法三:Fork & Pull request方式

  对于开源项目间的合作一般都会使用Fork & Pull request的合作方式。

  “Fork” 的名词是 “叉子” 的意思,不过这里取的是动词 “分叉,建一个分支” 的意思。

  A拥有一个开源Repository,B想参与该开源项目。作为B,先要fork A开源项目的 Repository 到自己账号的Repository中,这样B就拥有了A开源项目的镜像repo。

  这样B可以正常的修改自己账号下的 A的开源项目镜像(这里改的都是自己本地的),并不会影响A本身的开源repository, 如果哪天B觉得自己增加并完善了一个新功能, 或者fixed A repo的某个bug,就可以提一个pull request, 询问A是不是想要。

  步骤一:进入你想参与合作开发的仓库界面,点击右上角的 “Fork” 图标,如下图所示。此时你已经复制了一个副本在你的 GitHub 仓库中了,或者是说一个新的代码仓库被创建了,可以打开你的 GitHub 主页看一看。

  

            

  步骤二:在自己的Github中,将这个代码仓库 “Clone”(克隆)到你的本地。“Clone” 成功之后你就可以自主修改里面的内容。

  步骤三:然后将所做的修改提交(Add+Commit+push)到自己的代码仓库,接着到仓库页面,点击 New pull request 按钮。如下图所示:

    点进去之后,将你修改的内容和原本的内容作对比,并把不相同的地方显示出来。

   步骤四: 点击“Create pull request” 按钮,如下图所示:  

  填写你的请求信息,说明你做了些什么之类的。这个请求是发给该项目的拥有者的,完成之后点击 “Create pull request” 按钮即可。

  

  之后项目的拥有者会受到你的请求,只要他/她通过了你的请求,你所做的修改就会被整合到原项目的仓库里了。

   左边是你的本地仓库,中间是你在 GitHub 上 Fork 建立的仓库,右边是项目的原仓库。

   如何与原仓库保持一致?

  在自己做开发的过程中,难免会遇到你 “Fork” 的项目已经有了新的更新,这时当然是希望自己仓库中的代码也能同步进行更新。

  可是,你本地仓库所连接的远程仓库的是你自己的 GitHub 仓库,而不是原作者的仓库。

  需要为你的本地仓库再添加一个远程仓库源。

  步骤一:查看当前项目所连接的远程仓库,打开终端,进入到项目的 Git 仓库所在目录,一般就是项目目录,输入如下代码:

git remote -v

  可以看到目前只连接了我自己的远程仓库。

  步骤二:添加原作者的远程仓库连接,输入如下代码:

git remote add upstream git@github.com:lexiaoyao1995/weixin.git

   注意替换链接。

  查看连接情况,如下图所示:

   现在已经成功添加原项目的远程仓库了。

  步骤三:输入如下代码,从原项目的远程仓库中更新代码。

()从原仓库获取最新版本到本地
git fetch upstream master
()保证当前位于 master 分支上
git checkout master
()将最新版本整合到本地 master 分支上
git merge upstream/master
()将更新发送到自己的 GitHub 仓库里
git push origin master
()()()步可以用如下命令代替
git pull upstream master
但是这样不太安全,因为你 fetch(获取)之后可以通过
gitlog--oneline --graph --decorate --all
来查看更新的情况,再决定是否 merge(整合)到一起

  左边是你的本地仓库,中间是你在 GitHub 上 Fork 建立的仓库,右边是项目的原仓库。

如何利用 Git 与 GitHub 进行多人协作开发的更多相关文章

  1. Git详细教程(2)---多人协作开发

    Git可以完成两件事情: 1. 版本控制 2.多人协作开发 如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发. 如果有多个开发人员共同开发一个项目,如何进行协作的呢. Git提供了一个非 ...

  2. git 如何实现进行多人协作开发(远程仓库)

    第一.Git作为分布式的版本控制系统,你是你本地仓库的主人,但是想要实现多人的协作开发,你就要将你本地的开发推送到远程共享仓库中供大家下载,本篇主要以github作为远程服务器来介绍有关远程仓库这块内 ...

  3. Visual Studio C# 利用git和github协同开发时产生冲突的解决办

    Visual Studio C# 利用git和Github协同开发时产生冲突的解决办法 前言:在前两天的助教作业中,发现了自己没有办法解决在用vs开发C#的窗体项目的过程中产生的冲突问题,在查阅了资料 ...

  4. AndroidStudio中利用git下载github或者git.oschina的代码时报错:repository test has failed解决方法

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 微博:http://weibo.com/mcxiaobing AndroidS ...

  5. 利用git 进行多人协作开发

    现在,大部分项目都是用 git 来管理代码的,但当项目变大.多人协作时,git 的使用就变得复杂了,这时就需要在 git 使用的流程上来思考如何更优的使用 git. 对于大部分 web 项目而言,并不 ...

  6. 记录git多人协作开发常用的流程,供新手参考

    声明:博主写的博客都是经过自己总结或者亲测成功的实例,绝不乱转载.读者可放心看,有不足之处请私信我,或者给我发邮件:pangchao620@163.com. 写作目的: 记录一下我看完廖学锋老师的gi ...

  7. GitHub 多人协作开发 三种方式:

    GitHub 多人协作开发 三种方式: 一.Fork 方式 网上介绍比较多的方式(比较大型的开源项目,比如cocos2d-x) 开发者 fork 自己生成一个独立的分支,跟主分支完全独立,pull代码 ...

  8. Android Studio && GitHub 团队多人一起开发

    曾几何时,花了两天的时间搞了合并项目,搞得乱七八糟der,但最终还是被我搞定了,too 乱 to 做笔记.过了几个月,也就是前几天,抱着从头开始的决心,再次尝试,然鹅并没有结果.今天,再一次重新开始, ...

  9. Git详细教程---多人协作开发

    Git可以完成两件事情: 1. 版本控制 2.多人协作开发 如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发. 如果有多个开发人员共同开发一个项目,如何进行协作的呢. Git提供了一个非 ...

随机推荐

  1. JS设计模式(6)命令模式

    什么是命令模式? 定义:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化. 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录. ...

  2. win10更新后 chrome内核浏览器总是打开网页一直加载 甚至打不开 解决方法

    https://blog.csdn.net/qq754772661/article/details/81452131 升级win10之后如果出现chrome内核的浏览器网页总是打不开 打开很慢 而ie ...

  3. 在 Linux 上使用 VirtualBox 的命令行管理界面

    VirtualBox 拥有一套命令行工具,你可以使用 VirtualBox 的命令行界面 (CLI) 对远程无界面的服务器上的虚拟机进行管理操作.在这篇教程中,你将会学到如何在没有 GUI 的情况下使 ...

  4. HDFS数据节点DataNode未启动解决方法

    在解决这个问题的过程中,我又是积累了不少经验... 首先让我搞了很久的问题是,书上说进程全部启动的命令是/bin/start-all.sh,但是当我执行的时候显示command not found.后 ...

  5. C# 绘图

    e.Graphics.DrawLine (绘制一条连接由坐标对指定的两个点的线条) e.Graphics.DrawString (绘制指定位置的文本字符串) e.Graphics.DrawRectan ...

  6. .Net文件压缩

    NuGet中下载Ionic.Zip: public static class ZipHelper { /// <summary> /// 压缩文件 /// </summary> ...

  7. 线程(四)之Queue

    SynchronousQueue SynchronousQueue是无界的,是一种无缓冲的等待队列,但是由于该Queue本身的特性,在某次添加元素后必须等待其他线程取走后才能继续添加:可以认为Sync ...

  8. 不正常退出vim产生swp文件的解决方法

    vi -r README.txt恢复文件,这样上次意外退出没有保存的修改,就会覆盖文件. vi -r查看生成的交换文件 rm .README.txt.swp删除交换文件 搞定!下次打开文件就可以正常编 ...

  9. android -------- Retrofit + RxJava2.0 + Kotlin + MVP 开发的 WanAndroid 项目

    简介 wanandroid项目基于 Retrofit + RxJava2.0 + Kotlin + MVP 用到的依赖 implementation 'io.reactivex.rxjava2:rxj ...

  10. idea启动springboot项目 报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader()Ljava/lang/ClassLoader;

    有一次启动springboot项目的时候,报了一个非常奇怪的错误,说是找不到servletContext,springboot不是自带tomcat的吗? 在网上找了好久,说是用以下方式解决. 解决方式 ...