GitHub fork 合作开发 - 快速实现版
目录
- 一 预备条件
- 二 fork项目
- 三 将项目clone到本地
- 四 push代码到自己的仓库
- 五 通过pull request提交代码
- 六 通过本地配置upstream来同步更新主repo的内容
- 七 通过主repo创建pull request来同步更新主repo的内容
- 八 后记
一 预备条件
- windows用户安装git for windows客户端:https://gitforwindows.org/
- 已拥有GitHub帐号,并且配置好了sshkey
二 fork项目
- 浏览器登陆自己的GitHub帐号,打开你要fork的项目地址,如:https://github.com/southday/devtoolstest
- 点击右上角 Fork,如图:

- fork项目后,你就可以在自己的Repositories中看到刚才fork的项目,点击进入该项目

三 将项目clone到本地
- 打开devtoolstest项目后,点击右边绿色框的“Clone or download”,复制项目git地址

- 运行 Git Bash(也可以使用Git GUI),命令行进入到你要把项目clone到的位置,在该目录下执行命令:
- >git clone https://github.com/lcxv/devtoolstest.git

- cd 目录名 // 表示进入指定目录,支持相对路径和绝对路径
- cd .. // (2个点)表示退回到上一级目录
- cd . // (1个点)表示进入当前目录
- pwd // 显示当前所在目录
- ls // 展示当前目录下的内容
四 push代码到自己的仓库
- 进入到devtoolstest/目录下,创建:Test.java,编写输出Hello world的代码(或者在其他地方写好,拷贝到该目录下也行)
- 执行命令:>git add Test.java
- 执行命令:>git commit -m "添加 Test.java"
- 执行命令:>git push origin master
- 注:如果你之前没在本地Git for windows上登陆过GitHub,那么会提示你输入用户名、密码进行登陆;
- 注:关于git add、commit、push等命令的详细解释及相关概念,需要自行查阅资料,可以参考:Git教程 - 廖雪峰的官方网站
- >git lol 命令是用于查看项目提交、合并等记录,默认没有这个命令,是通过alias命令配置别名产生的,如果你想用该命令,需要先执行下面的命令进行别名设置:
- >git config --global alias.lol "log --graph --decorate --pretty=oneline --all --abbrev-commit"

- 显示提交成功后,打开浏览器,看看自己的devtoolstest项目(刷新一下页面),如我的地址是:https://github.com/lcxv/devtoolstest

- 点击 Test.java,就可以看到你之前提交的内容:

五 通过pull request提交代码
- 第4步结束,你的内容还只是提交到了你自己的repo上,并没有提交到主repo(即你Fork的repo)
- 把页面切换到 “Pull requests”,然后 New pull request

- 从 哪里(源)merge 到哪里(目的),这个根据具体情况选择,本例中是要把之前在lcxv/devtoolstest/中的Test.java merge 到 southday/devtoolstest/中,如下:

- 写上 Title 和 Write,然后 Create pull reques

- 然后对方(主repo)就会有关于你的 pull request,如下:

- 对方觉得你写的内容不错,就会同意你的请求,把代码合并到主repo中

六 通过本地配置upstream来同步更新主repo的内容
- 主repo中添加了一个文件“southday-add.md”,现在我们要在本地中同步该内容
- 先获取主repo项目的git地址,如本例中,主repo项目git地址为:https://github.com/southday/devtoolstest.git
- 命令行进入到本地仓库目录,然后执行下面的命令进行remote配置:
- >git remote add upstream https://github.com/southday/devtoolstest.git
- 然后执行命令:>git remote -v 检查是否配置成功,下面出现了 upstream 以及对应的主项目git地址,说明配置成功

- 执行命令:>git pull upstream master 来获取主repo中添加的“southday-add.md”文件

- 如果主repo不是添加文件,而是修改了原文件,比如修改了:"README.md" 文件
- 那么执行命令:>git fetch upstream 来更新修改内容

