例如 要fork一份google的MLperf/inference代码,下面介绍具体做法:
预备知识
git里的参考有几种表示,分别是上游仓库,远程仓库和本地仓库,逻辑关系如下
拉取代码的顺序:
别的大牛的代码(上游仓库)---------->你fork的代码(远程仓库)---------->你电脑的代码(本地仓库)
提交代码的顺序:
别的大牛的代码(上游仓库)<----------你fork的代码(远程仓库)<----------你电脑的代码(本地仓库)
每个仓库主分支是master,还可以有其它分支
上游仓库的表示为 upstream,远程仓库表示为origin

具体步骤
1、进入MLperf/inference仓库,点击fork按钮,拷贝代码到自己的git账号的仓库里

2、之后再自己的账号里就可以看到fork的代码了,可以看到代码的fork来源,即上游仓库地址


3、下载代码到你的本地电脑里,windows可以使用GitBash工具类似linux命令行的操作
下面是在本地电脑里进行的操作:
# 创建inference目录
$ mkdir inference
# 切换到inference目录
$ cd inference
# 创建并初始化git库
$ git init
# 添加远程git仓库
$ git remote add origin https://github.com/yananYangYSU/inference.git
# 添加SSH秘钥到git远程库,邮箱可以从git账号里查看
$ ssh-keygen -t rsa -C "1131074225@qq.com"

# 查看秘钥
cat ~/.ssh/id_rsa.pub

# 复制添加到你git账号里的ssh key列表里,就可以通过安全认证传输数据了


# 将远程git库代码下载到本地 (origin代表远程仓库,master代表主分支)
git pull origin master

代码下载完了之后,这时候你本地仓库和远程仓库的代码一致了,接下来对代码进行修改
4、修改本地仓库的代码并提交到远程仓库
假设我们要修改README.md文件,有两种方式可供选择:
---------------------------------------------------------------------------------------------------------------------------
第一种方式,直接在master分支上做修改,命令如下:
# 修改README.md
$ echo "abc" >> README.md
# 添加要提交的临时文件
$ git add README.md
# 提交更改
$ git commit -m 'commit'
# 将本地仓库的修改上传到远程仓库
$ git push -u origin master

---------------------------------------------------------------------------------------------------------------------------
第二种方式,在master分支基础上切出一个dev分支,然后在dev分支上修改,修改完成后,再将dev分支merge到master分支
# 首先切换到dev分支
$ git checkout -b dev
$ echo "abc" >> README.md
# 添加要提交的临时文件
$ git add README.md
# 提交更改
$ git commit -m 'commit'
# 将本地仓库的修改上传到远程仓库
$ git checkout master
$ git merge dev
# 将本地仓库的修改上传到远程仓库
$ git push -u origin master
---------------------------------------------------------------------------------------------------------------------------
注意如果再push之前,上游仓库有人做了代码修改,那么此时你本地和远程仓库的代码就不是最新的了,此时需要把上游仓库的代码合并到本地,然后再push到远程仓库
# 添加上游仓库地址
$ git remote add upstream https://github.com/mlperf/inference.git
# 查看 origin 和 upstream 对应的仓库是否正确
$ git remote -v

origin对应的是自己github的地址,即yourname/project
upstream对应的是原项目的地址,即sourcename/project
# 从上游仓库获取最新的代码合并到自己本地仓库的master分支上
$ git pull upstream master
推荐每次代码待提交前,都从原项目拉取一下最新的代码,最后再使用git push命令将改动同步到自己的Github远程仓库中:
$ git push -u origin master
5、将远程仓库的代码提交到上游仓库:
进入GitHub账号的远程仓库,此时已经能够看到刚刚从本地仓库提交的修改了,然后点击New pull request

进入结果对比页面,如下图所示:

可以看到从远程库的master分支向上游仓库的master分支申请提交代码
Able to merge代表你的代码与上游代码没有冲突,可以提交
然后点击 create pull request,进入下面页面:

填写注释,描述你所作的修改,然后点击右下角提交

然后进入上游仓库的地址,在上游仓库的Pull requests列表里就可以看到自己的提交请求了,等待作者审核即可

附录:
如果是google的代码,那么提交代码要同意开发者协议,此时需要注册Gmail邮箱,申请Google Individual CLA,然后使用通过验证的gmail邮箱去修改并提交代码,google的robot才会通过你的代码提交验证,不然提交的pull request申请是无法通过校验的
准备好gmail邮箱后,在github的账号里配置个人配置github邮箱

然后在git命令行里也要设置提交代码的邮箱
git config --global user.email example@gmail.com
然后再进行步骤1

