[譯] 我經常使用的 Git 別名

我經常使用的 Git 別名(由於我實在太懶了)

我真的很煩輸入 git 命令,即便是很短的。

寫於 2019 年 9 月 16 日,更新於 2019 年 9 月 17 日html

幾年前,當我第一次開始構建一些比較大的我的項目時,我終於開始頻繁的使用 Git。如今,輸入 git statusgit push 這樣的命令對我來講易如反掌,可是若是你有一些使用 Git 的經驗,你必定知道有一些命令會很是冗長。前端

好比說我常遇到這樣的命令:android

$ git commit --amend --no-edit
複製代碼

這條命令會把你暫存的修改併入你最近的一次 commit,而且不會修改此次 commit 的信息(這樣 Git 也就不會打開一個文件編輯界面了)。它最常常的用途是修改剛剛提交的 commit。也許我太粗心了,老是在剛提交完一條 commit 還不到 30 秒,就發現一個拼寫錯誤或者忘了刪除了調式信息了 😠。ios

輸入 git commit --amend --no-edit 這 28 個字符很快就會讓人感到乏味。我如今正着迷於優化項目(甚至是在還不該該進行優化的時候我就開始行動了🤷),因此某天我就開始花時間思考如何優化個人 git 命令…git

我配置的 git 別名

當你用 google 搜索下如「簡化 git 命令」這樣的內容,你將會很快的找到關於 Git 別名的信息。事實是,簡寫命令的方法已經內建在 Git 中了!你只須要告知 Git 你想要配置的 git 別名的信息便可。例如,你能夠經過將以下這行代碼複製粘貼到你的控制檯並執行,就能夠將 status 簡寫爲 sgithub

git config --global alias.s status
複製代碼

這行命令其實是更新了你的 .gitconfig 文件,該文件用來保存全局 Git 配置:shell

~/.gitconfig
[alias]
  s = status
複製代碼

如今,只要你輸入別名 s,Git 就會自動用 status 來替換掉它!後端

下面這些是我最經常使用的 Git 別名:bash

~/.gitconfig
[alias]
  s = status
  d = diff
  co = checkout
  br = branch
  last = log -1 HEAD
  cane = commit --amend --no-edit
  lo = log --oneline -n 10
  pr = pull --rebase
複製代碼

個人 .gitconfig 文件session

git 別名
git config --global alias.s status
git config --global alias.d diff
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.last "log -1 HEAD"
git config --global alias.cane "commit --amend --no-edit"
git config --global alias.pr "pull --rebase"
git config --global alias.lo "log --oneline -n 10"
複製代碼

若是你也想使用這些 git 別名,將這些命令拷貝並粘貼到控制檯執行便可!

最後,這兒還有一個我經常使用的 bash 命令簡寫:

~/.bash_profile
# ... 其餘內容

alias g=git
複製代碼

你可使用任何編輯器,來將這些內容加入到你的 .bash_profile 文件中。

這是一個 Bash 別名配置,它的功能就正如你所想的那樣。若是你使用其餘的 shell,你能夠在它的相似的功能中完成(例如 Zsh 別名配置)。

一切就緒。如今你能夠這樣使用 Git 了:

$ g s
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
複製代碼
$ g br
* master
複製代碼
$ g co -b new-branch
Switched to a new branch 'new-branch'
複製代碼
$ g lo
Author: Victor Zhou <vzhou842@gmail.com>
Date:   Mon Aug 26 01:16:49 2019 -0700

    Bump version to 1.1.1
複製代碼

實際上它們真的有用嗎…

也許有用?這實際上是因人而異的。若是你和我同樣,須要作一些有點強迫症的事情,好比老是習慣性的重複輸入 「git status」,那麼它確實能夠節省你一些時間:

參見 Victor Zhou (@victorczhou) 發佈於 2019 年 9 月 15 日的 twitter

我我的認爲,這樣作代價很小(每臺新設備的配置大概只須要 30 秒),而你就可以獲得一個速度更快而且更有效率的很好的平常體驗。固然,實際上你能節約多少時間仍是值得商榷的…

粗略計算

咱們來粗略計算一下配置了 git 別名實際能節約多少時間。我大概能夠一分鐘輸入 135 個單詞,咱們假設每一個單詞有 4 個字母,那麼就是每秒能夠輸入

\frac{135 * 4}{60} = \boxed{9}

個字母。

下面這個表格展現了我最經常使用的簡寫能夠節省的字母數:

原始命令 簡寫命令 可節省的字母數
git status g s 7
git diff g d 5
git checkout g co 8
git branch g br 6
git log -1 HEAD g last 9
git commit --amend --no-edit g cane 20

接下來,我使用 history 命令查看了我最近的 500 條命令。這是數據分析:

命令 使用數量
g s 155
g d 47
g co 19
g br 26
g last 11
g cane 2
其餘 Git 命令 94
非 Git 命令 146

每一個「其餘 Git 命令」能節省 2 個字母(由於我將 git 簡寫爲 g),因此總的節省字母是:

命令 使用次數 可節省的字母數 總共節省的字母數
g s 155 7 1085
g d 47 5 235
g co 19 8 152
g br 26 6 156
g last 11 9 99
g cane 2 20 40
其餘 Git 命令 94 2 188
1085 + 235 + \ldots + 40 + 188 = \boxed{1955}

因此一共節省了 1955 個字母,平均每一個 Git 命令節省了 \frac{1955}{354} = \boxed{5.5} 個字母。假設我工做日的八小時內輸入大約 100 條 Git 命令,也就是能夠節約 550 個字母,換算也就是天天能夠節約一分鐘(使用我前文提到的每秒輸入 9 個字母的數據)。

好吧,因此實際上並無節省多少時間。 😢

可是我要重申:配置別名能讓你以爲提升了效率,這可能會給你一些內心暗示的做用,讓你真的變得更加高效了。

你怎麼看?你會去使用 Git 別名嗎?爲何去用或者爲何不用?你還有什麼其餘喜歡用的別名?歡迎在評論區寫下討論!

更新:在 lobste.rs 的博客原文下面的評論區中有一些不錯的討論。推薦你閱讀。

結語

當我寫這篇博客的時候,我意識到還有三個經常使用的 Git 命令,但卻被我忽略了:

$ git add .
$ git commit -m 'message'
$ git reset --hard
複製代碼

我將會把它們也加入到個人 Git 別名配置中!

git aliases
git config --global alias.a "add ."
git config --global alias.cm "commit -m"
git config --global alias.rh "reset --hard"
複製代碼

若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索