坏部分合并后合并两个分支

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

我只是用我的git repo做了一件坏事,我不知道如何解决它。我基本上有两个分支,让我们说developfeature,我不断更新。有一次,我改变了develop分支上的几个文件。我还需要在feature分支中进行这些更改,因此我在两个分支之间进行合并而不是再次执行这些更改(仅丢弃所有其他文件的更改/冲突)。之后,我刚刚向feature分支做了一些提交。

这是我想要的,但有一个大问题。现在我需要完全合并两个分支(developfeature)但当我尝试这样做时没有任何反应。我实际上知道为什么没有发生(git认为两个分支已经合并,唯一的变化是在feature分支。它与我尝试合并我刚刚创建的分支一样)但我仍然需要完成与旧的变化。为了更好地理解这种情况示例:

develop  o--c--1-- --2-- --o- 
             \              \
feature       \ --o-- --b-- -\m--o-

b: commit before wrong partial merge
1: changes applied in the m commit (after wrong merge
2: changes NOT applied in the m commit (after wrong merge
m: result of partial merge

正如在m提交中所解释的那样,我只是改变了1而不是2的变化。如果我现在尝试将develop合并到feature,那么2的变化就会丢失。

我提出了几个解决方案,但我不确定是否有任何解决方案可以实际工作:

  1. 我可以结帐到b提交,所以我可以合并来自develop的所有更改。然后我可以提交更改并将它们与当前的feature分支合并
  2. 我可以从temp提交创建一个完整的新分支(假设c)。然后我可以将feature分支的所有内容复制到temp分支中而不实际合并,只是复制文件。然后我提交结果更改,然后将新的temp分支与develop合并。最后,我可以将生成的内容复制到feature分支,以便保持对齐。

我认为第二个选项实际上可以运作良好,但我不太确定。

为了完成,在第二个选项中,我试图保存feature分支以保持回购顺序。但我真的不需要保留feature分支,因为我会在功能实际完成后很快或稍后删除它。

有谁知道更好的方法来帮助我解决这个问题?

先感谢您

git merge
1个回答
1
投票

使用git cherry-pick

develop  o--c--1--2---3---4--o- 
             \                \
feature       \---o-----b------\m--o-

如果第一次提交已经在您的功能分支中,那么:

git checkout feature
git cherry-pick {second-commit-hash}
git cherry-pick {third-commit-hash}
git cherry-pick {fourth-commit-hash}

接下来,您可以compare branches确保您的feature分支与您的develop分支仅在您真正引入的变化中有所不同。

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