【发布时间】:2011-04-26 19:28:40
【问题描述】:
我不知何故在一个分支中有一些重复的提交,每个都有相同的更改。它是一个公共分支,由多个用户从多个分支合并而来。我需要定期将此分支 rebase 到另一个 repo 的 master 分支上,而这些重复使它变得笨拙。
有没有办法删除这些并将它们推送到公共 repo 而不会使在分支中工作的其他用户变得复杂?
【问题讨论】:
-
假设您认为从历史重写中恢复(即将所有内容从原始公共分支重新定位到新分支)很复杂,不,没有办法做到这一点。删除提交就是改写历史。
-
你确定你有重复的提交在同一个分支上?在我看来,发生这种情况的唯一真正方法是首先重新定位,然后合并以前重新定位的分支。但是,合并不会快进,并且合并的提交在技术上将是“来自合并”而不是“来自分支”(即,当仅关注第一个父母时,日志不会显示提交)。这有意义吗?
-
我认为 sehe 是对的 - 你必须确保它们在同一个分支上。 “rebase -i”应该立即澄清这一点,因为如果问题真的如所描述的那样存在,OP 将能够立即看到
-
是的,它们现在在同一个分支上,我可以在 git log 中看到它们。 gitx 显示它们最初来自不同的分支。我不知道这是怎么发生的,但毫无疑问我在做这件事的过程中搞砸了一些事情——我正在慢慢习惯 git。过去,我将分支重新定位到另一个仓库的主分支上,然后将其推送到公共仓库。有三个相同的提交,每个都有相同的更改。我通过为每个父提交创建一个补丁来检查它们,它们显示了相同的更改。当我尝试交互式变基时,它们都会出现。