GitHub 的 Pull Request 是指什麼意思?
阿新 • • 發佈:2019-01-02
我嘗試用類比的方法來解釋一下 pull reqeust。想想我們中學考試,老師改卷的場景吧。你做的試卷就像倉庫,你的試卷肯定會有很多錯誤,就相當於程式裡的 bug。老師把你的試卷拿過來,相當於先 fork。在你的卷子上做一些修改批註,相當於 git commit。最後把改好的試卷給你,相當於發 pull request,你拿到試卷重新改正錯誤,相當於 merge。
當你想更正別人倉庫裡的錯誤時,要走一個流程:
理解了 pull request 的含義和流程,具體操作也就簡單了。以 Github 排名最高的 https://github.com/twbs/bootstrap 為例說明。
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 下),做一些修改。
<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,合併到他的專案中
當你想更正別人倉庫裡的錯誤時,要走一個流程:
- 先 fork 別人的倉庫,相當於拷貝一份,相信我,不會有人直接讓你改修原倉庫的
- clone 到本地分支,做一些 bug fix
- 發起 pull request 給原倉庫,讓他看到你修改的 bug
- 原倉庫 review 這個 bug,如果是正確的話,就會 merge 到他自己的專案中
理解了 pull request 的含義和流程,具體操作也就簡單了。以 Github 排名最高的 https://github.com/twbs/bootstrap 為例說明。
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. 新增一些註釋資訊,確認提交
<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,合併到他的專案中