你可以从另一个分支中存在的分支中删除Git提交,就像提交的“交集”一样吗?

时间:2017-03-18 17:36:44

标签: git branching-and-merging

我有时遇到的简单情况,我正在进行一些更改并创建一个分支。当我在我的变化中移动时,我开始发现需要清理的一些事情或者我想要开始进入的一些其他部分相关的事情。所以,我想保持特定的分支,所以我快速分离另一个分支,开始处理可能与前一个分支没有相同依赖关系的另一组更改。最后,我最终得到了两个分支,我试图隔离这些变化,然而,这个第二个分支起源于第一个分支,其中术语来自“主”。

我可以(并且已经)通过将'master'合并到每个分支中来单独更新每个分支,并且希望将第二个分支准备好合并到'master'中,因为它具有比创建的第一个分支更少的依赖性。但是,此分支还包含自第一个分支分离后所做的更改。

所以我想知道,有没有办法告诉Git: “删除此其他分支中存在的所有提交” 所以我离开了我的第二个分支,没有在第一个分支中完成所有更改,允许我将第二个分支合并为“master”,让我回到我创建的第一个分支上工作。

我可能在Git中找不到合适的术语,看看它是如何做到的。但是,也许它不能。看起来它应该是非常可行的,看看Git如何很好地向我展示分支1和2之间的适当差异,即使在我从'master'单独更新两个分支之后也是如此。

并且从分支中“删除”是没有必要的..即使这个想法正在创建另一个分支但是仍然以某种方式排除在第一个分支中也在第二个分支中完成的更改就足够了

1 个答案:

答案 0 :(得分:0)

如果您的历史记录如下:

...--E--F--G                <-- master
            \
             I--J--K--L     <-- feature1
                    \
                     P--Q   <-- feature2

在简单的情况下,删除feature1然后执行:

git checkout feature2
git rebase --onto master feature1

这是@torek答案的缩写,是现象式的,但是很难找到问题的实际答案。阅读@torek的答案以了解更多详细信息以及在非简单情况下的处理方法。