如何利用 Git 与 GitHub 进行多人协作开发

1. 首先 “Fork” 他人的 repository(代码仓库)

       “Fork” 的名词是 “叉子” 的意思,不过这里取的是动词 “分叉,建一个分支” 的意思。进入你想参与合作开发的仓库界面,点击右上角的 “Fork” 图标,此时你已经复制了一个副本在你的 GitHub 仓库中了,或者是说一个新的代码仓库被创建了,可以打开你的 GitHub 主页看一看。

       注意,这个远程仓库是属于你自己的。这里 “Fork” 不同于 “Clone”,“Clone” 是发生在你的本地机器中,相当于你复制了一个完全相同的副本在你的终端上,但该副本的远程仓库连接的仍然是原作者的仓库,所以你并不是这个项目仓库的拥有者,没有更新它的权限。

       因此,“Fork” 正是我们所需要的。

        点击之后可以看到,自己帐号内有一个新的代码仓库被创建了。

      然后将这个代码仓库 “Clone”(克隆)到你的本地机器中,可以使用命令行或者 IDE(比如 Intellij IDEA)的 VCS 功能来实现。“Clone” 成功之后你就可以自主修改里面的内容,然后 “Push” 到远程仓库中,注意,这是你自己的远程仓库。但是不使用 “Fork”,而是直接 “Clone”(克隆)原作者的仓库的话,你会得到一个 “fatal: unable to access” 的提示,无法访问。

       在这一环节,所有的修改只发生在你的远程仓库中,原作者的代码仓库内容是不会发生任何改变的。这里最需要理解的是,“Clone” 下来的本地仓库连接的是你 GitHub 上的远程仓库。

2. 开始参与开发前的一些准备

(1)在你做任何开发前,最好先详细阅读该项目的 CONTRIBUTING.md 文件

(2)浏览该项目的 Issues(问题)公告,甚至可以自己创建一个 Issue

(3)一般不要将自己做的修改提交到 master branch(主分支)上,而是应该提交到某个明确的 topic branch(主题分支,解决某个bug或者添加某一功能的分支)上。注意,我们应该自己建一个 topic branch,然后在上面作修改,而不在 master 分支直接修改,因为这样更具有直观性。

(4)最好每次只提交较小的修改,并写好清晰明确的 Commit Messages(提交说明).

(5)如果有需要,请更新 README 文件

3. 创建一个 Pull Request

       按自己的需要去修改项目内容,然后将所做的修改提交(Add+Commit)到自己的代码仓库,接着到仓库页面,点击 New pull request 按钮。

       点击去之后可以看到,左边红框是你 “Fork” 的原项目仓库和分支,右边红框是你当前选择的项目仓库和分支。其实这里就是将两个红框内的内容作对比,并把不相同的地方显示出来。因为此时两个仓库和分支的内容是完全一样的,所有没有什么信息显示出来(我没有做修改)。不太理解的话,可以自由去尝试四个下拉框里不同的选项,很快你就会知道是怎么回事了。

       我这里任意选择了原项目的另一个分支,因为这两个分支不完全相同,所以可以看到出现了一个 “Create pull request” 的按钮,点击它。

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

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

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

4. 与原仓库保持同步更新

       说到合作开发就会有一个问题,如何与他人的代码保持同步?在自己做开发的过程中,难免会遇到你 “Fork” 的项目已经有了新的更新,这时当然是希望自己仓库中的代码也能同步进行更新。可是,你本地仓库所连接的远程仓库的是你自己的 GitHub 仓库,而不是原作者的仓库。解决方法其实很简单,为你的本地仓库再添加一个远程仓库源。

查看当前项目所连接的远程仓库

打开终端,进入到项目的 Git 仓库所在目录,一般就是项目目录,输入:

git remote -v

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

添加原作者的远程仓库连接

git remote add upstream https://github.com/GoogleChrome/lighthouse.git

(注意替换原仓库的 http 链接)

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

还差一点就大功告成了

(1)从原仓库获取最新版本到本地

git fetch upstream master

(2)保证当前位于 master 分支上

git checkout master

(3)将最新版本整合到本地 master 分支上

git merge upstream/master

(4)将更新发送到自己的 GitHub 仓库里

git push origin master

(1)(2)(3)步可以用

git pull upstream master

这条命令替代,可以这样不太安全,因为你 fetch(获取)之后可以通过

gitlog--oneline --graph --decorate --all

来查看更新的情况,再决定是否 merge(整合)到一起。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,978评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,954评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,623评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,324评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,390评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,741评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,892评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,655评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,104评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,569评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,254评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,834评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,725评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,950评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,260评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,446评论 2 348

推荐阅读更多精彩内容

  • 金蟾望月月无华,青头观龙龙有灵。 迷洞萦回无去处,飞石无声鸟兽散。
    唐璜一阅读 188评论 0 0
  • 晴空如洗,坐一朵巨大的云。 你静立草原,裙裾飞扬, 孤单的影子瘦成芒草。 及腰的黑精灵笑出声来, 沙哑,苍凉,温柔...
    司徒镜心阅读 274评论 0 1
  • 2015年收官,并不算完美,各大品类绿意盎然。 在这一片绿色之中,竟然还显现着一抹红,额外耀眼。飘红的品类逆市飞扬...
    柳二白阅读 491评论 0 0