作為開發人員,您可能每天都在使用 Git CLI(命令列界面)。然而,反覆編寫相同的命令可能會很繁瑣,特別是當命令很長時。這就是 Git 別名派上用場的地方。
在本文中,您將學習如何使用別名來簡化您的 Git 命令。
目錄
先決條件
-
熟悉Git。
-
已安裝Git Bash(選擇性但建議Windows用戶)。
-
像VS Code這樣的IDE(這也是選擇性的)。
Git別名是什麼?
Git別名是現有Git命令的自定義快捷方式,使常見任務更快速、更容易。它們讓您定義自己的命令,使您能夠按照自己的需求定制快捷方式。
您有兩個主要選項來添加/創建git別名到您的git配置中,一是使用您的Git配置文件,二是直接通過CLI(終端/命令行)添加它們。
如何通過全局Git配置文件添加Git別名(建議)
這個選項涉及打開您的全局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
Windows: C:\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 cob
從main
分支創建一個新分支。
最終命令然後可以接受參數(正如原始的 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函数。
说明:
-
!f()
:-
!
告诉Git将别名解释为shell命令,而不是标准的Git命令。 -
f()
定义了一个名为f
的shell函数,允许我们按顺序执行多个命令。
-
-
{ }
内的所有内容将在f()
函数中执行。 -
git checkout \"\$1”'\
:將運行一個帶參數的 Git 命令,其中$1
被轉義,並將被替換為別名傳遞的第一個參數。在$1
周圍的\"
轉義序列允許分支名稱包含空格。 -
&&
是一個邏輯運算符,確保每個命令只有在前一個成功運行時才運行。如果git checkout "$1"
失敗,則後續命令將不運行。 -
git checkout -b \"\$2”\
:創建一個以第二個參數命名的新分支。 -
;
:標記f()
函數的結束; -
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上關注我。
Source:
https://www.freecodecamp.org/news/how-to-simplify-your-git-commands-with-git-aliases/