提升 GitHub CLI 效率:gh repo clone 命令自動完成腳本

更新於 發佈於 閱讀時間約 6 分鐘
raw-image

你是否曾經想在命令列使用 GitHub CLI 執行克隆(Clone)指令時,因為記不住儲存庫名稱,而要一邊看著一邊輸入,感覺既花時間又容易出錯? 我也經常遇到這樣的煩惱。作為一名每天需要處理多個儲存庫的開發人員,我深切渴望有一個更好的解決方案。因此,我精心編寫了一個能擴充 gh repo clone 命令的自動完成腳本,好讓​這個指令更加完善且易於使用。

為什麼要擴充自動完成功能

gh repo clone 命令的功能強大,擁有豐富的選項,但 GitHub CLI 內建的自動完成功能並不夠全面,未能囊括該命令的所有選項和參數。

例如,當你輸入指令時,輕按 Tab 鍵,期望會自動填寫或列出隸屬於你 GitHub 帳號下且以 my- 為開首的儲存庫名稱。

  • 在命令列中輸入: $ gh repo clone my-<Tab>
  • 預期的輸出示例my-awesome-project my-docker-images my-python-scripts

然而,實際上你無法通過按 Tab 鍵獲取這樣的建議,只能夠依靠你手動輸入或貼上儲存庫的全名。

😟…

我認為僅憑記憶輸入正確的儲存庫名稱是一件十分困難的事,尤其是當名稱較長,或者有名稱近似的情況時,經常很容易就會弄錯。這些微小的障礙會削弱你的工作效率,特別是對那些經常需要處理多個儲存庫的人來說,相信一定深有體會。

為了追求與命令列的無縫互動,我費了好幾天的時間埋首研究,以增強命令列界面的使用體驗。最終,我為 gh repo clone 命令開發了一個自定義補全腳本,以徹底解決反覆背默與輸入儲存庫名稱及命令選項的煩惱。導入該腳本後,你將能享受到以下功能:

  • 儲存庫建議:輸入儲存庫名稱時,只需按 Tab 鍵,即可立即列出或填入匹配的儲存庫名稱。
  • 參數補全:在 -- 標記後按 Tab 鍵,即自動補全可供 gh repo clone 所引用的 git clone 附加選項。


這個補全腳本將為你提供自動完成建議,讓你與 GitHub CLI 的互動更加流暢且高效。以下是一些常見用例:

  • 克隆單個分支
    gh repo clone <repository> -- --single-branch
  • 克隆特定分支
    gh repo clone <repository> -- --branch feature-branch --single-branch
  • 表層克隆(shadow clone)
    gh repo clone <repository> -- --depth 1
  • 部分克隆 + 稀疏檢出(partial clone + sparse checkout)
    gh repo clone <repository> -- --filter=blob:none --sparse


安裝指南

1. 下載自定義補全腳本到你的電腦

curl -o ~/.gh-repo-clone-completion.bash \
https://gist.github.com/chriskyfung/50039cb2a9b586047adc2726085c6280/raw/.bash_profile

你可以在 GitHub Gist 上查看我上傳的源代碼。

2. 將該腳本添加到你的 Shell 設定文件中

    • bash 用戶
      ~/.bashrc 文件中添加 source ~/.gh-repo-clone-completion.bash
    • zsh 用戶
      ~/.zshrc 文件中添加 source ~/.gh-repo-clone-completion.bash

3. 測試你的腳本設置

    • 在你的終端中輸入 gh repo clone <Tab>。若安裝正確,輸入時會看到儲存庫建議。
    • 在你的終端中輸入 gh repo clone -- <Tab>,你應該會預覧到一系列可追加於 -- 後面的 git clone 附加選項。

總結

添加這個 GitHub CLI 自定義補全功能後,gh repo clone 指令的使用體驗將得到大幅提升,變得更加流暢且容易上手,大幅減少那些原本瑣碎、費時的輸入操作。快來試試吧,親身試驗一下你的工作流程能獲得多大的改善。

歡迎貢獻

如果你在使用過程中有任何問題或建議,歡迎到 該腳本的 gist 頁面 上提交留言!並與你一起完善這個工具,讓它更好地貢獻整個開發人員社區。

祝編程愉快!🚀


參考閱讀

若你還有不清楚的地方,不妨去逛逛下面的外部連結,進一步加深瞭解,讓你更上一層樓!

