github Pull请求(Pull request)

Pull请求是一个非常棒的方式,通过fork一个新的代码库用来独立开发,并将变更贡献回原始代码库。在一天结束的时候,如果我们愿意,我们可以发送一个pull请求给代码库所有者,来合并我们的代码更改。Pull请求本身可以引起合作者之间的评论,包括代码质量,功能,甚至总体战略等。

现在让我们浏览一个pull请求的基本步骤。

发起一个Pull请求

GitHub有两种Pull请求方式:

  1. Fork & Pull 方式 – 用于在公共库中,我们没有推送(push)权限。
  2. 共享库方式 – 用于私有代码仓库,我们有推送(push)权限。这种情况下没有必要进行fork。

下面的工作流程是在两个用户(原始代码库拥有者,和fork代码库拥有者)之间的fork-pull方式:

  1. 进入你想贡献修改的GitHub代码库,单击“Fork”按​​钮来创建自己的Github帐户上的代码库克隆:


  2. 这将在自己的帐户上创建一个该代码库的复制:


  3. 选择 SSH URL,那样它会自动使用你自己的SSH密钥,而不用每次在git pull或者push时询问你的用户名和密码。下一步,我们将克隆一份代码库到本地计算机:

    $ git clone [ssh-url] [folder-name]
    $ cd [folder-name]
    
  4. 一般情况下,每一个新的功能,我们将创建一个新的Git分支。这是一个很好的做法,因为在未来,如果经过一番讨论后我们需要进一步更新分支,Pull请求将被自动更新。让我们创建一个新的分支做一个非常简单的变化修改的readme.md文件:

    $ git checkout -b [new-feature]
    
  5. 在为这个新功能增加文件后,我们只需要将修改提交到这个新分支上,然后切换回master分支:

    $ git add .
    $ git commit -m "information added in readme"
    $ git checkout master
    
  6. 在这里,我们需要将新分支推送到远程代码仓库里。首先,我们需要检查这个新功能的分支名称以及其在远程仓库的别名,然后我们用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
    
  7. 进入我们fork的代码库的GitHub页面,选择为这个新功能建立的分支,然后点击Pull Request按钮:

    id="iframe_0.5736278258840728" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://cdn.tutsplus.com/net.tutsplus.com/authors/sayanee-basu/github-team-pull-request.png?_=3950778%22%20style=%22border:none;max-width:849px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.5736278258840728',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no" style="margin: 0px; padding: 0px; border-width: initial; border-style: none; width: 19px; height: 19px;">

  8. 提交Pull请求后,页面将直接跳转到原始库的Pull请求页面,我们将看到我们提交的Pull请求,作为一个新的问题,以及作为一个新的pull请求。


  9. 在经过讨论后,fork的代码库的作者可能想为这个新功能增加一些新的改动。在这种场景下,我们需要在本地计算机上checkout这个同样的分支,修改,提交,并推送回GitHub。当我们再次访问原代码库的pull请求页面的时候,会发现上次提交的Pull请求已经自动更新了。


合并一个Pull请求

如果你是原始代码库的所有者,你将有两种方式来合并收到的Pull请求。

  1. 直接在GitHub上合并:如果我们想直接在GitHub上进行合并,必须确保没有冲突。原始库的所有者可以通过简单地点击Merge Pull Request按钮来进行合并:


  2. 在本地计算机上进行合并:另外一种情况,合并的时候可能会遇到冲突,点击上部的Info图标,GitHub有非常清晰的指导,怎么从贡献者的分支上下拉代码变更到本地,合并并解决冲突。


在软件开发团队中有很多不同的代码分支模型。这里有两种非常常用的工作流程模型:

至于采用何种分支模型,取决于团队,项目,以及当时的状态。

### 回答1: GitHub pull request 指在 GitHub 上发起的一种请求,用于将您的更改合并到另一个项目的主干分支中。当您在 GitHub 上的某个项目中进行了修改并准备将其提交给项目维护者时,可以使用 pull request。项目维护者会收到您的请求并对其进行审核,如果批准,则会将更改合并到主干分支中。 ### 回答2: GitHub pull request是一种让开发者为开源项目做出贡献的方式。当一个开发者想要为一个开源项目提交代码,但是不直接拥有项目的权限时,他们就可以通过GitHub pull request来为该项目提交代码。 在GitHub pull request中,开发者可以将他们的代码分支(branch)提交给项目的维护者。这个分支包含了开发者的修改代码。维护者可以查看代码,提出意见或更改(coder review),并将代码合并(merge)到主代码库中。 GitHub pull request从根本上改变了软件开发的方式,使得代码管理和协作更加容易和高效。开发者们可以在GitHub上针对特定的问题、新功能等等提交Pull Request,与其他开发者进行讨论和合作,甚至在被提交到主分支之前就可以帮助维护者发现问题并进行更改。 通过GitHub pull request,开发者可以参与到许多的开源项目中,并且通过社区的力量来进行代码贡献。在这个过程中,他们可以学习到其他开发者的开发技能,同时也可以获得代码贡献的证明和其他项目的奖励。 ### 回答3: GitHub是一个强大而且流行的代码托管和版本控制平台,它允许多人协同开发项目,并允许外部人员对项目进行贡献。而pull request就是其中一个重要的功能。 在GitHub上,用户可以fork(分叉)一个开源项目到自己的账户下,进行修改和改进。然后,他们可以将这些修改请求合并到原始项目中,方法是通过pull request(拉请求)。通过向主项目的维护者发送一个pull request请求他们合并你的更改,你可以对其他开发者展示你所做的修改,并且可以与整个GitHub社区共享您所做的工作。 pull request不仅仅是展示你所做的工作,它也是开源社区审核的一种重要方式,因为它允许其他开发者来评论你的更改!这些反馈可以来自所有地方:来自主项目维护者、其他贡献者、其他用户,它们可以将代码中的语义错误、功能问题、 bug等等发现。 在发起pull request之前,你应该遵循一些最佳实践。首先,确保你的fork是基于最新的主项目;其次,在你的分支上开发和测试代码,避免提交任意类型的错误代码;最后,严格遵循主项目的一些代码规环(如:文件格式、编码规范等)。这些最佳实践将让主项目的维护者更容易接受你的pull request。 总之, pull requestGitHub系統的一種功能,它使软件开发更加透明、明确、容易跟踪,可以加强开源社区代码的审核和共享,提高团队整体的代码水品和项目开發效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值