LoginSignup
0

More than 3 years have passed since last update.

gitで複数のユーザーを使い分ける人用サブコマンド(git author)を作った

Last updated at Posted at 2019-12-03

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.nameuser.emailを取得
- コマンド1つでuser.nameuser.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 getuser.name <user.email>の形式で取得できます。
getは省略可能です。
--local,--globalの指定ができます。
git-author-get.gif

set

git author set hoge hoge@gmail.comの形式で、現在のリポジトリのユーザーをセットできます。
こちらも--local,--globalの指定ができます。
git-author-set.gif

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)に書き換えます。
git-author-replace.gif

注意事項

言うまでもないことですが、複数人で開発しているリポジトリでreplaceを使用するときは他の人の確認をとってください。

push済みコミットを書き換えた場合は書き換えた情報をpushする時にgit push --force--forceオプションを書いてやる必要があります。

おわりに

使っていただけると嬉しいです。
不具合・改善案報告なども待ってます。


明日は@nimitsuさんのGameLift RealTimeServerで遊んでみよう for Unity(AWS設定編)です

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
What you can do with signing up
0