git-filter-repo改写提交历史后丢失远程仓库的解决办法
解决Git远程仓库配置丢失的问题
问题原因
git filter-repo 工具默认会移除仓库的远程配置,这是为了防止改写提交历史后,误将修改后的历史推送到原远程仓库(改写后的历史与原远程仓库历史完全不兼容,强制推送会覆盖远程数据)。
解决方案
在执行 git filter-repo 时添加 --preserve-remotes 参数,即可保留原有的远程仓库配置。
修改脚本中对应的命令行:
git filter-repo --replace-message replacements.txt --force --preserve-remotes
备选方案:手动备份并恢复远程配置
如果担心参数不生效,也可以在执行脚本前手动备份远程配置,完成后再恢复:
- 备份远程配置到文件:
git remote -v > remote_backup.txt
- 执行完脚本中的
git filter-repo命令后,恢复远程配置:
while read -r remote_name remote_url remote_type; do git remote add "$remote_name" "$remote_url" done < remote_backup.txt # 若远程已存在(比如filter-repo未完全删除),可改用以下命令更新地址 # while read -r remote_name remote_url remote_type; do # git remote set-url "$remote_name" "$remote_url" # done < remote_backup.txt rm remote_backup.txt
内容的提问来源于stack exchange,提问作者Norfeldt
相关产品推荐
相关产品推荐

