ロゴテキスト ロゴ

    Git大好き人間のおすすめGit alias設定

    Git大好き人間のおすすめGit alias設定

    Gitコマンドのaliasを設定すると git checkoutgit ch のように出来るようになります!


    時短時短 ☺️



    Gitの関連の設定を色々した結果「何やってるかよく分からないけど速い😂」

    といい意味で評価していただいている(と信じたいw)事がある私の設定について記載します!

    検証した環境

    1 git 2.32.0
    2 zsh 5.7.1
    3 Mac OS 11.4 macOS Big Sur
    4 iTerm2 3.4.8

    aliasを設定する前に

    gitコマンドのaliasの設定の仕方は

    • gitコマンドを使う
    • ~/.gitconfig等、設定ファイルに直接記述

    の2通り、記事の主旨と逸れるので簡単に。



    gitコマンドを使う

    # コマンドにスペースが入らない場合はそのまま記載
    $ git config --global alias.ch checkout
     
    # コマンドでスペースを入れる場合は "" で囲む
    $ git config --global alias.chb "checkout -b"

    --globalの部分は--system--local--worktreeがあるのでお好みで。




    設定ファイルに直接記述

    vim ~/.gitconfig等で設定。

    設定ファイルいじるのに慣れている人はこちらが速いと思います。

    ~/.gitconfig
    [color]
          ui = auto
    
    
    [alias]
        ch = checkout
        chb = checkout -b


    alias設定で気をつけていること

    私の場合、伝える上で他人のMac/PCでコマンドを叩く、もしくはコマンドを伝えるという事がちょこちょこあります。

    また、sshでログインして別の環境でGit操作をする事もあります。


    そのような場合自分のMacに設定しているaliasが使えません




    そういったケースて少なからず発生するものと思ってます。

    なので、aliasを設定する際は元のコマンドが思い出せるようにすることを心掛けています。




    例えば git checkout xxgit c xxにするとcheckoutという単語を思い出せなくなりそうなのでgit chに設定しています。




    この辺りの考え方・感じ方は人それぞれだと思いますが、

    重要なのはどのコマンドをすると何が行われるか、というのが理解出来ていればGitの操作は思っている以上に楽に出来ます☺️




    1. gitコマンドのalias

    git ch

    $ git checkout



    checkoutは頻繁に使用するコマンド!

    git ch -b "feture/xx"のようにブランチの作成時も短く出来ます


    $ git config --global alias.ch checkout
    ~/.gitconfig
    [alias]
        ch = checkout

    他のパターンでgit coにされている人もいますね




    git br

    git branch



    これを設定するとgit br -D feature/xxのようにブランチの削除も短くなります


    git br

    $ git config --global alias.br branch
    ~/.gitconfig
    [alias]
        br = branch

    git bra

    git branch -avv



    すべてのブランチを確認したい時用。


    -aでリモートのブランチも一緒に表示され、

    -vv--verboseと呼ばれ詳細が表示されます。


    更にvvvを2つ重ねる事で追跡ブランチも分かる ようになります。



    -av

    git bra

    -avv

    git bra

    $ git config --global alias.bra "branch -avv"
    ~/.gitconfig
    [alias]
        bra = branch -avv

    git sh

    git stash



    何かと使うstash。

    aliasに登録しておくとやっぱり便利


    $ git config --global alias.sh stash
    ~/.gitconfig
    [alias]
        sh = stash


    git save

    git stash save -u



    stashをする際にコメントを残したい事があり、その際に使用するコマンド。

    「メッセージ付きのstashどうやるんだっけ?」となる事も多いのでaliasに登録しておくと楽ですね

    $ git save "メッセージ付きのstashを残すぞ!"


    stashをする際はだいたい untracked のファイルも含めたい事が多い(私だけ?)ので、

    -uを付けて untrackedのファイルも含めるようにしています。


    $ git config --global alias.save "stash save -u"
    ~/.gitconfig
    [alias]
        save = stash save -u


    git cp

    git cherry-pick



    登場頻度は低いcherry-pick

    しかし出てきたら出てきたで良く打ち間違えるし長いので。笑


    $ git config --global alias.cp cherry-pick
    ~/.gitconfig
    [alias]
        cp = cherry-pick


    git st

    git status -s



    私はstatusをtigで確認するのでstatusコマンド自体ほぼ使わないのですが、

    -sを使って短めに表示するようにしています

    git st

    $ git config --global alias.st "status -s"
    ~/.gitconfig
    [alias]
        st = status -s


    git see

    hub browse

    gh repo view --web



    該当リポジトリのGitHubをブラウザで開きます。



    前者の場合hubコマンドが、後者の場合ghコマンドが必要になります。

    インストールはそれぞれ

    • brew install hub
    • brew install gh

    # hubコマンドの場合
    $ git config --global alias.see "browse"
     
    # ghコマンドの場合
    $ git config --global alias.see "!gh repo view --web"
    ~/.gitconfig
    [alias]
        # hubコマンドの場合
        see = status -s
        # ghコマンドの場合
        see = !gh repo view --web


    git la

    git log --oneline --decorate --graph --branches --tags --remotes --all



    ログの確認はよく行うようにしているのでかなり使用頻度の高いコマンド

    私がこの記事の中で1番使うコマンドがこのgit la

    git la

    $ git config --global alias.la "log --oneline --decorate --graph --branches --tags --remotes --all"
    ~/.gitconfig
    [alias]
        la = log --oneline --decorate --graph --branches --tags --remotes --all



    利用頻度が高いため、私はggというコマンドをzshのaliasに登録しています



    git delete-merged-branch <ブランチ名>

    f () { git checkout $1; git branch --merged|egrep -v '\\*|develop|master|main'|xargs git branch -d; };f



    特殊なコマンドですがかなり便利!

    指定した<ブランチ名>にマージ済みのローカルブランチを削除する、というコマンドになります。




    例えばmasterにマージしているhogefugaがある時に

    マージ済みのブランチがある状態

    コマンドを実行すると

    $ git delete-merged-branch master
    Already on 'master'
    Deleted branch fuga (was 813d817).
    Deleted branch hoge (was 8a3cd3d).

    hogefuga2つのブランチが削除されます。

    マージ済みのブランチを削除する事が出来た



    開発を進めていくとローカルブランチにマージして不要になったブランチがたまることは往々にしてあるので、

    そんな時にこのコマンドを実行すればローカルのマージ済みブランチを削除出来ます。



    ↓のサイトを参考に設定させてもらいました。

    Gitでマージ済みブランチを一括削除 - Qiita


    $ git config --global alias.delete-merged-branch "!f () { git checkout $1; git branch --merged|egrep -v '\\*|develop|master|main'|xargs git branch -d; };f"
    ~/.gitconfig
    [alias]
        delete-merged-branch = "!f () { git checkout $1; git branch --merged|egrep -v '\\*|develop|master|main'|xargs git branch -d; };f"


    git aliases

    git config --get-regexp alias | sed 's/^alias.//g' | sed 's/ / = /1


    自分の設定しているGitのaliasを全て表示してくれるコマンド

    $ git aliases
    st = status -s
    ch = checkout
    br = branch
    bra = branch -a -vvv
    ・・・


    このコマンドの使い道としては、例えば

    • ペア・モブプロをしている際などに相手の人に自分が設定しているコマンドを伝えたい時
    • 設定したコマンド名がどうにも思い出せない時

    のような時に使えます。



    ↓のサイトを参考に設定させてもらいました。

    gitconfigで何のエイリアスを設定していたかを確認するエイリアス - Qiita


    $ git config --global alias.aliases "!git config --get-regexp alias |  sed 's/^alias.//g' | sed 's/ / = /1'"
    ~/.gitconfig
    [alias]
        aliases = !git config --get-regexp alias |  sed 's/^alias.//g' | sed 's/ / = /1'
    参考資料
    プロフィールの背景画像 プロフィール画像
    Yuki Takara
    都内でフリーランスのエンジニアをやってます。フロントとアプリ開発メインに幅広くやってます。