Linux中國

8 個讓我更有效率的 Git 別名

這篇出色的文章《改變我使用 Git 工作方式的七個技巧》啟發了我寫下另一個對我在命令行上使用 Git 的經驗有重大影響的 Git 特性:別名。

定義 Git 的別名來替代命令有兩大好處。

  • 它簡化了有許多選項的長命令,使它們更短,更容易記住。
  • 縮短了經常使用的命令,使你的工作更有效率。

如何定義和使用別名

要定義 Git 的別名,請使用 git config 命令,加上別名和要替換的命令。例如,要為 git push 創建別名 p

$ git config --global alias.p 'push'

你可以通過將別名作為 git 的參數來使用別名,就像其他命令一樣:

$ git p

要查看所有的別名,用 git config 列出你的配置:

$ git config --global -l
user.name=ricardo
user.email=ricardo@example.com
alias.p=push

你也可以用你喜歡的 shell 來定義別名,比如 Bash 或 Zsh。不過,用 Git 定義別名有幾個功能是用 shell 無法實現的。首先,它允許你在不同的 shell 中使用別名,而無需額外配置。此外,它還集成了 Git 的自動更正功能,所以當你輸入錯誤的命令時,Git 可以建議你正確的別名。最後,Git 還會將別名保存在用戶配置文件中,你可以通過複製一個文件將別名轉移到其他機器上。

無論使用哪種方法,定義別名都能改善你使用 Git 的整體體驗。更多關於定義 Git 別名的信息,請看《Git Book》。

8 個有用的 Git 別名

現在你知道如何創建和使用別名了,來看看一些有用的別名。

1、Git 狀態

Git 命令行用戶經常使用 status 命令來查看已更改或未跟蹤的文件。默認情況下,這個命令提供了很多行的冗長輸出,你可能不想要或不需要。你可以使用一個別名來處理這兩個組件。定義別名 st 來縮短命令,並使用選項 -sb 來輸出一個不那麼啰嗦的狀態和分支信息。

$ git config --global alias.st 'status -sb'

如果你在一個乾淨的分支上使用這個別名,你的輸出就像這樣:

$  git st
## master

在一個帶有已更改和未跟蹤文件的分支上使用它,會產生這樣的輸出:

$ git st
## master
 M test2
?? test3

2、Git 單行日誌

創建一個別名,以單行方式顯示你的提交,使輸出更緊湊:

$ git config --global alias.ll 'log --oneline'

使用這個別名可以提供所有提交的簡短列表:

$ git ll
33559c5 (HEAD -> master) Another commit
17646c1 test1

3、Git 的最近一次提交

這將顯示你最近一次提交的詳細信息。這是擴展了《Git Book》中 別名 一章的例子:

$ git config --global alias.last 'log -1 HEAD --stat'

用它來查看最後的提交:

$ git last
commit f3dddcbaabb928f84f45131ea5be88dcf0692783 (HEAD -> branch1)
Author: ricardo <ricardo@example.com>
Date:   Tue Nov 3 00:19:52 2020 +0000

    Commit to branch1

 test2 | 1 +
 test3 | 0
 2 files changed, 1 insertion(+)

4、Git 提交

當你對 Git 倉庫進行修改時,你會經常使用 git commit。使用 cm 別名使 git commit -m 命令更有效率:

$ git config --global alias.cm &apos;commit -m&apos;

因為 Git 別名擴展了命令,所以你可以在執行過程中提供額外的參數:

$ git cm "A nice commit message"
[branch1 0baa729] A nice commit message
 1 file changed, 2 insertions(+)

5、Git 遠程倉庫

git remote -v 命令列出了所有配置的遠程倉庫。用別名 rv 將其縮短:

$ git config --global alias.rv &apos;remote -v&apos;

6、Git 差異

git diff 命令可以顯示不同提交的文件之間的差異,或者提交和工作樹之間的差異。用 d 別名來簡化它:

$ git config --global alias.d &apos;diff&apos;

標準的 git diff 命令對小的改動很好用,但對於比較複雜的改動,外部工具如 vimdiff 就更有用。創建別名 dv 來使用 vimdiff 顯示差異,並使用 y 參數跳過確認提示:

$ git config --global alias.dv &apos;difftool -t vimdiff -y&apos;

使用這個別名來顯示兩個提交之間的 file1 差異:

$ git dv 33559c5 ca1494d file1

![vim-diff results](/data/attachment/album/202012/09/202318c1ddkud88sh2tklh.png "vim-diff results")

7、Git 配置列表

gl 別名可以更方便地列出所有用戶配置:

$ git config --global alias.gl &apos;config --global -l&apos;

現在你可以看到所有定義的別名(和其他配置選項):

$ git gl
user.name=ricardo
user.email=ricardo@example.com
alias.p=push
alias.st=status -sb
alias.ll=log --oneline
alias.last=log -1 HEAD --stat
alias.cm=commit -m
alias.rv=remote -v
alias.d=diff
alias.dv=difftool -t vimdiff -y
alias.gl=config --global -l
alias.se=!git rev-list --all | xargs git grep -F

8、搜索提交

Git 別名允許你定義更複雜的別名,比如執行外部 shell 命令,可以在別名前加上 ! 字元。你可以用它來執行自定義腳本或更複雜的命令,包括 shell 管道。

例如,定義 se 別名來搜索你的提交:

$ git config --global alias.se &apos;!git rev-list --all | xargs git grep -F&apos;

使用這個別名來搜索提交中的特定字元串:

$ git se test2
0baa729c1d683201d0500b0e2f9c408df8f9a366:file1:test2
ca1494dd06633f08519ec43b57e25c30b1c78b32:file1:test2

自動更正你的別名

使用 Git 別名的一個很酷的好處是它與自動更正功能的原生集成。如果你犯了錯誤,默認情況下,Git 會建議使用與你輸入的命令相似的命令,包括別名。例如,如果你把 status 打成了 ts,而不是 st,Git 會推薦正確的別名:

$ git ts
git: &apos;ts&apos; is not a git command. See &apos;git --help&apos;.

The most similar command is
        st

如果你啟用了自動更正功能,Git 會自動執行正確的命令:

$ git config --global help.autocorrect 20
$ git ts
WARNING: You called a Git command named &apos;ts&apos;, which does not exist.
Continuing in 2.0 seconds, assuming that you meant &apos;st&apos;.
## branch1
?? test4

優化 Git 命令

Git 別名是一個很有用的功能,它可以優化常見的重複性命令的執行,從而提高你的效率。Git 允許你定義任意數量的別名,有些用戶會定義很多別名。我更喜歡只為最常用的命令定義別名 —— 定義太多別名會讓人難以記憶,而且可能需要查找才能使用。

更多關於別名的內容,包括其他有用的內容,請參見 Git 維基的別名頁面

via: https://opensource.com/article/20/11/git-aliases

作者:Ricardo Gerardi 選題:lujun9972 譯者:wxy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國