对从其他地方复制而不是从主分支(Git)克隆的分支进行变基

问题描述 投票:0回答:1

如果我在 git 中遇到这个问题,我就开始开发一个功能分支 (红线)是从其他地方复制的,而不是从主要开发分支克隆的(主要目的是保留主分支的历史,换句话说,重写历史)

有没有办法将更改重新设置为原始分支以保留原始分支的历史记录,或者还有其他选项可以实现此目的?我担心会遇到无法解决的连续错误。

git github gitlab
1个回答
0
投票

您可以使用 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

然后你可以强制推送重写的历史记录。

© www.soinside.com 2019 - 2024. All rights reserved.