本文翻譯自 GitHub 幫助文檔 Merging a pull request。
當(dāng)工作完成之后,就可以將 pull request 合并到上游分支上。任何對倉庫有 push 權(quán)限的人都可以將其合并。
如果在合并 pull request 時沒有任何沖突,你就可以在 GitHub 上直接合并。如果在合并 pull request 時有沖突,或者你想在合并之前先測試一下,你可以先在本地查看 pull request,然后通過命令行進(jìn)行合并。
在考慮之后,如果不想把話題分支(pull request 所在的分支)上的改動合并到上游分支上,你可以不做任何合并,直接關(guān)閉 pull request。
設(shè)置審查(Required reviews)
在 pull request 合并到受保護(hù)的分支之前,倉庫管理員可以要求必須經(jīng)過指定數(shù)量的有 write 或 admin 權(quán)限的人或者特定代碼所有者的審查。
當(dāng)需要審查時,任何有倉庫權(quán)限的人都可以批準(zhǔn) pull request 的改動。當(dāng)有具有倉庫 write 或 admin 權(quán)限的審核員同意修改,并且同意的人數(shù)達(dá)到指定的數(shù)量之后才能將 pull request 進(jìn)行合并。 關(guān)于倉庫的權(quán)限等級,可以查看組織中倉庫的權(quán)限等級。如果需要指定代碼的所有者進(jìn)行審查,而且 pull request 改動了指定所有者的代碼,則需要該所有者的批準(zhǔn)。
如果一個人的改動無法被審查,或者一個 pull request 在審查之后又做了明顯的改動,則倉庫管理員或者任何有 write 權(quán)限的人都可以拒絕審查。更多信息,請看拒絕 pull request 的審查。
當(dāng)一個 pull request 滿足所有要求的審核之后,如果有其他的 pull requests 的頭部分支(header branch)和它指向了相同的提價(commit),并且這些 pull requests 正處于待審核或拒絕審核的狀態(tài),這時你依然無法合并。在能夠合并之前,需要一個具有 write 或 admin 權(quán)限的人審核通過或者拒絕這些阻塞的 pull requests。
在 GitHub 上合并一個 pull request
-
在你的倉庫名稱下面,點(diǎn)擊 Pull requests。
Pull requests 在 “Pull Requests” 列表里,點(diǎn)擊你想合并的 pull request。
-
當(dāng)合并選項在你的倉庫中處于可用狀態(tài)時,你可以:
-
將所有提交合并到基礎(chǔ)分支:通過點(diǎn)擊 Merge pull request。如果沒有展示 Merge pull request 選項,則點(diǎn)擊合并下拉菜單,然后選擇 Create a merge commit。
Merge pull request -
壓縮合并 pull request 的提交:通過合并下拉菜單,選擇 Squash and merge,然后點(diǎn)擊 Squash and merge 按鈕。
Squash and merge -
將提交單獨(dú)變基到基礎(chǔ)分支上:通過合并下拉菜單,選擇 Rebase and merge,然后點(diǎn)擊 Rebase and merge 按鈕。
Rebase and merge
注意:變基合并將會更新提交者信息,并創(chuàng)建新的提交 SHAs。更多的信息,請查看 pull request 的合并。
-
將所有提交合并到基礎(chǔ)分支:通過點(diǎn)擊 Merge pull request。如果沒有展示 Merge pull request 選項,則點(diǎn)擊合并下拉菜單,然后選擇 Create a merge commit。
-
如果你在第三步點(diǎn)擊了 Merge pull request 或者 Squash and merge,輸入提交信息,或者使用默認(rèn)的信息,然后在提交信息的輸入框下面點(diǎn)擊 Confirm merge 或者 Confirm squash and merge 進(jìn)行合并。
pullrequest-commitmessage 如果你在第三步點(diǎn)擊了 Rebase and merge,則點(diǎn)擊 Confirm rebase and merge 進(jìn)行合并。
推薦刪除這個分支,這可以使倉庫的分支列表保持簡潔。
使用壓縮(squashed)或者變基提交(rebased commits)的方式合并 pull requests 時使用 fast-forward 選項,其它的則通過使用 --no-ff 選項進(jìn)行合并。
你可以在 pull request 或者提交信息中使用關(guān)鍵字來關(guān)閉相應(yīng)的 issues。更多的信息,可以查看使用關(guān)鍵字關(guān)閉 issues。




