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

2020-12-09 Linux中國

使用別名為你最常用或複雜的 Git 命令創建快捷方式。

• 來源:linux.cn • 作者:Ricardo Gerardi • 譯者:Xingyu.Wang •

(本文字數:4229,閱讀時長大約:5 分鐘)


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

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

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

如何定義和使用別名

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

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

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

$ git p

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

$ git config --global -luser.name=ricardouser.email=ricardo@example.comalias.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 ll33559c5 (HEAD -> master) Another commit17646c1 test1

3、Git 的最近一次提交

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

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

用它來查看最後的提交:

$ git lastcommit 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 'commit -m'

因為 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 'remote -v'

6、Git 差異

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

$ git config --global alias.d 'diff'

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

$ git config --global alias.dv 'difftool -t vimdiff -y'

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

$ git dv 33559c5 ca1494d file1

vim-diff results

7、Git 配置列表

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

$ git config --global alias.gl 'config --global -l'

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

$ git gluser.name=ricardouser.email=ricardo@example.comalias.p=pushalias.st=status -sbalias.ll=log --onelinealias.last=log -1 HEAD --statalias.cm=commit -malias.rv=remote -valias.d=diffalias.dv=difftool -t vimdiff -yalias.gl=config --global -lalias.se=!git rev-list --all | xargs git grep -F

8、搜索提交

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

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

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

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

$ git se test20baa729c1d683201d0500b0e2f9c408df8f9a366:file1:test2ca1494dd06633f08519ec43b57e25c30b1c78b32:file1:test2

自動更正你的別名

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

$ git tsgit: 'ts' is not a git command. See 'git --help'.The most similar command is        st

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

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

優化 Git 命令

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

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


via: opensource.com

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

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

點擊「了解更多」可訪問文內連結

