Github的Pull Request命令列管理
Github 的一大特色就是 Pull Request 功能(簡寫為 PR)。
一、Pull Request 是什麼?
Github 官方文件的定義如下。
"Pull Request 是一種通知機制。你修改了他人的程式碼,將你的修改通知原來的作者,希望他合併你的修改,這就是 Pull Request。"
Pull Request 本質上是一種軟體的合作方式,是將涉及不同功能的程式碼,納入主幹的一種流程。這個過程中,還可以進行討論、稽核和修改程式碼。
二、Pull Request 的流程
第一步,你需要把別人的程式碼,克隆到你自己的倉庫,Github 的術語叫做 fork。
第二步,在你倉庫的修改後的分支上,按下"New pull request"按鈕。
這時,會進入一個新頁面,有Base 和 Head 兩個選項。Base 是你希望提交變更的目標,Head 是目前包含你的變更的那個分支或倉庫。
第三步,填寫說明,幫助別人理解你的提交,然後按下"create pull request"按鈕即可。
PR 建立後,管理者就要決定是否接受該 PR。對於非程式碼變更(比如文件),單單使用 Web 介面就足夠了。但是,對於程式碼變更,Web 介面可能不夠用,需要命令列驗證是否可以執行。
三、git am
git am命令用於將一個 patch 檔案,合併進入當前程式碼。
Github 對每個 PR 會自動生成一個 patch 檔案。我們下載該檔案,合併進原生程式碼,就可以在本地檢視效果了。
$ curl -L http://github.com/cbeust/testng/pull/17.patch | git am
上面程式碼中,curl的-L參數列示,如果有302跳轉,curl會自動跟進。後面網址裡面的/cbeust/testng是目標倉庫,pull/17表示該倉庫收到的第17個 PR。
如果 PR 只包含一個 commit,那麼也可以直接下載這個 commit 的 patch 檔案。
$curlhttps://github.com/sclasen/jcommander/commit/bd770141029f49bcfa2e0d6e6e6282b531e69179.patch | git am
上面程式碼中,網址裡面的/sclasen/jcommander是程式碼變更所在的那個倉庫。
四、建立遠端倉庫
另一種方法是為 PR 建立一個遠端分支,追蹤提交者的倉庫。
//建立遠端倉庫,指向 PR 提交者的倉庫
$ git remote add nullin git://github.com/nullin/testng.git
//從該遠端倉庫拉取程式碼
$ git fetch nullin
//將該倉庫的某個分支合併到當前分支
$ git merge kneath/error-page
//推送到自己的倉庫
$ git push origin master
五、cherry-pick
有時,PR 裡面包含好幾個 commit,但是你只想合併其中的一個或幾個。
這時可以使用cherry-pick命令,挑出你感興趣的 commit。
//建立遠端分支,追蹤提交者的倉庫
$ git remote add nullin git://github.com/nullin/testng.git
//從該遠端倉庫拉取程式碼
$ git fetch nullin
//只將感興趣的 commit 加入當前程式碼
$ git cherry-pick commit1
$ git cherry-pick commit2
//推送到自己的倉庫
$ git push origin master
相關文章
- Pull Request 的命令列管理命令列
- 使用git處理github中提交有衝突的pull requestGithub
- Gitlab - Pull RequestGitlab
- GITLAB 中的 PULL REQUESTGitlab
- Git Fork Pull Request(PR)和Merge Request(MR)Git
- 如何將 Bitbucket 的 pull request 簽出到本地 reviewView
- [譯] Pull request review 的十大錯誤View
- git pull命令模式Git模式
- Git如何合併一個已經在GitHub上提交但沒有合併的Pull Request請求Github
- Git工作流指南:Pull Request工作流Git
- GIT團隊合作探討之二--Pull RequestGit
- GitHub Draft Pull請求支援新的協作流程GithubRaft
- 命令列的藝術 (GitHub 星標 6 萬多)命令列Github
- Dart + GitHub Actions:將 Windows/macOS/Linux 的命令列工具釋出到 GitHub ReleasesDartGithubWindowsMacLinux命令列
- Windows命令列下的程式管理薦Windows命令列
- 命令列方式管理NETBACKUP命令列
- Request 物件取陣列的方法物件陣列
- 【Git】fork遠端倉庫,fork倉庫同步和提交pull requestGit
- GitHub Desktop 3.0:幫你更好地整合 pull requestsGithub
- 基於命令列的工作管理員 Taskwarrior命令列
- Cypress系列(68)- request() 命令詳解
- Nmcli 網路管理命令列工具基礎命令列
- 解放雙手!推薦一款 GitHub 星標 8.2k+的命令列軟體管理器,非常酷炫!Github命令列
- scoop——強大的Windows命令列包管理工具OOPWindows命令列
- Pet:一個簡單的命令列片段管理器命令列
- Git命令大全(Github)Github
- gitHub 基礎命令Github
- 簡單對比git pull和git pull --rebase的使用Git
- ASM管理命令列三工具:KFOD、KFED和AMDUASM命令列
- GitHub:原始碼管理的利器Github原始碼
- Windows XP中的命令列命令Windows命令列
- pull解析
- 整合命令提示符、“多才多藝”的命令列檔案管理器 - CLEX命令列
- cmd 命令列 命令命令列
- windows命令列命令Windows命令列
- git命令列命令Git命令列
- 網路裝置配置與管理————10、命令列介面命令列
- ASM管理命令列三工具:KFOD、KFED和AMDU(上)ASM命令列