[git]自定義git指令

有時候git指令很長要打很多字,為了節省時間(就是懶)這時候就可以透過 alias 去新增自定義的git指令

use command line

ex: git config --global alias.sl 'stash list'
上面的設定就是用 git sl 來取代 git stash list, alias.點的後面就是要新增的指令,字串裡就是要執行的指令。

setting .gitconfig file

可以用編輯器直接打開 .gitconfig 設定檔我是用atom所以指令會是atom . ~/.gitconfig,大概會長下面這樣

[user]
    email = sean.huang@tarokosoftware.com
    name = sean
[core]
    askpass = git-gui--askpass
[alias]
    sl = stash list
    ssp = "!f(){ git stash show -p stash@{$1}; };f"
    ss = stash save -a
    sp = stash pop
    sa = "!f(){ git stash apply stash@{$1}; };f"
    sd = "!f(){ git stash drop stash@{$1}; };f"

在alias底下的就是我設定一些關於 git stash的快捷指令,以 git stash pop 為例可以看到我用
sp = stash pop 的設定,所以之後我只要在terminal裡面輸入 git sp 就會執行 git stash pop

另一個方法是 shell function "!function(){};f" , 這個方法可以使用在需要帶參數或是做一些複合指令的時候
git stash apply stash@{1} 為例,在 stash apply後面需要加上stash@{1}的參數去要決定要apply在git stash list裡的第幾個stash編號,要用shell function來實現這個指令的話就會是這樣

sa = "!f(){ git stash apply stash@{$1}; };f"

把原本的指令寫在"!function(){};f"的大括號裡, $1 代表第一個參數,有多個參數的話就以此類推 $1 $2 $3 ...
所以在用shell function 之後縮短的指令就變成 git sa 1 跟原本的 git stash apply stash@{1} 比是不是簡潔很多了。

如果要用shell function做複合指令的話需要用 && 連接指令像是下面這樣,執行 git sss 就會幫你stash現在的進度並且在terminal上show出stash 的內容。

sss = "!f(){ git stash && git stash show -p ;};f"

shell function的其他用法可以參考下面的連結
Referance
One weird trick for powerful Git aliases
Git 工具 - 儲藏 (Stashing)
Creating a git alias with a parameter

comments powered by Disqus