1. 程式人生 > >GitHub 的 Pull Request 是指什麼意思?

GitHub 的 Pull Request 是指什麼意思?

我嘗試用類比的方法來解釋一下 pull reqeust。想想我們中學考試,老師改卷的場景吧。你做的試卷就像倉庫,你的試卷肯定會有很多錯誤,就相當於程式裡的 bug。老師把你的試卷拿過來,相當於先 fork。在你的卷子上做一些修改批註,相當於 git commit。最後把改好的試卷給你,相當於發 pull request,你拿到試卷重新改正錯誤,相當於 merge。

當你想更正別人倉庫裡的錯誤時,要走一個流程:
  1. 先 fork 別人的倉庫,相當於拷貝一份,相信我,不會有人直接讓你改修原倉庫的
  2. clone 到本地分支,做一些 bug fix
  3. 發起 pull request 給原倉庫,讓他看到你修改的 bug
  4. 原倉庫 review 這個 bug,如果是正確的話,就會 merge 到他自己的專案中
至此,整個 pull request 的過程就結束了。

理解了 pull request 的含義和流程,具體操作也就簡單了。以 Github 排名最高的 github.com/twbs/bootstr 為例說明。
1. 先點選 fork 倉庫,專案現在就在你的賬號下了

<img src="https://pic1.zhimg.com/0d01d6aa4cc4330c525347e5b0a0ecb8_b.png" data-rawwidth="2054" data-rawheight="530" class="origin_image zh-lightbox-thumb" width="2054" data-original="https://pic1.zhimg.com/0d01d6aa4cc4330c525347e5b0a0ecb8_r.png">

<img src="https://pic3.zhimg.com/6aaed35908e74de871fcbed7c5affb0e_b.png" data-rawwidth="2010" data-rawheight="506" class="origin_image zh-lightbox-thumb" width="2010" data-original="https://pic3.zhimg.com/6aaed35908e74de871fcbed7c5affb0e_r.png">

2. 在你自己的機器上 git clone 這個倉庫,切換分支(也可以在 master 下),做一些修改。
~  git clone https://github.com/beepony/bootstrap.git
~  cd 
bootstrap ~ git checkout -b test-pr ~ git add . && git commit -m "test-pr" ~ git push origin test-pr
3. 完成修改之後,回到 test-pr 分支,點選旁邊綠色的 Compare & pull request 按鈕
<img src="https://pic2.zhimg.com/3e1ac7f58774a79a5dd6bf8e852e4199_b.png" data-rawwidth="2010" data-rawheight="476" class="origin_image zh-lightbox-thumb" width="2010" data-original="https://pic2.zhimg.com/3e1ac7f58774a79a5dd6bf8e852e4199_r.png">4. 新增一些註釋資訊,確認提交
4. 新增一些註釋資訊,確認提交
<img src="https://pic3.zhimg.com/f5ed68dfe4d60fe90e2fb22ec1933006_b.png" data-rawwidth="1658" data-rawheight="1294" class="origin_image zh-lightbox-thumb" width="1658" data-original="https://pic3.zhimg.com/f5ed68dfe4d60fe90e2fb22ec1933006_r.png">5. 倉庫作者看到,你提的確實是對的,就會 merge,合併到他的專案中5. 倉庫作者看到,你提的確實是對的,就會 merge,合併到他的專案中