gitで複数のユーザーを使い分ける人用サブコマンド(git author)を作った
この記事はPonos Advent Calendar 2019 3日目の記事です。
昨日は @e73ryo さんの「MonKey - Productivity Commands」のコマンド操作でUnity開発を効率化するでした。
初めてgitのサブコマンドを作ったので紹介します。
ちなみにRust製です。
リポジトリ
日本語ドキュメント
作った理由
gitを使っているときに複数ユーザーを使っていると git config user.name
とかgit config user.email
とか叩いて現在のユーザー情報を確認することがあると思います。
また、別のユーザーに切り替えるのを忘れてコミット何度か行い、後でログを見て気づくこともあるでしょう(ありました)。
そんな人のために
- コマンド1つで
user.name
とuser.email
を取得 - コマンド1つで
user.name
とuser.email
を設定 -
過去のコミットのauthorとcommitterを書き換える
ができるgit author
を作りました。
インストール方法
Rustをインストールしておりcargoが使える環境なら
cargo install git-author
でインストールできます。
cargoが使えない環境なら今すぐRustを始めましょう
https://www.rust-lang.org/tools/install
git authorでできること
get
git author get
で user.name <user.email>
の形式で取得できます。
get
は省略可能です。
--local
,--global
の指定ができます。
set
git author set hoge hoge@gmail.com
の形式で、現在のリポジトリのユーザーをセットできます。
こちらも--local
,--global
の指定ができます。
replace
過去のコミットのauthorを書き換えるコマンドです。
git author replace hoge hoge@gmail.com fuga fuga@gmail.com
でauthorまたはcommitterが
hoge <hoge@gmail.com>
のコミットのauthorとcommitterをすべてfuga <fuga@gmail.com>
に書き換えます。
後半のfuga <fuga@gmail.com>
は省略可能で、省略した場合はgit author get
で取得できるauthor(現在のauthor)に書き換えます。
注意事項
言うまでもないことですが、複数人で開発しているリポジトリでreplaceを使用するときは他の人の確認をとってください。
push済みコミットを書き換えた場合は書き換えた情報をpushする時にgit push --force
と--force
オプションを書いてやる必要があります。
おわりに
使っていただけると嬉しいです。
不具合・改善案報告なども待ってます。
明日は@nimitsuさんのGameLift RealTimeServerで遊んでみよう for Unity(AWS設定編)です