這 10 別名讓你把 git 的玩的更 6

對於我們前端打工人來講, git 是工做中經常使用的一種基本工具,可能有一些人不喜歡用命令行操做 git,老是想要帶圖形界面的工具,固然能提供深色主題那就更好了。前端

儘管在 VS Code 之類的 IDE 中提供了 git 的 GUI 擴展,但仍然有不少場合須要依靠命令行(CLI)操做才行。git

下面我將介紹 10 個 git 別名,這些別名能夠幫你更高效的使用 git 。程序員

關於 git 別名

git 別名通常根據用戶的配置被存儲在 ~/.gitconfig 中。也能夠用 git config alias.s ‘status -s’ 命令來手動設置別名。github

你能夠把接下來我將要介紹的這些 git 別名添加到 ~/.gitconfig 文件的 [alias] 塊中,這一部分存儲了全部別名及其命令。面試

查看 git 別名

git 命令行提供了不少選項,能夠列出全部 git 配置和源的位置(系統,用戶或本地)。用 git config --list --show-origin 命令能詳細列出全部的配置和源:segmentfault

[alias]
    s = status
    co = checkout

Git status

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 checkout

咱們須要常常在 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

image.png

如你所見,它能提供更多的上下文信息,例如用彩色突出顯示了最後一次提交中的 git commit author 的名稱。

Git commit

想要更快的提交本身的代碼,能夠用下面的別名,用一段通用的提交消息將全部 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 origingit 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 log

最後是最有用的 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

image.png

總結

下面是要配置在你 ~/.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

173382ede7319973.gif


本文首發微信公衆號:前端先鋒

歡迎掃描二維碼關注公衆號,天天都給你推送新鮮的前端技術文章

歡迎掃描二維碼關注公衆號,天天都給你推送新鮮的前端技術文章


歡迎繼續閱讀本專欄其它高贊文章:


相關文章
相關標籤/搜索