以下のページにやり方が書いてあるのでそれをもとに説明する。
具体的なやり方
問題設定
問題設定として、以下のコミットグラフを想定する。このグラフではIzayoiさんとMeilingさんが投稿している。コミット6c31a91はIzayoiさんが初回のコミットを出して、それ以降のコミットはMeilingさんが作成している。そして、Izayoiさんはexample.comというドメインのメールアドレスを使用し、Meilingさんはexample.netというドメインのメールアドレスを使用している。
ここで、MeilingさんもIzayoiさんと同じexample.comというメールアドレスにしたいとする。
具体的なコマンド
メールアドレスを修正するコミットが一つだけであれば、以下のコマンドでできる。
$ git commit --amend --no-edit --author "Meiling <meiling@example.com>"
–authorで作者とメールアドレスを指定する。なお、git-configで設定したメールアドレスを設定するには–authorの代わりに–reset-authorを指定する。
メールアドレスを修正するコミットが複数ある場合、以下のコマンドを実行する。
$ git rebase 6c31a91 \
--exec 'git commit --amend --no-edit --author "Meiling <meiling@example.com>"'
コマンドの説明
このgit rebaseコマンドを実行すると、masterのブランチヘッドを6c31a91のところに戻し、それから2953d91、8f7f9f5のコミットを順に作成する。これだけだと何も変化はないが、–execオプションによりコミットを作成した後にgit commit –amendでメールアドレスを修正する。
わざわざ変更する理由
最後に、わざわざメールアドレスを変更する理由について説明する。Githubのプロジェクトでは、ときおりメールアドレスによる認証が行われる。例えば、プルリクエストを構成するコミットはすべて認証されたメールアドレスを作成者でなければいけない、などである。
さて、この制限を理解していないメンバーがメールアドレスの設定をミスしたまま、git-commitを実行してしまうと、誤ったメールアドレスがコミットに登録される。その結果、プルリクエストが通らなくなり、「どうしましょう?」と言われることになる。そんなときにこのテクニックは役に立つ。
往々にして、このテクニックを調査するよりも、当該メンバーにこの原因を理解させることの方が苦労するのはよくあることである。
コメント