我运行 agit filter-branch
来重命名我的 git 存储库中的一些作者,我得到:
$ 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答案,似乎git filter-branch
应该解决重复问题本身。决议是这样的吗?是否有 326 次重复提交?
先感谢您。
编辑:这是git filter-branch
我运行的脚本。这是一个简单的 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