對於我們前端打工人來講, git 是工做中經常使用的一種基本工具,可能有一些人不喜歡用命令行操做 git,老是想要帶圖形界面的工具,固然能提供深色主題那就更好了。前端
儘管在 VS Code 之類的 IDE 中提供了 git 的 GUI 擴展,但仍然有不少場合須要依靠命令行(CLI)操做才行。git
下面我將介紹 10 個 git 別名,這些別名能夠幫你更高效的使用 git 。程序員
git 別名通常根據用戶的配置被存儲在 ~/.gitconfig
中。也能夠用 git config alias.s ‘status -s’
命令來手動設置別名。github
你能夠把接下來我將要介紹的這些 git 別名添加到 ~/.gitconfig
文件的 [alias]
塊中,這一部分存儲了全部別名及其命令。面試
git 命令行提供了不少選項,能夠列出全部 git 配置和源的位置(系統,用戶或本地)。用 git config --list --show-origin
命令能詳細列出全部的配置和源:segmentfault
[alias] s = status co = checkout
git status
是一個經常使用的命令,能夠用下面這個別名爲它提供一個快捷方式:bash
[alias] s = status
生效後是這樣:服務器
$ git s On branch main Your branch is up to date with 'origin/main. nothing to commit, working tree clean
咱們須要常常在 git 分支之間來回切換,下面來簡化一下。微信
添加別名:多線程
[alias] co = checkout
而後嘗試一下:
$ git co feat/add-popup
實際上能夠用快捷方式(例如 git checkout -
)來完成 git 分支的簽出,這個快捷方式能夠簽出你所在的上一個分支。它其實是 git checkout @{-1}
的簡寫,因此這個別名也能夠經過 git co -
達到相同的效果。
若是你常常在命令行上建立新的git分支,那麼這樣作能夠少敲幾下鍵盤:
[alias] cob = checkout -b
這樣用:
$ git cob feat/add-popup Switched to a new branch 'feat/add-popup'
也許對你來講刪除分支這種操做很少,可是當你須要時可能會想不起命令應該怎麼寫,這時就不得不去花時間去問度娘。可是若是能給 git branch checkout
建立一個更簡短好記的別名就方便多了:
[alias] del = branch -D
這樣用:
$ git del feat/add-popup Deleted branch featureB (was b5cbv113).
下面的別名用來列出全部分支,並按提交日期對它們進行排序,優先顯示最新的 git 分支。
[alias] br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate
使用及輸出:
$ git br
如你所見,它能提供更多的上下文信息,例如用彩色突出顯示了最後一次提交中的 git commit author 的名稱。
想要更快的提交本身的代碼,能夠用下面的別名,用一段通用的提交消息將全部 git 未暫存的文件添加到暫存區中。
[alias] save = !git add -A && git commit -m 'chore: commit save point
執行:
$ git save [feat/add-popup 98cba110acb] chore: commit save point 1 file changed, 1 insertion(+)
若是在提交更改後須要進行回滾,那麼下面的別名會把全部提交更改回滾到本地未暫存區:
[alias] undo = reset HEAD~1 --mixed
一旦調用了這個別名,就能夠用 git undo
來重置該分支上先前的提交,並檢查全部先前提交的更改是否爲未提交,這樣能夠繼續進行操做。
這樣用:
$ git undo Unstaged changes after reset: M app.js
當須要快速清理你不想在當前階段提交到存儲庫的全部本地更改時,能夠用如下別名:
[alias] res = !git reset --hard
它會重置全部暫存的更改(用 git add
命令添加的更改):
$ git res HEAD is now at 6e7879bc81a chore: commit save point
當代碼完成以後,應該將其提交到 git 庫的上游。要完成這個工做一般會用一段很是冗長的命令:git push origin
或 git push origin main
。
可是,若是你要使用與要更改的分支名稱相同的分支名稱,那麼咱們能夠將遠程分支名稱命名爲 HEAD
。使用像 git done
這樣簡單的快捷方式,將你的提交從本地 git 推送到源或上游遠程站點:
[alias] done = !git push origin HEAD
當分支名稱很長時,用這個別名和 HEAD
的快捷方式頗有用。這是使用方式:
$ git done Enumerating objects: 42, done. Counting objects: 100% (42/52), done. Delta compression using up to 8 threads Compressing objects: 100% (8/8), done. Writing objects: 100% (8/8), 1.63 KiB | 7.63 MiB/s, done. Total 42 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 8 local objects. To github.com:royeeshemesh/git-workflow.git bc535183..1e42d90 HEAD -> main
最後是最有用的 git 命令之一:git log
。經過 git 別名來構造日誌輸出格式的方法有不少,下面是個人格式:
[alias] lg = !git log --pretty=format:\"%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) [%an]\" --abbrev-commit -30
這個別名能使 git log 的輸出更具可讀性。試試看:
$ git log
下面是要配置在你 ~/.gitconfig
文件中的完整內容:
[alias] s = status co = checkout cob = checkout -b del = branch -D br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate save = !git add -A && git commit -m 'chore: savepoint' undo = reset HEAD~1 --mixed res = !git reset --hard done = !git push origin HEAD lg = !git log --pretty=format:\"%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) [%an]\" --abbrev-commit -30