Gitのコミットを後から変えるのは出来るだけ避けるべきですが、 新しい環境で.gitconfigなどでユーザー名とかをきちんと設定してなかったり メールアドレスが変わったりしてどうしても変更した方が良い時もあります。
そんな時にAuthorやCommitterの情報を変更したい時の話。
Gitで過去のコミットのAuthorやCommitterを修正するスクリプト
以下を参照。
下のスクリプトでは 過去のcommitの中に AuthorかCommitterに訂正したい名前やメールアドレスがあった時に 名前とアドレスを適当なものに変更しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
最初にcommitの中に該当の文字列があるかどうかチェックしています。
%anはAuthorの名前、%aeがメールアドレス、
%cnがCommitterの名前、%ceがメールアドレス。
git filter-branchで上の様な変更を2回以上しようとすると
Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f
みたいなエラーがでるので-fが必要です。
リモートにpushする時は
$ git push -f
で。
他の場所で既にcloneしてある時、そのままpullすると
fatal: refusing to merge unrelated histories
というエラーが出ます。
$ git pull --allow-unrelated-histories
とするとこのエラーを無視してmergeすることが出来ますが、 その際履歴が再び残ってしまう様な形になってしまうので 上の様な変更を行う際は他での変更は全てリモートに送った上で 一箇所で変更して、すべての場所でリモートにあるものをcloneしなおして使うようにするしかないかな、と。
Sponsored Links
![Amazon | git commit murder (English Edition) [Kindle edition] by Michael Warren Lucas | Mystery | Kindleストア](https://images-na.ssl-images-amazon.com/images/I/41gq4qY2BPL._SS200_.jpg)