- Git
git aliasの設定方法とおすすめ一覧 .gitconfigコピペ用
git alias(エイリアス)とは、長い Git コマンドに短い別名を付ける仕組みで、git config --global alias.st "status --short --branch" のように登録すると、以後は git st だけで同じコマンドを実行できます。 設定はホームディレクトリの .gitconfig ファイルの [alias] セクションに保存されるので、ファイルを直接編集してまとめて登録することもできます。
この記事では、switch/restore に対応したおすすめエイリアスを一覧表にし、そのまま貼れる .gitconfig の全文を用意しました。あわせて、! で始まるシェルコマンド型、引数を取る関数型、シェルの alias(g=git など)との違いと補完の効かせ方、PowerShell での引用符の違い、設定の確認・削除コマンドを扱います。掲載したエイリアスは Git 2.43.0(Linux、bash)で実際に動かし、出力を載せています。
git alias の早見表
設定・確認・削除のコマンド
| やりたいこと | コマンド |
|---|---|
| エイリアスを登録する | git config --global alias.st "status --short --branch" |
| 1つだけ確認する | git config --global --get alias.st |
| 全部を一覧で見る | git config --global --get-regexp '^alias\.' |
| 何の別名かを調べる | git help st(または git st -h) |
| 1つ削除する | git config --global --unset alias.st |
| エディタでまとめて編集する | git config --global --edit |
| このリポジトリだけに登録する | --global を外して git config alias.st "status" |
| 1回だけ試す | git -c alias.hi='!echo hi' hi |
エイリアスの3つの型
| 型 | .gitconfig での書き方 | 展開のされ方 |
|---|---|---|
| Git コマンド型 | st = status --short --branch |
git st → git status --short --branch |
| シェルコマンド型 | root = !pwd |
! より後ろをシェルで実行 |
| 関数型(引数を取る) | new = "!f() { git switch --create \"$1\"; }; f" |
シェル関数を定義して呼び出し、引数を $1 で受け取る |
おすすめエイリアス一覧(switch/restore 対応)
ブランチの切り替えは git switch、変更の取り消しは git restore を使う形でそろえました。「確認」の列は、今回の検証で実際に実行したかどうかです。
状態を見る
| 短縮形 | 展開後 | 用途 | 確認 |
|---|---|---|---|
git st |
status --short --branch |
状態を短い形式で表示 | 実行 |
git df |
diff |
作業ツリーの差分 | 実行 |
git dfs |
diff --staged |
ステージ済みの差分 | 実行 |
git last |
log -1 --stat |
直前のコミットを確認 | 実行 |
git lg |
log --oneline --graph --decorate -n 15 |
履歴を1行ずつグラフで | 実行 |
git lga |
log --oneline --graph --decorate --all -n 30 |
全ブランチの履歴 | 実行 |
git br |
branch |
ブランチ一覧 | 実行 |
git bra |
branch --all --verbose |
リモートも含めた一覧 | 実行 |
ブランチを切り替える・変更を取り消す
| 短縮形 | 展開後 | 用途 | 確認 |
|---|---|---|---|
git sw |
switch |
ブランチを切り替える | 実行 |
git swc |
switch --create |
ブランチを作って切り替える | 実行 |
git swm |
switch main |
main に戻る | 実行 |
git back |
switch - |
直前にいたブランチへ戻る | 実行 |
git unstage |
restore --staged |
ステージから外す(add の取り消し) | 実行 |
git discard |
restore |
作業ツリーの変更を取り消す | 実行 |
コミットする
| 短縮形 | 展開後 | 用途 | 確認 |
|---|---|---|---|
git a |
add |
ファイルをステージする | 実行 |
git aa |
add --all |
すべての変更をステージする | 実行 |
git ap |
add --patch |
変更のかたまりごとに選んでステージする | 未実行(対話操作のため) |
git cm |
commit --message |
メッセージ付きでコミット | 実行 |
git amend |
commit --amend --no-edit |
直前のコミットに追加(メッセージはそのまま) | 実行 |
git undo |
reset --soft HEAD~1 |
直前のコミットを取り消し、変更はステージに残す | 実行 |
リモートとやり取りする・一時退避
| 短縮形 | 展開後 | 用途 | 確認 |
|---|---|---|---|
git f |
fetch --prune |
取得し、消えたリモートブランチの記録も整理 | 実行 |
git pl |
pull --rebase |
リベースで取り込む | 実行 |
git ps |
push |
プッシュ | 実行 |
git psu |
push --set-upstream origin HEAD |
今のブランチを初回プッシュ | 実行 |
git pf |
push --force-with-lease |
リモートの状態を確かめたうえで強制プッシュ | 実行(差分なしの状態) |
git ss |
stash push --include-untracked |
未追跡ファイルも含めて退避 | 実行 |
git sp |
stash pop |
退避を戻す | 実行 |
シェルコマンド型・関数型
| 短縮形 | 用途 | 確認 |
|---|---|---|
git aliases |
登録済みエイリアスを一覧表示 | 実行 |
git root |
リポジトリの最上位ディレクトリを表示 | 実行 |
git cleanup |
main にマージ済みのローカルブランチをまとめて削除 | 実行 |
git new <名前> [元] |
ブランチを作って切り替える(元を省くと main から) | 実行 |
git fixup <コミット> |
指定コミットへの修正を作り、自動でまとめる | 実行 |
git who [パス] |
そのパスをコミットした人を件数順に表示 | 実行 |
リモートは、同じマシン上に作った bare リポジトリで確認しています。
コピペ用 .gitconfig 全文([alias] セクション)
次の [alias] セクションを、ホームディレクトリの .gitconfig(~/.gitconfig)に貼り付けます。git config --global --edit を実行すると、このファイルがエディタで開きます。すでに [alias] がある場合は、中の行だけを追記してください。
[alias]
# --- 状態を見る ---
st = status --short --branch
df = diff
dfs = diff --staged
last = log -1 --stat
lg = log --oneline --graph --decorate -n 15
lga = log --oneline --graph --decorate --all -n 30
br = branch
bra = branch --all --verbose
# --- ブランチを切り替える(switch) ---
sw = switch
swc = switch --create
swm = switch main
back = switch -
# --- 変更を取り消す(restore) ---
unstage = restore --staged
discard = restore
# --- コミットする ---
a = add
aa = add --all
ap = add --patch
cm = commit --message
amend = commit --amend --no-edit
undo = reset --soft HEAD~1
# --- リモートとやり取りする ---
f = fetch --prune
pl = pull --rebase
ps = push
psu = push --set-upstream origin HEAD
pf = push --force-with-lease
# --- 一時退避 ---
ss = stash push --include-untracked
sp = stash pop
# --- エイリアス自身 ---
aliases = config --get-regexp ^alias\\.
# --- シェルコマンド型(! で始める) ---
root = !pwd
cleanup = "!git branch --merged main | grep -vE '^\\*|^[[:space:]]*main$' | xargs -r git branch -d"
# --- 引数を取る関数型 ---
fixup = "!f() { git commit --fixup \"$1\" && git rebase -i --autosquash \"$1~1\"; }; f"
new = "!f() { git switch --create \"$1\" \"${2:-main}\"; }; f"
who = "!f() { git log --format='%an' -- \"${GIT_PREFIX}${1:-.}\" | sort | uniq -c | sort -rn; }; f"
.gitconfig を直接書くときの決まりは次のとおりです。
| 書きたい文字 | .gitconfig での書き方 | 例 |
|---|---|---|
| バックスラッシュ | \\ と2つ重ねる |
^alias\\. |
| 値の中の二重引用符 | \" |
\"$1\" |
値全体に ; や # を含む |
値全体を二重引用符で囲む | "!f() { ...; }; f" |
| コメント | 行頭に # または ; |
# --- 状態を見る --- |
cleanup は既定ブランチが main の前提です。master などを使っている場合は、main の部分を置き換えてください。xargs -r(入力が空なら実行しない)は GNU 版の xargs のオプションで、macOS 標準の xargs での動作は未実行です。
実行結果
貼り付けたあと、テスト用のリポジトリで順に実行した結果です(表示のパスとユーザー名は環境に合わせて置き換えています)。
$ git st
## main
?? sub/
$ git aa
$ git st
## main
A sub/b.txt
$ git unstage sub/b.txt
$ git st
## main
?? sub/
$ git aa
$ git cm "add b"
[main 24b8ac7] add b
1 file changed, 1 insertion(+)
create mode 100644 sub/b.txt
$ git lg
* 24b8ac7 (HEAD -> main) add b
* ac13cdc first
ブランチの作成・切り替え・掃除:
$ git swc feature/login
Switched to a new branch 'feature/login'
$ git cm "add c"
[feature/login 5b40edf] add c
1 file changed, 1 insertion(+)
create mode 100644 c.txt
$ git back
Switched to branch 'main'
$ git lga
* 5b40edf (feature/login) add c
* 24b8ac7 (HEAD -> main) add b
* ac13cdc first
$ git new topic/x
Switched to a new branch 'topic/x'
$ git swm
$ git cleanup
Deleted branch topic/x (was 24b8ac7).
$ git br
feature/login
* main
git cleanup は、main と同じ位置にあった topic/x だけを削除し、まだマージしていない feature/login は残しています。
直前のコミットの取り消しと、初回プッシュ:
$ git undo
$ git st
## main
M a.txt
$ git sw feature/login
Switched to branch 'feature/login'
$ git psu
To ../remote.git
* [new branch] HEAD -> feature/login
branch 'feature/login' set up to track 'origin/feature/login'.
$ git ss
Saved working directory and index state WIP on feature/login: 2477130 add d
$ git pl
Already up to date.
git alias の設定方法
コマンドで1つずつ登録する
git config --global alias.st "status --short --branch"
git config --global alias.sw switch
git config --global alias.unstage "restore --staged"
alias.の後ろが短縮形、その次の引数が展開後のコマンドです(先頭のgitは書きません)- 空白を含むときは引用符で囲みます
--globalを付けるとホームの .gitconfig に保存され、すべてのリポジトリで使えます
保存場所と優先順位
| 指定 | 保存先 | 有効範囲 |
|---|---|---|
--system |
システム全体の設定ファイル | そのマシンの全ユーザー |
--global |
~/.gitconfig |
自分の全リポジトリ |
指定なし(--local) |
リポジトリ内の .git/config |
そのリポジトリだけ |
同じ名前を global と local の両方に登録して、どこから読まれているかを表示しました。
$ git config --show-origin --show-scope --get-all alias.st
global file:/home/taro/.gitconfig status --short --branch
local file:.git/config status
後ろに表示されたもの(より狭い範囲)が優先されるので、この状態では git st は local の status として動きます。特定のリポジトリだけ別の動きにしたいときに使えます。
Git 本体のコマンド名は上書きできない
status という名前でエイリアスを登録してみます。
$ git config --global alias.status "status --short"
$ git status
On branch main
nothing to commit, working tree clean
短い形式にはならず、通常の git status が実行されました。Git に元からあるコマンドと同じ名前のエイリアスは無視されます。 既定の動きを変えたい場合は、st のように別の名前を付けます。
エイリアスの中で別のエイリアスを呼ぶ
$ git config --global alias.s2 st
$ git s2
## main
エイリアスから別のエイリアスを呼べました。互いに呼び合う形にすると、次のメッセージで止まります。
$ git config --global alias.l1 l2
$ git config --global alias.l2 l1
$ git l1
fatal: alias loop detected: expansion of 'l1' does not terminate:
l1 <==
l2 ==>
展開のされ方を確かめる
GIT_TRACE=1 を付けると、エイリアスがどう展開されたかが表示されます。
$ GIT_TRACE=1 git st
git.c:749 trace: exec: git-st
run-command.c:659 trace: run_command: git-st
git.c:405 trace: alias expansion: st => status --short --branch
git-st というコマンドを探し、見つからないのでエイリアスとして展開している様子が分かります。
! で始まるシェルコマンド型の書き方
値の先頭に ! を付けると、Git のサブコマンドではなく、シェルのコマンドとして実行されます。パイプや && を使いたいときはこの型にします。
git config --global alias.root '!pwd'
サブディレクトリの中で実行した結果です。
$ pwd
/home/taro/work/repo/sub
$ git root
/home/taro/work/repo
シェルコマンド型は、どこで実行してもリポジトリの最上位ディレクトリで動きます。 元のディレクトリは、環境変数 GIT_PREFIX に入っています。
$ git config --global alias.prefix '!echo "GIT_PREFIX=[$GIT_PREFIX] pwd=$(pwd)"'
$ git prefix
GIT_PREFIX=[sub/] pwd=/home/taro/work/repo
相対パスを引数に取るエイリアスでは、"${GIT_PREFIX}$1" のように前に付けると、実行した場所から見たパスとして扱えます。一覧の who はこの形です。
$ cd sub
$ git who b.txt
1 Taro Yamada
bash では ! を一重引用符で囲む
対話中の bash で、! を二重引用符の中に書くと、履歴展開として解釈されます。
$ git config --global alias.root2 "!pwd"
bash: !pwd: event not found
$ git config --global alias.root2 '!pwd'
$ git config --global --get alias.root2
!pwd
! を含むエイリアスは一重引用符で囲むか、.gitconfig を直接編集すると、この点を気にせず登録できます。
引数を取る関数型の書き方
シェルコマンド型では、git 別名 引数 の引数がコマンドの末尾にそのまま付け足されます。
$ git config --global alias.echo1 '!echo args:'
$ git echo1 one two
args: one two
そのため、途中で $1 を使うだけだと、引数が2回現れます。
$ git config --global alias.bad '!echo first=$1'
$ git bad one two
first=one one two
$1 が one に置き換わったうえで、末尾にも one two が付いています。シェル関数を定義してすぐ呼ぶ形にすると、引数を関数の中だけで使えます。
$ git config --global alias.good '!f() { echo first=$1; }; f'
$ git good one two
first=one
f() { ...; }; f の最後の f に引数が付け足され、関数の中の $1・$2 として受け取れる、という仕組みです。
| 書き方 | git 別名 one two の結果 |
使いどころ |
|---|---|---|
!echo args: |
args: one two |
引数を末尾に付けるだけでよいとき |
!echo first=$1 |
first=one one two |
意図と違う結果になりやすい |
!f() { echo first=$1; }; f |
first=one |
引数を途中で使う、順番を入れ替える、既定値を付ける |
!sh -c 'echo first=$1' - |
first=one |
関数型と同じ結果(引用符が増える) |
既定値つきの例:git new
new = "!f() { git switch --create \"$1\" \"${2:-main}\"; }; f"
${2:-main} は「2番目の引数がなければ main」という意味です。git new topic/x なら main から、git new topic/y feature/login なら feature/login からブランチを作ります(どちらの形も実行して、ブランチが作られることを確認しました)。
複数コマンドをつなぐ例:git fixup
fixup = "!f() { git commit --fixup \"$1\" && git rebase -i --autosquash \"$1~1\"; }; f"
ステージした変更を、指定したコミットへの修正としてまとめるエイリアスです。リベースの編集画面を自動で確定させる設定(GIT_SEQUENCE_EDITOR=true)で実行した結果です。
$ git aa
$ GIT_SEQUENCE_EDITOR=true git fixup HEAD
[main 5ab0a82] fixup! y
1 file changed, 1 insertion(+)
Successfully rebased and updated refs/heads/main.
通常はエディタが開き、内容を確かめてから確定します。共有済みのブランチでは履歴が書き換わるので、自分だけが使っているブランチで使うのが向いています。
git alias とシェルの alias の違い
「g と打ったら git」のような短縮は、Git ではなくシェル(bash や zsh)の alias で作ります。2つは別の仕組みです。
| 比べる点 | git alias | シェルの alias |
|---|---|---|
| 登録する場所 | ~/.gitconfig の [alias] |
~/.bashrc や ~/.zshrc |
| 呼び出し方 | git st(git の後ろに書く) |
gst(単独のコマンドとして打つ) |
| 短くできる部分 | サブコマンドとオプション | git という単語そのものも含めて全部 |
| 使える環境 | Git が動けばどこでも(bash・zsh・PowerShell・GUI ツールの端末など) | そのシェルだけ |
| 持ち運び | .gitconfig を1つコピーすればよい | シェルごとに書き方が違う |
| 補完 | 展開後のコマンドに合わせて効く(後述) | 別途、登録が必要 |
| リポジトリ単位の切り替え | できる(local の設定) | できない |
おすすめは両方を組み合わせる形です。シェル側では git を1文字にするだけにして、サブコマンドの短縮は git alias に任せます。
# ~/.bashrc に追記
alias g=git
これで g st、g sw main、g lg のように打てます。短縮の定義が .gitconfig の1か所にまとまるので、シェルを変えても同じ短縮形が使えます。
補完の効かせ方
git alias はそのまま補完が効く
Git 付属の bash 補完スクリプト(Git 2.43.0、/usr/share/bash-completion/completions/git)を読み込み、補完関数を直接呼び出して候補を確かめました。
$ git sw f<TAB>
-> feature/login
$ git s<TAB>
-> (19件の候補の中に switch sw swc swm などが並ぶ)
$ git new f<TAB> (関数型)
-> feature/login
git swはswitchに展開されると判断され、ブランチ名が補完されました- サブコマンドの補完候補に、登録したエイリアス名(sw・swc・swm)も出ています
- 関数型の
newでも、中に書いたgit switchを読み取ってブランチ名が補完されました
関数の中の最初のコマンドが Git 以外(cd や echo など)で、補完に使うコマンドを読み取りにくい場合は、先頭に : git switch ; と書いておく方法があります。: は何もしないシェルの組み込みコマンドで、補完スクリプトへの目印になります。
new2 = "!f() { : git switch ; git switch --create \"$1\" \"${2:-main}\"; }; f"
この形でも git new2 f<TAB> で feature/login が補完されることを確認しました。
シェルの alias(g=git)に補完を効かせる
シェルの alias は、登録しただけでは補完が付きません。
$ g sw f<TAB> (登録前)
(g には補完関数が登録されていません)
Git の補完スクリプトにある __git_complete 関数で、g を git と同じ補完に結び付けます。
# ~/.bashrc に追記(alias g=git の後ろ)
source /usr/share/bash-completion/completions/git
__git_complete g __git_main
$ complete -p g
complete -o bashdefault -o default -o nospace -F __git_wrap__git_main g
$ g sw f<TAB> (登録後)
-> feature/login
gsw='git switch' のようにサブコマンドまで含めたシェルの alias には、対応する補完関数を指定します。
alias gsw='git switch'
__git_complete gsw _git_switch
$ gsw f<TAB>
-> feature/login
| 対象 | 追加の設定 | 結果(bash、実測) |
|---|---|---|
git sw(git alias) |
なし | ブランチ名が補完される |
g(シェルの alias) |
__git_complete g __git_main |
git と同じ補完になる |
gsw(シェルの alias) |
__git_complete gsw _git_switch |
switch の補完になる |
補完スクリプトの場所は、OS や Git の入れ方によって変わります。zsh での設定は未実行です。
Windows での引用符の違い(Git Bash/PowerShell)
.gitconfig の中身は OS を問わず同じです。違いが出るのは、git config コマンドで登録するときの引用符です。.gitconfig を直接編集する方法なら、シェルごとの違いを気にせずに済みます。
今回は Linux 上の PowerShell 7.6.6(pwsh)で確かめました。Windows 上の PowerShell、Windows PowerShell 5.1、Git Bash では未実行です。
PowerShell では $1 を一重引用符で守る
git config --global alias.p2 "!f() { echo first=$1; }; f" # 二重引用符
git config --global alias.p3 '!f() { echo first=$1; }; f' # 一重引用符
git config --global alias.p4 "!f() { echo first=`$1; }; f" # バッククォートでエスケープ
登録された値:
p2(二重引用符) => !f() { echo first=; }; f
p3(一重引用符) => !f() { echo first=$1; }; f
p4(バッククォート)=> !f() { echo first=$1; }; f
二重引用符の中では、$1 が PowerShell の変数として展開され、空になりました。PowerShell でも一重引用符で囲むと、$1 がそのまま登録されます。
値の中に二重引用符があるとき
PowerShell には、外部コマンドへの引数の渡し方を決める $PSNativeCommandArgumentPassing という設定があります。Linux の pwsh 7.6.6 の既定は Standard でした。これを Legacy に切り替えた場合と比べます。
git config --global alias.p5 '!f() { git switch --create "$1"; }; f'
Standard => !f() { git switch --create "$1"; }; f
Legacy => !f() { git switch --create $1; }; f ← 二重引用符が消えた
Legacy で \" と書いた場合 => !f() { git switch --create "$1"; }; f
| 環境 | 一重引用符の中の " |
対応 |
|---|---|---|
PowerShell 7.6.6、Standard(実測) |
そのまま渡る | そのまま書ける |
Legacy に設定した場合(実測) |
取り除かれる | \" と書く |
| Windows PowerShell 5.1(未実行) | 従来の渡し方で、Legacy と同じ動きとして知られている | \" と書くか、.gitconfig を直接編集する |
| Git Bash(未実行) | bash なので、この記事の bash の例と同じ書き方 | ! は一重引用符で囲む |
引用符が重なるエイリアスは、git config --global --edit で .gitconfig を開いて貼り付けるのが確実です。
PowerShell 側の短縮(シェルの alias に当たるもの)
# $PROFILE に追記
Set-Alias g git
function gst { git status --short --branch @args }
Set-Alias は別名を付けるだけで、引数を含められません。引数を含めたいときは、上の gst のように関数にします。pwsh 7.6.6 で g p1(log --oneline -n 3 のエイリアス)と gst を実行し、それぞれログと ## main が表示されることを確認しました。
設定の確認・削除コマンド
確認する
$ git config --global --get alias.st
status --short --branch
$ git config --global --get-regexp '^alias\.s'
alias.st status --short --branch
alias.sw switch
alias.swc switch --create
alias.swm switch main
$ git help st
'st' is aliased to 'status --short --branch'
$ git lg -h
'lg' is aliased to 'log --oneline --graph --decorate -n 15'
usage: git log [<options>] [<revision-range>] [[--] <path>...]
git 別名 -h は、何の別名かを表示したうえで、展開後のコマンドの使い方も出してくれます。一覧表示をエイリアスにしたのが git aliases です。
$ git aliases
alias.st status --short --branch
alias.df diff
alias.dfs diff --staged
alias.last log -1 --stat
(以下略)
削除する
$ git config --global --unset alias.s2
$ git config --global --get alias.s2
$ echo $?
1
削除後は --get が何も表示せず、終了コード 1 を返します。登録されていない名前を削除しようとした場合は、終了コード 5 でした。
$ git config --global --unset alias.nothing
$ echo $?
5
存在しないエイリアスを実行したときのメッセージです。打ち間違いのときは、近い名前のコマンドを提案してくれます。
$ git nothing
git: 'nothing' is not a git command. See 'git --help'.
$ git stauts
git: 'stauts' is not a git command. See 'git --help'.
The most similar command is
status
新しい書式のサブコマンド
git-scm.com の git-config のページ(今回開いた時点で Git 2.56.0 向け)には、git config list/get/set/unset/rename-section/remove-section/edit というサブコマンド形式が載っています。
| やりたいこと | 従来の書式(Git 2.43.0 で実行) | サブコマンド形式(未実行) |
|---|---|---|
| 登録 | git config --global alias.st "status" |
git config set --global alias.st "status" |
| 確認 | git config --global --get alias.st |
git config get --global alias.st |
| 一覧 | git config --global --list |
git config list --global |
| 削除 | git config --global --unset alias.st |
git config unset --global alias.st |
| 編集 | git config --global --edit |
git config edit --global |
手元の Git 2.43.0 にはサブコマンド形式がないため、右の列は未実行です。この記事のコマンドは従来の書式でそろえています。
よくあるつまずきと直し方
| 症状 | 原因 | 直し方 |
|---|---|---|
event not found と表示される |
bash が二重引用符の中の ! を履歴展開した |
一重引用符で囲む |
| 引数が2回出てくる | シェルコマンド型では引数が末尾にも付く | !f() { ...; }; f の関数型にする |
| エイリアスが効かず、元のコマンドが動く | Git 本体のコマンドと同じ名前を付けた | 別の名前にする |
| サブディレクトリで相対パスが合わない | シェルコマンド型は最上位ディレクトリで動く | "${GIT_PREFIX}$1" を使う |
alias loop detected で止まる |
エイリアス同士が呼び合っている | どちらかを元のコマンドで書く |
PowerShell で $1 が空になる |
二重引用符の中で変数として展開された | 一重引用符で囲む |
g sw でブランチ名が補完されない |
シェルの alias に補完が登録されていない | __git_complete g __git_main |
.gitconfig を編集したら fatal: bad config line と表示される |
\ や " をそのまま書いた |
\\、\" と書く |
エイリアスを増やすときの目安
- 毎日何度も打つコマンドから登録する(st、sw、lg、cm など)。数を絞るほうが覚えやすくなります
- 履歴を書き換えるもの(amend、undo、pf、fixup)は、意味の分かる名前にしておくと、打つ前に内容を思い出せます
- 強制プッシュは
--forceではなく--force-with-leaseで登録しておくと、リモートが想定と違うときに止まります - チームで共有する手順書には、エイリアスではなく元のコマンドを書くと、設定の違う人にも伝わります
よくある質問
Q. git alias はどこに保存されますか?
A. --global を付けて登録した場合は、ホームディレクトリの .gitconfig の [alias] セクションです。--global を付けない場合は、そのリポジトリの .git/config に保存され、そのリポジトリだけで有効になります。git config --show-origin --get-all alias.st で、どのファイルから読まれているかを確認できます。
Q. git alias とシェルの alias は、どちらを使えばよいですか?
A. サブコマンドの短縮は git alias、git という単語自体の短縮(g など)はシェルの alias、と分けるのがおすすめです。git alias は .gitconfig を1つコピーすればどの環境でも同じように使え、補完も追加設定なしで効きます。
Q. checkout のエイリアス(co)は、もう使わないほうがよいですか?
A. そのまま使えます。git checkout は引き続き利用できるコマンドです。ブランチの切り替えは switch、ファイルの取り消しは restore と役割が分かれているので、新しく覚えるなら sw と discard/unstage のように分けておくと、何をするコマンドかが名前から分かりやすくなります。
Q. エイリアスに引数を渡すには、どう書きますか?
A. Git コマンド型なら、git lg -n 5 のように後ろへそのまま書けば末尾に付きます。引数を途中で使いたいときは、"!f() { git switch --create \"$1\"; }; f" のような関数型にして、$1・$2 で受け取ります。
まとめ
git config --global alias.短縮形 "展開後"で登録でき、~/.gitconfigの[alias]に保存される- ブランチ切り替えは switch(sw・swc・back)、取り消しは restore(unstage・discard) でそろえると覚えやすい
!で始めるとシェルコマンド型になり、リポジトリの最上位で実行される。元の場所はGIT_PREFIXで分かる- 引数を途中で使うときは
!f() { ...; }; fの関数型にする - git alias は補完がそのまま効く。シェルの
alias g=gitには__git_complete g __git_mainを足す - bash でも PowerShell でも、
!や$1を含む値は一重引用符で囲む。引用符が重なるものは .gitconfig を直接編集する - 確認は
git help 別名と--get-regexp '^alias\.'、削除は--unset
参考
- git-scm.com「git-config」(Git 2.56.0 向けのページでサブコマンド形式を確認)
- 検証環境:Git 2.43.0(Linux、bash)、PowerShell 7.6.6(Linux)
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。