如何强制将已更改的主历史记录更改为基于旧历史记录的功能分支?

时间:2019-01-16 09:22:05

标签: git version-control git-branch git-cherry-pick git-rewrite-history

我的同事更改了我们master的历史,而我的feature-branch是基于master的旧历史。简单的重新设置并没有将我分支的历史更改为新的(更改的)历史。

樱桃选择是我唯一的选择,还是有更简单的方法来解决这个问题?创建一个新分支将破坏我们在Gitlab上有关合并请求的评论历史记录。同样不确定使用不同的历史记录进行Gitlabs自动合并会发生什么情况。

masterfeature-branch上,期望的结果与feature-branch上的历史类似,

1 个答案:

答案 0 :(得分:1)

更新您的本地master版本(由于历史记录不同,这将是强制更新(在提取输出中标有+号)

git checkout master
git pull

然后,您将可以在新近更新的master上进行选择或重新构建提交。在这里摘樱桃:

git checkout feature-branch
git log
# in git log output, spot the commit SHAs of the commits you need ans store them

git cherry-pick <commitSHA> <otherCommitSHA>

(可能会发生冲突。如果这样,请照常解决)

现在,您的feature-branch可以合并到master中了(可以说是通过PR),而不会出现历史记录问题。