赞
踩
下面的工作流程是在两个用户(原始代码库拥有者,和fork代码库拥有者)之间的fork-pull方式:
进入你想贡献修改的GitHub代码库,单击“Fork”按钮来创建自己的Github帐户上的代码库克隆:
这将在自己的帐户上创建一个该代码库的复制:
选择 SSH URL,那样它会自动使用你自己的SSH密钥,而不用每次在git pull或者push时询问你的用户名和密码。下一步,我们将克隆一份代码库到本地计算机:
- $ git clone [ssh-url] [folder-name]
- $ cd [folder-name]
一般情况下,每一个新的功能,我们将创建一个新的Git分支。这是一个很好的做法,因为在未来,如果经过一番讨论后我们需要进一步更新分支,Pull请求将被自动更新。让我们创建一个新的分支做一个非常简单的变化修改的readme.md文件:
$ git checkout -b [new-feature]
在为这个新功能增加文件后,我们只需要将修改提交到这个新分支上,然后切换回master分支:
- $ git add .
- $ git commit -m "information added in readme"
- $ git checkout master
在这里,我们需要将新分支推送到远程代码仓库里。首先,我们需要检查这个新功能的分支名称以及其在远程仓库的别名,然后我们用git push [git-remote-alias] [branch-name]
推送这个变更。
- $ git branch
- * master
- readme
- $ git remote -v
- origin git@github.com:[forked-repo-owner-username]/[repo-name].git (fetch)
- origin git@github.com:[forked-repo-owner-username]/[repo-name].git (push)
- $ git push origin readme
进入我们fork的代码库的GitHub页面,选择为这个新功能建立的分支,然后点击Pull Request
按钮:
提交Pull请求后,页面将直接跳转到原始库的Pull请求页面,我们将看到我们提交的Pull请求,作为一个新的问题,以及作为一个新的pull请求。
在经过讨论后,fork的代码库的作者可能想为这个新功能增加一些新的改动。在这种场景下,我们需要在本地计算机上checkout这个同样的分支,修改,提交,并推送回GitHub。当我们再次访问原代码库的pull请求页面的时候,会发现上次提交的Pull请求已经自动更新了。
合并一个Pull请求
如果你是原始代码库的所有者,你将有两种方式来合并收到的Pull请求。
直接在GitHub上合并:如果我们想直接在GitHub上进行合并,必须确保没有冲突。原始库的所有者可以通过简单地点击Merge Pull Request
按钮来进行合并:
在本地计算机上进行合并:另外一种情况,合并的时候可能会遇到冲突,点击上部的Info
图标,GitHub有非常清晰的指导,怎么从贡献者的分支上下拉代码变更到本地,合并并解决冲突。
你可以提出更改(把它们添加到暂存区),使用如下命令:
git add <filename>
git add *
这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:
git commit -m "代码提交信息"
现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。
你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:
git push origin master
可以把 master 换成你想要推送的任何分支。
如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
git remote add origin <server>
如此你就能够将你的改动推送到所添加的服务器上去了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。