一天1300 Star量,GitHub上新官方命令行工具
- 2020 年 2 月 23 日
- 筆記
機器之心報道
參與:思
不想用命令行操作 GitHub 的開發者,不是好的開發者。——不是我說的
小編私以為,Git 是世界上最好的程式碼版本控制工具,木有之一。在做項目的時候,通常我們會在本地寫程式碼,並通過 Git 命令行追蹤所有修改痕迹。如果你想託管或開源,也可以直接用 Git 把整個項目推送到 GitHub 上。
一般而言,Git 主要都是通過命令行操控,add、commit、push 三道命令一氣呵成。當然 Git 也可以查看程式碼文件狀態或回溯歷史程式碼等等。自從有了 Git,命令行工具看起來都炫酷了許多。

Git 極簡教程:第一步添加修改的程式碼文件,第二步將修改提交到本地程式碼庫中,第三步將本地程式碼庫推送到遠程程式碼庫。
當我們將本地程式碼提交到 GitHub 後,那麼就可以在 GitHub 網站上查看各種交互資訊了,例如其它開發者提的 Issue,或者提交的程式碼合併請求等。但是,如果我們能在命令行上直接查看、處理這些資訊,那麼這一定非常酷。從 Git 到 GitHub,命令行能提供一條龍服務。
近日,GitHub 就滿足了這種想像,其新發布了新命令行工具「GitHub CLI」,該工具能無縫對接 GitHub。正如部落格所說的:「gh 命令將把 GitHub 的操作體驗,都搬到命令行中」。

現在,macOS、Windows 和 Linux 都能安裝這個命令行工具包。雖然 GitHub CLI 目前仍然是 Beta 版,但從我們的體驗上,還是非常友好的。此外,儘管是新項目,但其已經有了 4.8K 的 Star 量,且剛推出 Beta 一天就增長了 1.3K。
工具地址:https://cli.github.com/
開源地址:https://github.com/cli/cli
上手 GitHub CLI
因為我們試用的系統的 macOS,按照官方文檔,直接用 Homebrew 就好了,不需要額外的操作。安裝後第一個疑惑就是,它怎麼知道我的 GitHub 是啥?果然,運行命令之前是需要授權的。不過這個授權也是異常簡單,只要在 GitHub 網頁上點擊確定就行了,gh 會自動登錄我們的 GitHub 帳號。

後面轉到本地的 GitHub 項目,現在 gh 命令就沒問題了。如下我們先互動式地提交了一條 Issue,Issue 的 Body 需要通過 nano 編輯。

是的,互動式 Issue 最後還是會打開網頁,預覽並提交。當然,我們也可以選擇直接在命令行提交。在 GitHub 部落格、文檔中,我們可以找到更多的玩法,如下我們就會介紹一部分。
GitHub 首先介紹的是 Issue 和 Pull Requests 兩個任務的用法,因為大多數開發者每天都會和它們打交道,後文將分為五步一一展示。同時,如果我們對某個開源項目提交程式碼或者進行其它操作,gh 命令也會給你不一樣的體驗。
gh 使用手冊:https://cli.github.com/manual/
1. 按需篩選 Issue
現在,我們找一個想要對它做點什麼的開源項目,然後下載到本地。如果我們想看看維護者希望獲得幫助的條目,那麼可以使用 gh 來過濾不同的 Issue。如下所示將篩選出關於「help-wanted」的 Issue:

2. 快速瀏覽
如果找到了一條你能解決的 Bug,使用 gh 能快速在網頁上展示這條 Issue 的細節。

3. 創建 Pull Request
創建一條分支,並提交一些程式碼以修復前面 Issue 提到的 Bug,然後就可以提交一條 PR 來分享你的貢獻了:

如果使用 GitHub CLI 創建 Pull Request,且你之前沒有 Fork 這個項目,那麼命令工具會自動 Fork 它。命令工具會將分支推送上去,並提交 PR 以等待合併修改。
4. 查看 PR 狀態
等到第二天,你就可以瞄一眼提交的 PR 到底有什麼改變。gh 命令可以展示 Pull Request 的狀態,並預覽它:

5. 檢查 Pull Request
一旦項目維護者看到了你提交的 PR,並作出回饋,我們就可能已經切換了分支。所以,可以使用 gh 來檢查 Pull Request 分支:

修正程式碼、推送程式碼然後合併程式碼,現在你已經會 GitHub CLI 的基本操作了。後面,隨著命令行工具越來越強大,也許 GitHub 更多更便捷的能力也能加進來,例如瀏覽程式碼等等。
本文為機器之心報道,轉載請聯繫本公眾號獲得授權。
✄————————————————
加入機器之心(全職記者 / 實習生):hr@jiqizhixin.com
投稿或尋求報道:content@jiqizhixin.com
廣告 & 商務合作:bd@jiqizhixin.com