- 原文地址:Git Aliases I Use (Because I'm Lazy)
- 原文做者:Victor Zhou
- 譯文出自:掘金翻譯計劃
- 本文永久連接:github.com/xitu/gold-m…
- 譯者:EmilyQiRabbit
- 校對者:imononoke,weisiwu,portandbridge
寫於 2019 年 9 月 16 日,更新於 2019 年 9 月 17 日html
幾年前,當我第一次開始構建一些比較大的我的項目時,我終於開始頻繁的使用 Git。如今,輸入 git status
和 git push
這樣的命令對我來講易如反掌,可是若是你有一些使用 Git 的經驗,你必定知道有一些命令會很是冗長。前端
好比說我常遇到這樣的命令:android
$ git commit --amend --no-edit
複製代碼
這條命令會把你暫存的修改併入你最近的一次 commit,而且不會修改此次 commit 的信息(這樣 Git 也就不會打開一個文件編輯界面了)。它最常常的用途是修改剛剛提交的 commit。也許我太粗心了,老是在剛提交完一條 commit 還不到 30 秒,就發現一個拼寫錯誤或者忘了刪除了調式信息了 😠。ios
輸入 git commit --amend --no-edit
這 28 個字符很快就會讓人感到乏味。我如今正着迷於優化項目(甚至是在還不該該進行優化的時候我就開始行動了🤷),因此某天我就開始花時間思考如何優化個人 git 命令…git
當你用 google 搜索下如「簡化 git 命令」這樣的內容,你將會很快的找到關於 Git 別名的信息。事實是,簡寫命令的方法已經內建在 Git 中了!你只須要告知 Git 你想要配置的 git 別名的信息便可。例如,你能夠經過將以下這行代碼複製粘貼到你的控制檯並執行,就能夠將 status
簡寫爲 s
:github
git config --global alias.s status
複製代碼
這行命令其實是更新了你的 .gitconfig
文件,該文件用來保存全局 Git 配置:shell
[alias]
s = status
複製代碼
如今,只要你輸入別名 s
,Git 就會自動用 status
來替換掉它!後端
下面這些是我最經常使用的 Git 別名:bash
[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 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 命令簡寫:
# ... 其餘內容
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 個字母,那麼就是每秒能夠輸入
個字母。
下面這個表格展現了我最經常使用的簡寫能夠節省的字母數:
原始命令 | 簡寫命令 | 可節省的字母數 |
---|---|---|
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 |
因此一共節省了 1955 個字母,平均每一個 Git 命令節省了 個字母。假設我工做日的八小時內輸入大約 100 條 Git 命令,也就是能夠節約 550 個字母,換算也就是天天能夠節約一分鐘(使用我前文提到的每秒輸入 9 個字母的數據)。
可是我要重申:配置別名能讓你以爲提升了效率,這可能會給你一些內心暗示的做用,讓你真的變得更加高效了。
你怎麼看?你會去使用 Git 別名嗎?爲何去用或者爲何不用?你還有什麼其餘喜歡用的別名?歡迎在評論區寫下討論!
更新:在 lobste.rs 的博客 和原文下面的評論區中有一些不錯的討論。推薦你閱讀。
當我寫這篇博客的時候,我意識到還有三個經常使用的 Git 命令,但卻被我忽略了:
$ git add .
$ git commit -m 'message'
$ git reset --hard
複製代碼
我將會把它們也加入到個人 Git 別名配置中!
git config --global alias.a "add ."
git config --global alias.cm "commit -m"
git config --global alias.rh "reset --hard"
複製代碼
若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。