如果我在 git 中遇到这个问题,我就开始开发一个功能分支 (红线)是从其他地方复制的,而不是从主要开发分支克隆的(主要目的是保留主分支的历史,换句话说,重写历史)
有没有办法将更改重新设置为原始分支以保留原始分支的历史记录,或者还有其他选项可以实现此目的?我担心会遇到无法解决的连续错误。
您可以使用 git Replace --graft 将父级添加到没有父级的现有提交,并使用以下命令:
git replace --graft <HASH_OF_1ST_FEATURE_BRANCH_COMMIT> <HASH_OF_MAIN_BRANCH_COMMIT_YOU_WANT_TO_BRANCH_FROM>
Git 将创建一个移植文件,您将显示所需的历史记录(但目前没有重写历史记录)。
但是它将位于您的存储库本地,并且必须明确地推送
缺点是有些工具(如GitHub)不支持。
因此,最好的办法是使用以下命令使用内置
git filter-branch
(甚至推荐的 filter-repo )重写历史记录:
git filter-branch HEAD
然后你可以强制推送重写的历史记录。