- 执行到这里,主repo的改动已经同步到了你的仓库中了(本地 & 远程),你可以刷新浏览器看看 lcxv/devtoolstest/中的内容有没有变
七 通过主repo创建pull request来同步更新主repo的内容
- lcxv 浏览器访问自己的repo(https://github.com/lcxv/devtoolstest),然后点击点击 New pull request,如下:

- 和第5步相反,我们现在是要将 southday/devtoolstest/中的内容 推给 lcxv/devtoolstest/,所以需要修改推送方向,如图:

- 源改为:southday/devtoolstest 后,页面会自动刷新,然后提示你:There isn’t anything to compare. 这是因为你没还没有修改目的仓库,源->源,肯定没东西可更新的,这时,点击稍微右上角的“compare across forks”,再将目的仓库改为:lcxv/devtoolstes


- 接下来的操作和第5步中的类似,创建 pull request 后,可以 Merge pull request

- 这样,你远程仓库中的内容就得到了同步,接下来用自己的远程仓库去同步本地仓库的内容,在本地仓库下执行命令:
- >git fectch origin
- >git pull origin master


八 后记
至此,GitHub fork 合作开发 快速实现版结束,需要注意:
- 本例中只讲了怎么操作,却没讲为什么这样做,所以需要自己去学习Git的相关知识
- 参与者一般是没有权限把代码直接 push 到 主repo的,大家都是走 pull request流程,这样多了一个审核步骤也比较稳妥
参考内容:
- Git教程 - 廖雪峰的官方网站
- git 简明指南
- 如何高效利用GitHub
- fork 同步更新:
- GitHub 实现多人协同开发权限控制
转载请说明出处,have a good time! :D
GitHub fork 合作开发 - 快速实现版的更多相关文章
- 在github fork的项目中推送与抓取
github -- fork提交项目:自己的仓库和原仓库进行Git同步的操作. 1. 获取你fork的原仓库的更新过的最新代码:如果没有远程原始分支则需要增加. git remote add upst ...
- 最新番茄花园win7系统快速稳定版
这是最新番茄花园win7系统64位快速稳定版 V2016年2月,该系统由系统妈整理和上传,系统具有更安全.更稳定.更人性化等特点.集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加 ...
- 雨林木风ghost win7 64位快速装机版V2016年
雨林木风ghost win7 64位快速装机版V2016年2月 系统下载:http://www.xitongma.com 系统概述 雨林木风ghost win7 64位旗舰装机版自动无人值守安装,采用 ...
- Win10系统64位快速专业安装版 V2016年
win10系统64位快速专业安装版 V2016年2月 系统下载:http://www.xitongma.com/ Ghost Win10 64位正式装机专业版2016 微软向Windows用户推送了w ...
- 系统妈Ghost Win10 64位快速安装版 V2016年2月
系统妈Ghost win10 64位快速安装版 V2016年2月,更新了最新系统补丁,升级系统版本号为2016年2月份.这款累积更新补丁会取代之前的版本.本系统还附带最常用的装机必备软件.QQ等. 系 ...
- 同步 Github fork 分支
/**************************************************************************** * 同步 Github fork 分支 * ...
- weblogic快速安装版的安装和使用
weblogic 12c提供了一个225MB大小的zip包, 我们下载下来之后解压后, 到jdk的bin目录下面, 执行java -jar ORACLE_HOME=[webloigc安装jar包绝对路 ...
- 从本地向 Github 上传项目步骤攻略(快速上手版)
最近想把之前自己做的一些好玩的项目共享到Github,网上找了一圈上传教程,都感觉写的太深奥.复杂,云里雾里,特把自己的方法纪录如下: PS:这种方式一般适用于:开始做项目时,没有直接在github上 ...
- 利用GitHub Pages + jekyll快速搭建个人博客
前言 想搭建自己博客很久了(虽然搭了也不见得能产出多频繁). 最初萌生想写自己博客的想法,想象中,是自己一行一行码出来的成品,对众多快速构建+模板式搭建不屑一顾,也是那段时间给闲的,从前后端选型.数据 ...
随机推荐
- 201771010135杨蓉庆《面向对象程序设计(java)》第四周学习总结
学习目标 1.掌握类与对象的基础概念,理解类与对象的关系: 2.掌握对象与对象变量的关系: 3.掌握预定义类的基本使用方法,熟悉Math类.String类.math类.Scanner类.LocalDa ...
- Ubuntu 16.04 安装ROS sudo rosdep init报错问题
解决博文:https://blog.csdn.net/weixin_37835458/article/details/79878785 输入sudo rosdep init报错如下: Tracebac ...
- navicat for mysql 中文破解版(无需激活码)
1.下载破解版Navicat for MySQ中文破解版 链接: https://pan.baidu.com/s/19BlJRx7tLnDPIM4U6DNWvA 提取码: d9ci 2.解压下载后的文 ...
- Live2d技术
保存一些关于Live2d技术的博文或模型资源,有空研究研究. 什么是 live2d?:https://baike.baidu.com/item/Live2D/8496493 1.https://www ...
- transform 的旋转 ,3d效果,要添加3d效果的父级加上景深perspective。 3d效果的容器加上 transform-style:preserve-3d。
该技术用于创建一个多维的数据,在这个实例中使用了两个元素用于正面和反面.前面用来放置产品图片,底部用来放置产品信息.默认情况下产品信息隐藏起来,同时鼠标悬停在产品图片上时,隐藏在底部的产品信息在X轴放 ...
- Dire Wolf HDU - 5115
题目链接 一开始很自然的想到了贪心,跑了一下贪心,发现无法处理某一段已经被选走的情况,根据数据范围,区间dp比较适合,能储存区间取样信息 设dp[i][j]为已经杀死区间[i,j]的最小值,可以得到转 ...
- kvm的分层控制
第五层 virsh virt-manager(和libvirtd)利用了libvirt-api virsh pool-list --all virsh pool-define xxx/xml会 ...
- 用Jackson进行Json序列化时的常用注解
Jackson时spring boot默认使用的json格式化的包,它的几个常用注解: @JsonIgnore 用在属性上面,在序列化和反序列化时都自动忽略掉该属性 @JsonProperty(&qu ...
- Python学习笔记002
字符编码:把二进制字符翻译成字符 ASCII码表 256 一个字节,8个比特 支持中文: GB2312 GBK1.0 GB18030 BIG5(台湾) unicode UTF-8 开头定义 ...
- MNIST手写数字分类simple版(03-2)
simple版本nn模型 训练手写数字处理 MNIST_data数据 百度网盘链接:https://pan.baidu.com/s/19lhmrts-vz0-w5wv2A97gg 提取码:cgnx ...