gpt4 book ai didi

git duplicate parent 导致一半的历史消失

转载 作者:太空狗 更新时间:2023-10-29 14:47:56 26 4
gpt4 key购买 nike

我运行了一个 git 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

最佳答案

您可能已经有两次具有相同父项的提交;没有指定过滤器的 git filter-branch 将检测到并修复它。在进行任何作者更改之前先尝试此操作。

您可能还与一对当前不同但在您的 filter-branch 脚本转换后将相同的父项进行提交。如果您的 filter-branch 命令是正确的,那么您没有丢失任何工作 - 您只是在您的历史记录中有一组并行的重写前和重写后提交,这些提交现在是统一的。

关于git duplicate parent 导致一半的历史消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15161809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com