Skip to main content

Gitのワークフローを高速化し、生産性を高める10のエイリアス

著者
Headshot of Royee Shemesh

Royee Shemesh

2020年12月2日

0 分で読めます

コードのバージョン管理ツールとしてGitを使うことは、開発者にとって日々の業務の一部です。コマンドラインでGitのワークフローを進めている方もいるでしょう。もちろん、ダークテーマで使っていますよね?

IntelliJやVS Codeなどの統合開発環境(IDE)でGitのGUIが便利なこともありますが、コマンドラインインターフェース(CLI)を使わなければならない場面もあります。

この記事では、個人でもチームでも、Gitのワークフローを高速化し、生産性を高めるのに役立つ10のエイリアスをご紹介します。

Gitエイリアスのゲームを始めましょう!

Gitエイリアスの設定方法

Gitエイリアスは通常、ユーザー設定ファイル ~/.gitconfig に保存されています。たとえば、git config alias.s ‘status -s’ コマンドを使って、エイリアスを手動で設定することもできます。

次に紹介するGitエイリアスは、~/.gitconfig ファイルの [alias] セクションに追加してください。このセクションには、すべてのエイリアスとそのコマンドが保存されます。以下に、このファイルでのGitエイリアスの設定例を示します。

Gitエイリアスの一覧を表示する方法

Gitの実行ファイルには、すべてのGit設定とその設定元(システム、ユーザー、ローカル)を一覧表示するコマンドラインオプションがあります。次のGitコマンドを実行すると、設定元とともにすべてのGit設定が詳細に表示されます。git config --list --show-origin.

[alias]
    s = status
    co = checkout

Git status

git status コマンドをよく実行しますか?私はよく使います!次のGitエイリアスを設定すれば、ショートカットで実行できます。

[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ブランチのチェックアウトには、以前いたブランチに戻る git checkout - のようなショートカットを使えます。これは git checkout @{-1} の省略形です。そのため、このエイリアスでも git co - のように利用できます。

新しいブランチを作成して切り替える

CLIから新しいGitブランチを作成することが多いなら、入力の手間を省けるこちらをどうぞ。

[alias]
cob = checkout -b

次のように使います。

$ git cob feat/add-popup

Switched to a new branch 'feat/add-popup'

ブランチを削除する

ブランチを削除する機会はそれほど多くないかもしれませんが、いざ必要になると、Gitコマンドの引数やフラグを調べるのに時間がかかることがあります。そこで、Gitのブランチ操作に使える、短く覚えやすいエイリアスを作成しましょう。

[alias]
del = branch -D

次のように使います。

$ git del feat/add-popup
Deleted branch featureB (was b5cbv113).

すべてのブランチを一覧表示する

複数の機能を開発していると、Gitのワークフローでは複数のブランチを扱うことになります。前回どこまで作業したか、どのブランチを使っていたかを見つけるのは大変です。

次のGitエイリアスを使うと、すべてのブランチをコミット日時順に並べ、コミットが最も新しいブランチから表示できます。

[alias]

br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate

使い方と出力例を見てみましょう。

$ git br
Gitのmasterブランチがバージョンv0.0.0-developmentで、deps-lockfileを最近修正したことを示すターミナルのスクリーンショット。

ご覧のとおり、直近のコミットの作成者名など、色付きのハイライトとともに詳しい情報が表示されます。

Git commit

こまめに、早めにコミットすることは、Gitの強みのひとつです。Gitの内部構造のおかげで処理は速く、オーバーヘッドもありません。ならば、頻繁にコミットしませんか?

もちろん、具体的なGitのワークフローによります。ただし、Gitを使った作業が多く、作業内容を見失わないようこまめにコミットを保存したい場合は、特にプルリクエストを使うワークフローでは、コミットメッセージの優先度はそれほど高くないかもしれません。

コミットの状態を手早く保存してGitのワークフローを高速化し、生産性を高めるには、次の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エイリアスを実行すると、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 origin や git push origin main のように長くなりがちです。

ただし、プッシュ先のブランチと同じ名前のブランチで作業している場合は、リモートブランチ名を HEAD として指定できます。このエイリアスを使えば、git done という簡単なショートカットで、ローカルのGitリポジトリからoriginまたはupstreamリモートにコミットをプッシュできます。

[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エイリアスを使ってログの出力を組み立てる方法はさまざまですが、次のカスタム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エイリアスを使うと、git logの出力が格段に読みやすくなります。ぜひ試してみてください。

$ git log
色分けされたコミット履歴とブランチラベルが表示された、Gitログのターミナル画面。

Gitエイリアスのまとめ

コマンドラインで作業する場合に生産性を高め、Gitのワークフローを高速化する10のGitエイリアスをご紹介しました。

~/.gitconfig ファイルに追加するGitエイリアスの一覧はこちらです。

[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
What’s next?

次に読む記事

GitHubのセキュリティに関する10のベストプラクティスもぜひご覧ください。また、GitリポジトリをSnykに接続して、プロジェクトのオープンソース依存関係にある脆弱性を検出し、修正してみませんか?

CTFを始めよう

オンデマンドのバーチャル入門ワークショップを視聴して、CTFの課題の解き方を学びましょう。

カテゴリー: