2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WindowsでGit関連のコマンドをAlias登録する

Last updated at Posted at 2021-10-04

インターネット上にWindowsでのエイリアス設定の断片的な解説はあるのですが、それらを見てもPowerShellでの汎用的で永続的なエイリアス設定は分かりづらいなと感じたため、本記事を作成しました。

WindowsでVSCodeでコードを書き、ターミナルで以下操作を実行するとします。

git branch
git checkout -b xxxx
git add .
git commit -m ""
git push origin xxxx
git checkout main
git branch -d xxxx

VSCodeのGUIでもGitの操作は可能ですが、コマンドラインからの方が楽なときがあります。でも毎回このようなコマンド入力をするのが面倒なので、エイリアスを設定したいと思いました。
Linuxではエイリアスは設定が簡単(alias gcb='git checkout -b')なのですが、Windowsだとちょっと面倒です。

WindowsでVSCodeのデフォルトのターミナルはPowerShellで、私もそのまま使っているので、PowerShellでエイリアスを設定します。
PowerShellではエイリアス設定コマンドがあり(Set-Alias)、一見これで済みそうに思えますが、Set-Aliasではコマンド単体へのエイリアスのみ設定可能で、コマンドのオプションや引数を含めたエイリアスは残念ながら作成できません。
PowerShellでLinuxライクなエイリアスを作成するためには、エイリアスで実行したいコマンドを一度Powershellでの関数(Function)として定義する、その関数に対してSet-Aliasを実行する、PowerShell起動時に読み込まれるスクリプトに定義する、という手順を踏むと実現できそうです。
Linuxに比べると若干面倒ですが、一旦設定手順が分かればガシガシエイリアスを追加できます。
以下手順です。

まずPowerShellを起動します。
スタートメニュー > powershell と入力し、Windows PowerShellをクリック
またはコマンドプロンプトからpowershellを実行など

次に、以下のコマンドで、PowerShell起動時に読み込まれるスクリプトのファイル名を確認します。
$profile

実行結果は以下のようになります。
C:\Users\USERNAME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

私の環境では、このファイルは存在していなく、格納ディレクトリもありませんでした。
なので、ディレクトリから作成します。
マイドキュメントを開き、WindowsPowerShellディレクトリを作成します。

次にそのディレクトリに移動し、新規作成 -> テキストドキュメントでMicrosoft.PowerShell_profile.ps1を作成します (拡張子も.txtから.ps1に変更します)

任意のエディタでMicrosoft.PowerShell_profile.ps1を開き、以下の内容を入力して保存します。
Set-Alias | findstr gを実行してもらうと分かるのですが、gから始まるコマンドにはデフォルトで複数のエイリアスが登録されています(gc: Get-Contentなど)。そのため、今回追加で設定するGitコマンドのエイリアスでは、gi+オプションといった形の省略形で登録しました(gtよりgiの方が打ちやすいためそうしました)。
最終行に、giから始まるエイリアスの疑似的な一覧(単にエイリアス名にgiを含むもの)を登録しています。

Microsoft.PowerShell_profile.ps1
function git-branch { git branch $args }
Set-Alias -Name gib -Value git-branch

function git-checkout-b { git checkout -b $args }
Set-Alias -Name gicb -Value git-checkout-b

function git-add { git add $args }
Set-Alias -Name gia -Value git-add

function git-commit-m { git commit -m $args }
Set-Alias -Name gicom -Value git-commit-m

function git-push-origin { git push origin $args }
Set-Alias -Name gipo -Value git-push-origin

function git-checkout-main { git checkout main $args }
Set-Alias -Name gicm -Value git-checkout-main

function git-branch-d { git branch -d $args }
Set-Alias -Name gibd -Value git-branch-d

function git-help { Get-Alias | Out-String -Stream | Select-String "git" }
Set-Alias -Name gih -Value git-help

新規にPowerShellや、VSCodeを起動します。以下コマンドでエイリアスの登録確認をします。

PS C:\Users\USERNAME> Get-Alias | findstr git
Alias           gia -> git-add
Alias           gib -> git-branch
Alias           gibd -> git-branch-d
Alias           gicb -> git-checkout-b
Alias           gicm -> git-checkout-main
Alias           gicom -> git-commit-m
Alias           gih -> git-help
Alias           gipo -> git-push-origin

ここまで確認できていれば、以降は、PowerShellやVSCodeのターミナルにおいて、冒頭のコマンドが、以下で可能になります。

git branch --> gib
git checkout -b xxxx --> gicb xxxx
git add . --> gia .
git commit -m "" --> gicom ""
git push origin xxxx --> gipo xxxx
git checkout main --> gicm
git branch -d xxxx --> gibd xxxx

こんな感じで、エイリアスをどんどん登録していけます。

その他

LinuxからWindowsにくると、grepがない違和感がすごいので、grepを作ろうと思ったのですが、findstrやOut-String -Stream | Select-Stringをgrepとしてエイリアス登録しても、うまくいっていません

参考記事

更新履歴

function内でエイリアス対象のコマンドに$argsを渡さないと、エイリアスに引数を与えられないことに気づいたため、エイリアス対象の各コマンドに$argsを追加しました

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?