avatar-img
0會員
9內容數
正在搬家至方格子中... 🔄 📝 集中分享提升生產力、自動化至開發等技能 🐱‍💻📈 📢 歡迎訂閱・留言回應,共享交流啟發性話題 👍
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Chris Fung 的沙龍 的其他內容
協助使用者有效利用 chrome_debug.log 來排查及解決瀏覽器問題。如何透過啟用 Chrome 及 Edge 瀏覽器的日誌記錄功能,產生 chrome_debug.log 檔案,並解讀其中的日誌信息來找出問題根源。
這篇文章提供一個使用 Tampermonkey 腳本批量下載 Facebook 相簿和照片的方法,解決了 Facebook 更新後許多下載工具失效的問題。文章包含詳細的腳本安裝和使用方法教學,並附帶圖片說明。
協助使用者有效利用 chrome_debug.log 來排查及解決瀏覽器問題。如何透過啟用 Chrome 及 Edge 瀏覽器的日誌記錄功能,產生 chrome_debug.log 檔案,並解讀其中的日誌信息來找出問題根源。
這篇文章提供一個使用 Tampermonkey 腳本批量下載 Facebook 相簿和照片的方法,解決了 Facebook 更新後許多下載工具失效的問題。文章包含詳細的腳本安裝和使用方法教學,並附帶圖片說明。
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
今天學習Git的第二步: 基礎快照 Basic Snapshotting [1] 。 之前提到,快照在Git的意思, 是Git 會紀錄 Git 儲存庫裡面每一個檔案在提交時刻的狀態。 可以說,Git 本身就是製作與組織這些「快照」的最強工具。 透過使用快照,你可以記錄你
Windows : 下載Git (git-scm.com)並按照指示安裝。 安裝完成後,你可以通過運行以下命令來確認安裝是否成功: git --version 初次設定GIT 接下來就是按照初次設定git,會需要配置你的用戶名和電子郵件地址,這些信息將被記錄在您提交的每個變更中。 git
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
※ Git(四) 空的資料夾無法被加入 Git 進行版本控制,但這個資料夾如果又是很重要的資料夾,你會怎麼處理? 當空的目錄無法被加入 Git 進行版本控制時,有以下的做法可以解決: 在那個空目錄裡隨便放一個檔案就行了。 在這個資料夾中添加一個名為 .gitkeep 的空檔案,讓 Git 能
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
Thumbnail
GitLab 是一個 DevOps、基於 Web 的免費開源平台 Git 儲存庫,為開發人員提供了所有必要的功能。它是一個用於開發 DevOps 應用程式的一體式平台。 GitLab 允許您執行原始碼管理、監控、安全性和專案規劃任務。 Update system packages: sudo
Thumbnail
前言 上次我們講到 CI/CD 中的 when 使用,今天我們要來傳授一套必殺技,我們要把過去所學的全部融合再一起,相信各位都準備好了,將 Gitlab 從枷鎖中解放出來吧,讓我們來詠唱「武裝完全支配術」 「System Call. Connect Armament. Search Archiv
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
今天學習Git的第二步: 基礎快照 Basic Snapshotting [1] 。 之前提到,快照在Git的意思, 是Git 會紀錄 Git 儲存庫裡面每一個檔案在提交時刻的狀態。 可以說,Git 本身就是製作與組織這些「快照」的最強工具。 透過使用快照,你可以記錄你
Windows : 下載Git (git-scm.com)並按照指示安裝。 安裝完成後,你可以通過運行以下命令來確認安裝是否成功: git --version 初次設定GIT 接下來就是按照初次設定git,會需要配置你的用戶名和電子郵件地址,這些信息將被記錄在您提交的每個變更中。 git
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
※ Git(四) 空的資料夾無法被加入 Git 進行版本控制,但這個資料夾如果又是很重要的資料夾,你會怎麼處理? 當空的目錄無法被加入 Git 進行版本控制時,有以下的做法可以解決: 在那個空目錄裡隨便放一個檔案就行了。 在這個資料夾中添加一個名為 .gitkeep 的空檔案,讓 Git 能
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
Thumbnail
GitLab 是一個 DevOps、基於 Web 的免費開源平台 Git 儲存庫,為開發人員提供了所有必要的功能。它是一個用於開發 DevOps 應用程式的一體式平台。 GitLab 允許您執行原始碼管理、監控、安全性和專案規劃任務。 Update system packages: sudo
Thumbnail
前言 上次我們講到 CI/CD 中的 when 使用,今天我們要來傳授一套必殺技,我們要把過去所學的全部融合再一起,相信各位都準備好了,將 Gitlab 從枷鎖中解放出來吧,讓我們來詠唱「武裝完全支配術」 「System Call. Connect Armament. Search Archiv