从一个dev分支向master发起pull request:
先说这个行为背景:前提是你fork了别人的code,你在人家code的基础上进行了修改,然后呢,你想把你修改的这部分代码贡献给原始的那个仓库(原作者代码),那你这时就需要给原始repository发起一个pull request,当人家check通过后,你的代码才能真正合并到原始那个repository中。当然,也并不是说非得你fork人家的code了,也可能是同一个code repository,有多个分支,你基于某个分支进行了修改,最后想把修改后的内容合并到master上,也可以发起pull request,最后相应的管理员就会审核你的pr,审核通过后就能完成上述操作。也就是pull request的应用场景是:合并申请需要在两个不同分支或者不同仓库之间进行。
但是我们会很容易想到,那这个pull request和分支dev上的代码合并到master上 ,这两种操作有什么区别呢?
我的理解:其实目的是一样的,区别就在于pull requst是合并申请,重点是申请,也就是说最终合并与否是需要 人 来审核的。而我们普通意义上的分支code合并到master上并不涉及到申请,审核的过程。
附上pull rerequest的官方解释:
Pull requests let you tell others about changes you've pushed to a branch in a repository on GitHub. Once a pull request is opened, you can discuss and review the potential changes with collaborators and add follow-up commits before your changes are merged into the base branch.
翻译过来就是,pr的作用是将你对code的改变通知到其他人,一旦创建了pr,你可以和其他人一起进行审核,查验,讨论交流,最终才会merge到master上。
再借用别人的翻译:"Pull Request 是一种通知机制。你修改了他人的代码,将你的修改通知原来的作者,希望他合并你的修改,这就是 Pull Request。"
无论是基于repository的修改,还是基于某个branch的修改,我们在进行修改操作之前是需要先fork这个repository或者是基于这个branch再new一个branch,因此在最终发起pull request的时候,会有一个base(原repository或者branch),一个compare(你修改后的repository或者new branch),然后基于这两部分内容进行pr。
至于发起Pull request的步骤,这里使用github 提供的可视化界面进行操作,指定base,compaer,并填写操作信息,最后创建pr。