5
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 5 years have passed since last update.

PONOSAdvent Calendar 2019

Day 3

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設定編)です

5
0
2

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
5
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?