開発者として、おそらくGit CLI(Command Line Interface)を毎日使用しています。しかし、同じ古いコマンドを繰り返し書くのは面倒です。特にコマンドが長い場合はさらに面倒です。ここでGitのエイリアスが役立ちます。

この記事では、エイリアスを使用してGitコマンドを簡素化する方法を学びます。

目次

前提条件

  • Gitの知識。

  • Git Bashのインストール(Windowsユーザー向け、オプションですが推奨されます)。

  • VS CodeなどのIDE(これもオプションです)。

Gitエイリアスとは何か

Gitエイリアスは既存のGitコマンドのカスタムショートカットであり、一般的なタスクを迅速かつ簡単に行うことができます。これにより、コマンドを定義してショートカットを自分好みにカスタマイズできます。

GitエイリアスをGit構成に追加/作成するための主なオプションは2つあります。Git構成ファイルを使用するか、CLI(ターミナル/コマンドライン)を介して直接追加することです。

このオプションでは、グローバルなgit構成ファイルを開き、gitエイリアスをファイルの末尾に追加します。

お好みのGitエディタの設定方法

Gitのデフォルトのエディターソフトウェアを設定してください。たとえば、私はVS Codeを使用してGit構成ファイルを編集していますが、お好きなテキストエディター/コードエディターをご利用いただけます。

Windows(CMD/PowerShell)でNotepadを好みのエディターとして設定するには、次のコマンドを実行してください。

git config --global core.editor "notepad"

WindowsおよびMacOS/LinuxでVS Codeを好みのエディターとして設定するには、次のコマンドを実行してください。

git config --global core.editor "code --wait"

異なるデフォルトエディターを設定するには、「Set {editor} as default Git editor」とオンラインで検索し、{editor}をご希望のアプリに置き換えてください。

Git構成ファイルを開く方法

お好きなターミナルを開き、次のコマンドを入力してください。これにより、グローバルGit構成ファイル(git config —global)が編集モード(-e)で開かれます。

git config --global -e

次の場所からGit構成ファイルを直接開くことができます:

Mac Os:ホームディレクトリ → 隠しファイルを表示(Cmd + Shift + H) → .gitconfig

WindowsC:\Users\YourUsername\ → 隠しファイルを表示(表示で) → .gitconfig を検索

Linux: ホームディレクトリ → 隠しファイルを表示(Ctrl + H) → .gitconfig

設定ファイルを介してGitエイリアスを追加する方法

はじめてGitエイリアスを追加する場合は、.gitconfigファイルを開き、末尾に[alias]を追加し、その下にショートカットをリストアップしてください。これにより、Gitにこれらがエイリアスであることが伝えられます。好きなエイリアス(実行したいコマンドの短縮形)を追加してください。

Gitエイリアスの形式は<alias> = <command>です。

co = checkout
cob = checkout -b

上記の例の説明:

co = checkout これによりgit checkoutコマンドを短縮したgit coコマンドにマッピングします。その後、ターミナルでgit co feature/123と呼び出します。

コマンドの前にgitを入力する必要はありません。設定は自動的にこれを先頭に追加します。マッピングしているコマンドがGitコマンドであることを知っているためです。

注意: コマンドに渡される任意のパラメータは、エイリアス内で呼び出される最終コマンドにのみ適用されます。

この方法でさらにエイリアスを追加することで、既存のgitコマンドにショートカットをマッピングできます。ファイルを保存して閉じると、エイリアスがターミナル内で利用できるようになります。

CLIでエイリアスを追加する方法

Gitエイリアスを追加するためのより効率的な方法を希望する場合は、直接ターミナル/コマンドラインから追加できます。

上記の例を取り上げて、以下のように直接追加できます:

コマンドの形式は次のとおりです: git config --global alias.{alias} "{original command}":

git config --global alias.co "checkout"
#または
git config --global alias.cob "checkout -b"

それだけです!

より複雑なショートカットのためのカスタムコマンドの作成方法

この方法は素晴らしいようですが、実際にはそれほど印象的ではありません – ほんの数文字しか削除していません。しかし、これらをはるかに役立つものにすることができます。シェルコマンドを使用して独自のコマンドを作成できます。

次の例を見てみましょう。私がよく使用するコマンドです!

new-work = !git checkout main && git pull && git cob

このエイリアスは、複数のGitコマンドを1つのシェルコマンドに組み合わせます。 ! 文字は、Gitにそれを標準のGitコマンドではなくシェルコマンドとして扱うよう指示します。