Git如何fork别人的仓库并作为贡献者提交代码的更多相关文章

  1. Git的基本了解与使用、向github提交代码

    #Git的基本了解与使用.向github提交代码- git:是一个版本控制系统.- github:一个代码托管提供商.开源网站.是一个面向开源及私有软件项目的托管平台,因为支持Git作为唯一的版本库格 ...

  2. git常用命令以及如何与fork别人的仓库保持同步

    简单常用命令1.git status查看当前仓库是否有文件改动a:提示Your branch is up-to-date with 'origin/master'.nothing to commit, ...

  3. idea git拉取、合并、处理冲突、提交代码具体操作

    早在两个月前我还在用eclipse开发,并且也发布的一些eclipse git的相关操作(操作都是本人亲自实践过的),但由于项目团队要求,开发工具统一用idea,实在不得已而为之切换了开发工具, 初次 ...

  4. git 更新fork的远程仓库

    1.添加远程仓库到本地remote分支 git remote add upstream git@github.com:apache/flink.git # 远程仓库地址 2.查看当前仓库的远程分支 g ...

  5. Git Fork别人的代码后如同步别人的代码

    在git上fork别人的代码后,如果别人代码有更新,自己fork的代码是不能自动更新的.需要手动操作. git remote -v 查看是否有远程分支的别名.例如:git remote -v 后显示如 ...

  6. 使用Git初始化本地仓库并首次提交代码

    本文介绍使用Git初始化本地仓库,并首次提交代码到远程仓库GitLab上面. 首先,登录GitLab,创建一个新项目的私人仓库: 然后,在本地仓库(就是你写代码文件夹),右键,Git Bash Her ...

  7. Git安装与配置,以及pycharm提交代码到github

    1.下载git,安装 下载好后直接下一步到底,安装成功(选择组件页面,可以勾选上控制台窗口字体选项,如下图) 2.配置Git信息 1.打开窗口中,输入:git --version 查看已安装的git版 ...

  8. fork 了别人的仓库后,如何将自己的代码和原仓库保持一致

    fork 了别人的仓库后,如何将自己的代码和原仓库保持一致 git remote add upstream http:// git fetch upstream  

  9. Git 执行 「fork 出来的仓库」和「最新版本的原仓库」内容同步更新

    当我们在 GitHub 上 fork 出一个仓库后,如果原仓库更新了,此时怎样才能保证我们 fork 出来的仓库和原仓库内容一致呢?我们一般关注的是仓库的 master(主干分支)的内容,通过以下步骤 ...

随机推荐

  1. 并发新构件之CountDownLatch

    CountDownLatch译为倒计时锁存器:JDK描述     :允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助. A CountDownLatch用给定的计数初始化. awai ...

  2. Chrome 和 Chromedriver 的安装和配置

    1.Chrome 下载安装地址:https://www.google.com/intl/zh-CN_ALL/chrome/ 2.Chromedriver的安装 方法一: (1) brew cask i ...

  3. Celery的使用完成异步任务与定时任务

    0917自我总结 Celery的使用 一.官方文档 Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryp ...

  4. ASP.NET Core API ——Dapper的使用

    ASP.NET Core API ——Dapper的使用 简介:Dapper是一个ORM框架,负责数据库和程序语言之间的映射. 使用步骤: l  创建一个IDBConnection的接口对象 l  编 ...

  5. ‎Cocos2d-x 学习笔记(25) 渲染 绘制 Render

    [Cocos2d-x]学习笔记目录 本文链接:https://www.cnblogs.com/deepcho/p/cocos2dx-render.html 1. 从程序入口到渲染方法 一个Cocos2 ...

  6. TCP Traffic Analyzer

    TCP Traffic Analyzer 工具yahoo 发布的一款开源网络分析工具,可以分析网络应用在服务器端与客户端之间的运行状态Yconalyzer保持与tcpdump兼容,两者生成的抓取文件能 ...

  7. MFC::Visual studio ? 对应VC6-14

    VC6VC7: Visual studio.netVC7.1: Visual studio 2003VC8: Visual studio 2005VC9: Visual studio 2008VC10 ...

  8. WPF使用border画框

    以前的界面中使用的框大都是由美工做好的,但是这样就遇到几个问题: 框只是换一个颜色,就需要多做出一张图,资源包中也要多一个图片资源: 文字的数量会改变,用一张固定的图进行拉伸,边角处会变得越来越不尽如 ...

  9. POI读入Excel用String读取数值类型失真问题(精度丢失)

    问题:POI读取Excel数值单元格时,读取的小数数值与真实值不一致 话不多说,直接上代码! public static String getRealStringValue(Cell cell) { ...

  10. 5.Linux文件管理相关命令(下)

    1.文件管理之:联网下载文件(wget.curl).文件上传与下载(rz.sz) 1.wget命令 1.CentOS7 系统最小化安装默认没有wget命令,需要进行安装 [root@oldboyedu ...