目录
一 预备条件
二 fork项目
- 浏览器登录本身的GitHub账号,打开你要fork的项目地址,如:https://github.com/southday/devtoolstest
- 点击右上角 Fork,如图:

- fork项目后,你就能够在本身的Repositories中看到刚才fork的项目,点击进入该项目

回到目录java
三 将项目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,就能够看到你以前提交的内容:

回到目录linux
五 经过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中

回到目录git
六 经过本地配置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/中的内容有没有变
回到目录github
七 经过主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


回到目录windows
八 后记
至此,GitHub fork 合做开发 快速实现版结束,须要注意: 浏览器
- 本例中只讲了怎么操做,却没讲为何这样作,因此须要本身去学习Git的相关知识
- 参与者通常是没有权限把代码直接 push 到 主repo的,你们都是走 pull request流程,这样多了一个审核步骤也比较稳妥
参考内容:ssh
转载请说明出处,have a good time! :Dide
回到目录学习