git filter-branch
git リポジトリの一部の作成者の名前を変更するためにa を実行したところ、次のようになりました。
$ git log --oneline | wc -l
665
$ ./git-rename-author.rb "First Last" new-email@email.com old-email@email.com
Rewrite 453a72b4f690620c04fce80a0aa237b9dee7038f (653/665)error: duplicate parent f61ea265c9069723f58557c55d3efae450ab2bd0 ignored
Rewrite 566c89fd59cf7e5c2992ee11adbf876343dc4a85 (665/665)
$ git log --oneline | wc -l
339
全体として、665 件のコミットで開始し、339 件で終了します。
git - duplicate parent answer を見るとgit filter-branch
、重複自体を解決する必要があるようです。決議ってそういうことですか?326 個の重複コミットがありますか?
前もって感謝します。
編集:git filter-branch
これが私が実行するスクリプトです。複数の電子メール アドレスの名前を 1 人のユーザーに変更する簡単な Ruby スクリプトです。
#!/usr/bin/env ruby
ARGV[2].split(',').each do |old_email|
puts "Renaming #{old_email} to #{ARGV[0]} <#{ARGV[1]}>"
env_filter = <<-EOS
'
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"
if [ "$GIT_AUTHOR_EMAIL" = "#{old_email}" ]
then
an="#{ARGV[0]}"
am="#{ARGV[1]}"
fi
if [ "$GIT_COMMITTER_EMAIL" = "#{old_email}" ]
then
cn="#{ARGV[0]}"
cm="#{ARGV[1]}"
fi
export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'
EOS
system "git filter-branch -f --env-filter #{env_filter}"
end