相關焦點

  • git別名提高全棧開發效率
    利用別名可以讓你使用git更有效率。下面的內容我講介紹我在工作中經常使用的git別名。我在這裡講的別是bash/zsh別名,而非git別名。這兩者的區別是什麼?bash/zsh別名是在.bashrc或.zshrc文件裡面設置,允許你給command命令分配別名。舉個例子,你可以給git log命令添加別名gl,減少你的輸入。git別名允許你分配給git命令一個快捷模式,但是你必須輸入git關鍵詞。例如,你分配git log的別名為1,你調用的時候需要輸入git 1。git別名在.gitconfig文件裡設置,通常在home目錄下。
  • Git教學篇-在正式使用Git前我們應該做什麼?
    前言從這篇文章開始,我將會有一系列git方面的教學文章,主要是結合自己的實際經驗進行演示,旨在幫助大家更加合理,熟練的使用git。首先給大家提一個問題,在我們使用git提交代碼之前,應該要做什麼準備?這種來回的切換要求開發人員對git的配置操作非常嫻熟。通過配置一些別名,方便快捷的敲出git命令,提高工作效率。在常用的提交,合併操作中我們可以通過pull+rebase選項去代替fetch+merge,更快捷完成提交流程。命令config在git中,所有的配置操作都是通過config命令來完成的。
  • git常用命令大全
    例如:git checkout develop4、合併分支① 切換到要合併的分支是上,例如主幹分支master git checkout [分支名] #例如:git checkout master② 執行merge git merge [分支名] #例如:git
  • git環境配置和.gitconfig配置文件詳解
    git配置文件詳解別名git別名是我們日常進行git配置使用最多的一部分內容。在git使用中,為了便捷,減少輸入,git提供了別名機制來將標準的git命令自定義為自己習慣使用的命令。我們可以將git的命令設定別名為為1或2個字母的快捷方式。
  • 手把手教你配置git和git倉庫
    第二個配置是alias配置,也就是別名配置。別名配置的用途是我們自己給git命令起一個別名,這樣當我們輸入命令的時候可以進行簡化。比如說git當中切換分支的命令是git checkout xxx,這裡的checkout單詞很長,我們經常會拼錯。我們可以給它起一個別名是co,這樣命令就成了git co xxx,相比起來要舒服很多。
  • git config打造個性化的git環境
    第二、配置級別上面的命令選項中可以看到--system,--global,--local三個選項,分別代表了配置的三個不同級別。--system:系統級別配置,適用於系統所有用戶和所有項目的配置。配置文件一般位於Linux:/etc/gitconfig;Win:C:\Program Files\Git\mingw64\etc\gitconfig.
  • 這7個常用Git命令或概念你都知道嗎?
    >2.git別名命令命令別名能提高可重用性。將gitremote -v(用於檢查遠程源的命令)別名為show-origin:$ git config --global alias.show-origin &39;$ git show-origin
  • 你應該知道的10個Git命令(附連結)
    在本文中,我們將討論作為開發人員、數據科學家或產品經理應該了解的各種Git命令,如何使用Git進行檢查、刪除和整理,以及如何通過Bash別名和Git編輯器配置來逃避Vim並節省時間。這裡有10個要知道的命令和一些常見的標誌。每個命令都連結到該命令的Atlassian Bitbucket指南。檢查事項讓我們先看一下檢查變化。
  • 10種Git技巧,讓你省時省力又省心!
    git log --oneline --no-merges3. 改寫上一個提交信息若不小心提交了帶有拼寫錯誤或誤導性提交信息的內容時,這個方法就派上用場了。git commit -v --amend-v是可選項,但由於其展示了許多更改相關的信息,筆者還是比較喜歡這個的,,有助於編寫更具描述性的提交消息。4.
  • 這7個常用Git命令或概念你都知道嗎?
    以「; 」(分號)分隔的多個git命令以分號分隔可使用多個Git命令:$ git --version; git branch // separated by semi-colon2.git別名命令命令別名能提高可重用性。
  • Git同時上傳代碼到多個遠程倉庫(Github和Gitee)
    可以參考之前的文章查看如何設置ssh key的公鑰連接,git同步遠程倉庫代碼命令。當前遠程倉庫使用的是Github和Gitee。另外需要注意的是,遠程倉庫的連接方式我使用的是ssh key,並且兩個倉庫的公鑰完全相同。git config中的email和name也使用的是local配置。
  • 你可能不太會用的10個Git命令
    我們還將介紹如何用 Bash 別名和 Git 編輯器配置來逃避 Vim 以節省時間。如果你不熟悉基本的 git 命令,在閱讀本文前可以先參考我之前寫的關於 Git 工作流程的文章。地址:https://towardsdatascience.com/learn-enough-git-to-be-useful-281561eef959本文介紹了 10 個常見的命令以及它們的一些參數。每個命令都可以連結到該命令的 Atlassian Bitbucket 指南。檢查先了解一下如何檢查改動痕跡。
  • 我痛恨 Git 的 10 個理由
    下面是我為什麼如此痛恨 Git 的 10 個理由:1. 複雜的信息模型Git 的信息模型是很複雜的,而且你必須對他們都很了解。在這個方面上你看看 Subversion:有文件、工作目錄、資源庫、版本、分支和標籤。
  • git簡明指南
    2.2 添加文件至暫存區git add filegit add是個多功能命令:可以用它跟蹤新文件,或者把已修改文件放到暫存區,還能把合併時衝突的文件標記為已解決狀態。注意!2.3 文件對比 git diff --cached表示暫存後(git add後)的文件與原始版本的對比 git diff表示未暫存(git add前)的文件與原始版本的對比也就是說,git add之前用git diff,之後用git diff –cached。注意!
  • git基本用法和log查看
    git安裝git安裝很簡單,可以直接命令安裝,但是我喜歡源碼安裝。直接下載git源碼,解壓git壓縮包,進入壓縮包,./configure --prefix=pwd & make & make install。
  • Git學步
    Git 是一款開源的分布式版本控制系統,是Linux之父Linus開發的版本控制軟體,為幫助管理Linux內核開發而誕生,這期間有故事,當然,這不是我記錄文章的重點,我只是感慨:牛逼!git comit flow推送到遠程關聯的主分支git push -u origin master這裡我已經綁定了自己安裝的Gitlab,同步到Gitlab伺服器
  • 乾貨|關於Git和Github你必須掌握的10個技巧
    下面為大家整理了 Git 和 GitHub 可能提高日常效率的10個常用技巧。如果你要給你的隊友分享一段代碼是非常方便的:8、關注用戶在合併請求例如:> git branch --contains 2f8e2b顯示全部包含提交 2f832b 的分支。這個命令對於驗證 git cherry-pick 完成非常有幫助。8、git status -s返回一個簡單版的 git status。
  • 學習git這一篇就夠了
    reset --hard 指定版本的hash地址使用例從第五個版本跳轉到第三個版本$ WebService % git reflog //首先查看各種版本信息 d3c9608 (HEAD -> master) HEAD@{0}: commit: this is my fifth updata,updata testGit.txt 364024e HEAD@{1}:
  • Git教學篇3-文件狀態之git status與git diff
    前言在之前的一篇文章《》中,我們有講解過git clone和git tag相關的內容。今天這篇文章我們繼續學習git status和git diff相關的知識。由於我設置了status別名為st,所以運行的是git st。
  • 史上最全git-基礎知識
    上面的三條命令最終只是產生一個提交,第二個提交命令修正了第一個的提交內容。說實話,有了這些小竅門,我們的工作可以變得更簡單,更輕鬆,更高效。自動補全如果你用的是 Bash shell,可以試試看 Git 提供的自動補全腳本。