gitコマンドのエイリアスを設定する
2022.04.20
2024.03.24
開発環境
git
はじめに
git
コマンドのエイリアスの設定方法を紹介します。
gitのエイリアス
git
コマンドのエイリアスはgitの設定ファイルで定義することができます。
下記のように設定することで、git a
でgit add
を実行できます。
1[alias]
2 a = add
3 b = branch
4 c = commit
5 d = diff
6 f = fetch
7 g = grep
8 l = log
9 m = merge
10 o = checkout
11 pl = pull
12 ps = push
13 s = status
14 w = whatchanged
15 cm = commit --message
16 co = checkout
17 cp = cherry-pick
設定ファイル
設定ファイルは3つあります。それぞれの設定ファイルの有効範囲は下記の通りです。
設定ファイル | 説明 |
---|---|
.git/config | リポジトリごとの設定 |
$HOME/.gitconfig | ユーザーごとの設定 |
/etc/gitconfig | システムごとの設定 |
基本的にエイリアスを設定する時は、$HOME/.gitconfig
になると思います。
GitAlias
どのようなエイリアスを設定すればいいか悩んだ場合は、GitAliasを参考にするのがいいと思います。
GitHub - GitAlias/gitalias: Git alias commands for faster easier version control
Git alias commands for faster easier version control - GitAlias/gitalias
gitalias.txt
というファイルに多くのエイリアスが設定されているので、~/.gitalias
として保存して~/.gitconfig
に下記を追加すれば全て使えるようになります。
1[include]
2path = ~/.gitalias
設定した内容
私の場合はGitAliasを全て使いこなせる自信がなかったので、使えそうなものを抜粋して設定しました。
1[alias]
2 #basic
3 a = add
4 b = branch
5 c = commit
6 d = diff
7 f = fetch
8 g = grep
9 l = log
10 m = merge
11 o = checkout
12 pl = pull
13 ps = push
14 s = status
15 w = whatchanged
16 cm = commit --message
17 co = checkout
18 cp = cherry-pick
19
20 # log
21 ll = log --graph --topo-order --date=short --abbrev-commit --decorate --all --boundary --pretty=format:'%Cgreen%ad %Cred%h%Creset -%C(yellow)%d%Creset %s %Cblue[%cn]%Creset %Cblue%G?%Creset'
22
23 # reset commits
24 reset-commit = reset --soft HEAD~1
25 reset-commit-hard = reset --hard HEAD~1
26 reset-commit-hard-clean = !git reset --hard HEAD~1 && git clean -fd
27
28 # undo commits
29 undo-commit = reset --soft HEAD~1
30 undo-commit-hard = reset --hard HEAD~1
31 undo-commit-hard-clean = !git reset --hard HEAD~1 && git clean -fd
32
33 # summary
34 log-of-count-and-format = "!f() { format=\"$1\"; shift; git log $@ --format=oneline --format="$format" | awk '{a[$0]++}END{for(i in a){print a[i], int((a[i]/NR)*100) \"%\", i}}' | sort -nr; }; f"
35 log-of-count-and-format-with-date = "!f() { format=\"$1\"; shift; date_format=\"$1\"; shift; git log $@ --format=oneline --format=\"$format\" --date=format:\"$date_format\" | awk '{a[$0]++}END{for(i in a){print a[i], int((a[i]/NR)*100) \"%\", i}}' | sort -nr; }; f"
36 log-of-count-and-email = "!f() { git log-of-count-and-format \"%aE\" $@; }; f"
37 log-of-count-and-day = "!f() { git log-of-count-and-format-with-date \"%ad\" \"%Y-%m-%d\" $@ ; }; f"
38 churn = !"f() { git log --all --find-copies --find-renames --name-only --format='format:' \"$@\" | awk 'NF{a[$0]++}END{for(i in a){print a[i], i}}' | sort -rn;};f"
39 summary = "!f() { \
40 printf \"Summary of this branch...\n\"; \
41 printf \"%s\n\" $(git rev-parse --abbrev-ref HEAD); \
42 printf \"%s first commit timestamp\n\" $(git log --date-order --format=%cI | tail -1); \
43 printf \"%s last commit timestamp\n\" $(git log -1 --date-order --format=%cI); \
44 printf \"\nSummary of counts...\n\"; \
45 printf \"%d commit count\n\" $(git rev-list --count HEAD); \
46 printf \"%d date count\n\" $(git log --format=oneline --format=\"%ad\" --date=format:\"%Y-%m-%d\" | awk '{a[$0]=1}END{for(i in a){n++;} print n}'); \
47 printf \"%d tag count\n\" $(git tag | wc -l); \
48 printf \"%d author count\n\" $(git log --format=oneline --format=\"%aE\" | awk '{a[$0]=1}END{for(i in a){n++;} print n}'); \
49 printf \"%d committer count\n\" $(git log --format=oneline --format=\"%cE\" | awk '{a[$0]=1}END{for(i in a){n++;} print n}'); \
50 printf \"%d local branch count\n\" $(git branch | grep -v \" -> \" | wc -l); \
51 printf \"%d remote branch count\n\" $(git branch -r | grep -v \" -> \" | wc -l); \
52 printf \"\nSummary of this directory...\n\"; \
53 printf \"%s\n\" $(pwd); \
54 printf \"%d file count via git ls-files\n\" $(git ls-files | wc -l); \
55 printf \"%d file count via find command\n\" $(find . | wc -l); \
56 printf \"%d disk usage\n\" $(du -s | awk '{print $1}'); \
57 printf \"\nMost-active authors, with commit count and %%...\n\"; git log-of-count-and-email | head -7; \
58 printf \"\nMost-active dates, with commit count and %%...\n\"; git log-of-count-and-day | head -7; \
59 printf \"\nMost-active files, with churn count\n\"; git churn | head -7; \
60 }; f"
また、git
と毎回打つのも面倒だったので、.zshrc
には下記を追加しました。
1alias g=git
参考
- GitAlias/gitalias: Git alias commands for faster easier version control
- Git - git-config Documentation
Share
関連記事
【NeoVim】AstroNvimを使ってみる
2023.04.01
【CNCF】Backstage触ってみた(Software Catalog)
2024.03.28
【iTerm2おすすめ設定】ホットキーでどこでも表示/非表示できるようにする
2021.07.19
【VSCode】launch.jsonについて理解する
2021.07.11