AuthorとCommitter

Gitでは、コミットの時にAuthorとCommitterという、誰がコミットしたのかという情報が記録されます。

Authorについては、git logコマンドで確認ができるので情報が記録されているということを確認するのは簡単ですが、Committerについては、git log --pretty=fullなどとして実行する必要があるので、普段は目にすることはあまりないと思います。

どうしてこのように分かれているのかというと、コミットをする人とコードを作成する人が、異なることがあるからです。

AuthorとCommitterで記録される情報は、名前とメールアドレスです。

今後コミットされる情報について変更する場合は、git config user.name --global "Name"のようにして変更できます。

しかし、情報が間違っているなどして、すでにコミットされた情報を変更したいということがあるということがあります。

ここでは、コミット済みの情報についての変更方法を紹介します。

変更方法

AuthorとCommitterの変更は、コミットをやり直すことでAuthorとCommitterの情報を上書きするため、少々面倒です。

上書きには、rebaseを行います。

最初に、AuthorとCommitterを変更したいコミットのハッシュをgit logコマンド等で見つけます。

その後に、次のようなコマンドでrebaseを開始します。

git rebase -i ハッシュ

rebaseでは、AuthorとCommitterを変更したいコミットについて、editと記述して、コミットをし直します。

git commit --amend --reset-author
git rebase --continue

一つだけであれば、これで完了ですが、複数変更したいものがある場合は、このコマンドを繰り返します。

これで、CommitterとAuthorが変更されました。リモート上で管理している場合は、強制プッシュをして、リモートへも反映させましょう。

注意点

今回の方法の注意点として、コミットを変更しているという点があります。

これはrebaseを使っているため、コミットが変更されるので、リモートで混乱が起きるということでもあります。

そのため、リモートで混乱を起こさないためにも、あまりこのようなことはするべきでなく、もししなければならない場合には、他の人への周知を徹底する必要があります。

Gitの前提として、履歴を記録するというものがあります。つまり、変更したという履歴を記録するのが正解で、過去の記録を改竄するというのは推奨されません。

しかし、Git上で記録したくないことを間違って記録したということもあるかもしれません。そのため、そのような時に仕方なく使うというのが良いのかと思います。もしくは、まだプッシュ前のコミットを変更するというのであれば、混乱をきたすことはないため、そのような時には気兼ねなく使うというのが良いでしょう。