作為開發人員,您可能每天都在使用 Git CLI(命令列界面)。然而,反覆編寫相同的命令可能會很繁瑣,特別是當命令很長時。這就是 Git 別名派上用場的地方。

在本文中,您將學習如何使用別名來簡化您的 Git 命令。

目錄

先決條件

  • 熟悉Git。

  • 已安裝Git Bash(選擇性但建議Windows用戶)。

  • 像VS Code這樣的IDE(這也是選擇性的)。

Git別名是什麼?

Git別名是現有Git命令的自定義快捷方式,使常見任務更快速、更容易。它們讓您定義自己的命令,使您能夠按照自己的需求定制快捷方式。

您有兩個主要選項來添加/創建git別名到您的git配置中,一是使用您的Git配置文件,二是直接通過CLI(終端/命令行)添加它們。

這個選項涉及打開您的全局git配置文件並將您的git別名附加到文件底部。

如何設置您偏好的Git編輯器

設置您的默認 Git 配置編輯器軟件,例如,我使用 VS Code 編輯我的 Git 配置文件,但您可以使用您偏好的任何文本編輯器/代碼編輯器。

運行以下命令將 Notepad 設置為您在 Windows 上的首選編輯器(CMD/PowerShell):

git config --global core.editor "notepad"

運行以下命令將 VS Code 設置為您在 Windows 和 MacOS/Linux 上的首選編輯器:

git config --global core.editor "code --wait"

要設置不同的默認編輯器,請在線搜索“將 {editor} 設置為默認 Git 編輯器”,並將{editor}替換為您偏好的應用程式。

如何打開 Git 配置文件

打開您喜歡的終端,然後輸入以下命令。這將以編輯模式(-e)打開全局 Git 配置文件(git config —global)。

git config --global -e

您可以直接從以下位置打開 git 配置文件:

Mac Os:主目錄 → 顯示隱藏文件(Cmd + Shift + H) → .gitconfig

WindowsC:\Users\YourUsername\ → 然後顯示隱藏文件(在視圖中) → 並找到 .gitconfig

Linux: 主目錄 → 顯示隱藏文件(Ctrl + H) → .gitconfig

如何通過配置文件添加 Git 別名

如果您是第一次添加 Git 別名,打開您的 .gitconfig 文件,在末尾添加 [alias],然後列出您的快捷方式。這告訴 Git 這些是別名。添加您偏好的別名(您希望運行的縮短命令)。

git 別名的格式是<alias> = <command>,因此我們有:

co = checkout
cob = checkout -b

上述示例的解釋:

co = checkout 這將git checkout命令映射為更短的git co命令。然後您可以在終端中調用git co feature/123

您不需要在命令前面輸入git,因為配置將自動添加這個,因為它知道您正在映射的命令是一個Git命令。

注意: 任何傳遞給該命令的參數只會應用於別名內調用的最終命令。

可以以這種方式添加更多別名,將快捷方式映射到現有的git命令。保存並關閉文件,然後這些別名將在您的終端中可用。

如何在CLI中添加別名

如果您想要更簡化的方法來添加Git別名,可以直接從終端/命令行中添加它們。

以上面的示例為例,我們可以以下列方式直接添加這些別名:

命令的格式是:git config --global alias.{alias} "{original command}":

git config --global alias.co "checkout"
#或者
git config --global alias.cob "checkout -b"

就是這麼簡單!

如何為更複雜的快捷方式創建自定義命令

好的,這聽起來很棒,但實際上並不那麼令人印象深刻-我們只是刪除了一些字符。但是,我們可以使它們更有幫助,我們可以使用shell命令創建我們的命令。

讓我們以以下示例為例,這是我經常使用的命令!

new-work = !git checkout main && git pull && git cob

這個別名將多個 Git 命令組合成一個 shell 命令。 ! 字元告訴 Git 將其視為一個 shell 命令,而不是標準的 Git 命令。

沒有 !,Git 將別名視為一個 Git 命令(例如,checkout 變成 git checkout)。有了 !,Git 知道要作為 shell 命令運行,而不需在前面添加 git

通過鏈接這些命令,我們可以編寫更有用的別名。上面的這個將:

  • 首先,檢出 main 分支。

  • 使用 && 運算子,這意味著其他命令只有在前一個命令成功運行後才會運行。

  • 其次,它將從 main 拉取更改。

  • 最後,使用我們的其他別名 git cobmain 分支創建一個新分支。

最終命令然後可以接受參數(正如原始的 Git 命令會),因此可以像這樣使用:

git new-work 'feature/new-work-from-main'

如何在所有命令中使用參數

到目前为止,我们只能将参数传递给我们别名中的最终git命令。但是,如果我们想要将参数传递给别名中的一些或所有命令,我们可以通过使用shell函数来实现。

请看以下示例:

new-work = "!f() { git checkout \"$1\" && git pull && git checkout -b \"$2\"; }; f"

上面我们使用了一个处理输入参数的shell函数。

说明:

  1. !f()

    • !告诉Git将别名解释为shell命令,而不是标准的Git命令。

    • f()定义了一个名为f的shell函数,允许我们按顺序执行多个命令。

  2. { }内的所有内容将在f()函数中执行。

  3. git checkout \"\$1”'\:將運行一個帶參數的 Git 命令,其中$1被轉義,並將被替換為別名傳遞的第一個參數。在$1周圍的\"轉義序列允許分支名稱包含空格。

  4. &&是一個邏輯運算符,確保每個命令只有在前一個成功運行時才運行。如果git checkout "$1"失敗,則後續命令將不運行。

  5. git checkout -b \"\$2”\:創建一個以第二個參數命名的新分支。

  6. ;:標記f()函數的結束;

  7. f:最終的f立即調用別名函數,這意味著當您調用別名時,它會立即聲明函數,然後立即調用它。

用法:

git new-work development task/feat-123

其他有用的別名

[alias]
     co = checkout
    cob = checkout -b
    s = status
    tidy-up = !git checkout main && git branch | grep -v "main" | xargs git branch -D
    latest = !git checkout main && git pull
    new-work = "!f() { git checkout \"$1\" && git pull && git checkout -b \"$2\"; }; f"
    done = !git push -u origin HEAD
    save = !git add -A && git commit
    saveM = !git add -A && git commit -m
    br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate

摘要

co: 檢出指定分支 → git co task/feat-123

cob: 從當前分支創建一個新分支 → git cob feature/123

s: 調用git status查看當前git分支的狀態 → git s

tidy-up: 刪除除main之外的所有本地分支 → git tidy-up

latest: 從遠端main分支獲取最新更改 → git latest

new-work: 從第一個參數分支創建一個新分支(第二個參數) → git new-work main feat/123

git done: 推送當前分支到遠端倉庫(origin)並設置為上游分支。當推送第一次提交並出現錯誤時,這可能會有所幫助:
fatal: The current branch has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin

save: 簡單地添加所有更改的文件,並提交它們,打開您的默認Git編輯器並請求提交消息 → git save

savem:將執行上述操作,但不會打開您的編輯器,您可以直接傳入提交訊息→ git savem ‘Task123: add index.html

br: 這個看起來很複雜,但實際上並不像看起來的那麼複雜,但它強調了別名的威力。基本上,它自定義了git branch的輸出格式,以顏色編碼的方式顯示按最近提交日期排序的分支詳細列表,對於您本地擁有的每個分支,它將看起來像下面的圖像。

這就是Git別名的介紹以及一些您可以作為配置起點添加的別名的有用示例。

如果您想要討論它,或聽取未來文章的消息,您可以在Twitter上關注我。