!がない場合、GitはエイリアスをGitコマンドとして処理します(たとえば、checkoutgit checkoutになります)。 !を使用すると、Gitは前にgitを追加せずにそれをシェルコマンドとして実行することを認識します。

  • 最初に、mainブランチをチェックアウトします。

  • &&演算子を使用すると、前のコマンドが成功した場合にのみ他のコマンドが実行されます。

  • 次に、mainから変更を取得します。

  • 最後に、他のエイリアスgit cobを使用してmainブランチから新しいブランチを作成します。

最終コマンドは、元のGitコマンドと同様にパラメーターを受け入れることができるため、次のように使用できます。

git new-work 'feature/new-work-from-main'

全コマンドでパラメーターを使用する方法

これまでは、エイリアス内の最終的なgitコマンドにのみパラメータを渡すことができました。しかし、もしエイリアス内のいくつか、あるいはすべてのコマンドにパラメータを渡したい場合はどうすればよいのでしょうか?シェル関数を使用することでこれを実現できます。

次の例をご覧ください:

new-work = "!f() { git checkout \"$1\" && git pull && git checkout -b \"$2\"; }; f"

上記では、入力パラメータを処理するシェル関数を使用しています。

説明:

  1. !f()

    • ! は、エイリアスを通常のGitコマンドではなくシェルコマンドとして解釈するようGitに伝えます。

    • f() は、複数のコマンドを順番に実行できるシェル関数 f を定義します。

  2. { } 内のすべてが、f() 関数内で実行される内容です。

  3. git checkout \"\$1”'\:パラメーター化されたGitコマンドを実行します。ここで\$1はエスケープされ、エイリアスに渡された最初のパラメーターで置き換えられます。 \" のエスケープシーケンスは、スペースを含むブランチ名を許可します。

  4. &&は、前のコマンドが成功した場合にのみ、各コマンドが実行される論理演算子です。 git checkout "$1" が失敗した場合、その後のコマンドは実行されません。

  5. git checkout -b \"\$2”\:2番目のパラメーターの名前で新しいブランチを作成します。

  6. ;f() 関数の終わりを示します。

  7. f:最終的なfはエイリアス関数をすぐに呼び出し、つまりエイリアスを呼び出すと、関数を宣言してすぐに呼び出します。

使用法:

git new-work development task/feat-123

その他の便利なエイリアス

[alias]
     co = checkout
    cob = checkout -b
    s = status
    tidy-up = !git checkout main && git branch | grep -v "main" | xargs git branch -D
    latest = !git checkout main && git pull
    new-work = "!f() { git checkout \"$1\" && git pull && git checkout -b \"$2\"; }; f"
    done = !git push -u origin HEAD
    save = !git add -A && git commit
    saveM = !git add -A && git commit -m
    br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate

概要

co: 指定されたブランチにチェックアウト → git co task/feat-123

cob: 現在のブランチから新しいブランチを作成 → git cob feature/123

s: 現在のGitブランチの状態を表示するためにgit statusを呼び出す → git s

tidy-up: main以外のすべてのローカルブランチを削除 → git tidy-up

latest: リモートのmainブランチから最新の変更を取得 → git latest

new-work: 1番目のパラメータのブランチから2番目のパラメータのブランチを作成 → git new-work main feat/123

git done: 現在のブランチをリモートリポジトリ(origin)にプッシュし、それを上流ブランチとして設定します。最初のコミットをプッシュしてエラーが発生した場合に役立ちます。
fatal: 現在のブランチに上流ブランチがありません。現在のブランチをプッシュしてリモートを上流に設定するには、git push --set-upstream originを使用してください

save: すべての変更されたファイルを単に追加し、コミットし、デフォルトのGitエディタを開いてコミットメッセージをリクエストします → git save

savem: 上記のように行いますが、エディタを開く代わりに、コミットメッセージをインラインで渡すことができます → git savem ‘Task123: add index.html

br: これは複雑に見えますが、実際にはそれほど複雑ではありませんが、エイリアスの力を強調しています。 要するに、git branchの出力形式をカスタマイズして、最新のコミット日付でソートされたブランチの詳細で色分けされたリストを表示するようにします。 ローカルにある各ブランチについて、以下の画像のように見えます。

これで、Gitのエイリアスの紹介と、構成にスターターとして追加できる便利なエイリアスのいくつかの例があります。

いつも通り、もし話をしたい場合や将来の記事について聞きたい場合は、Twitterでフォローしてください。