git cherry-选择一系列提交以防止历史崩溃

时间:2014-10-27 00:37:23

标签: git git-rebase git-cherry-pick tree-conflict

问题的简短描述

新开发人员小组加入我们的项目后,他们初始化了一个新的仓库,并将主人的快照复制(未合并!)快照到新创建的仓库中。所以在他们的分支旧文件中丢失了master中存在的提交历史。之后他们开始了典型的git工作流程,包括comitting,分支,合并来自master等的更新。现在的问题是将他们的代码合并到masterdev,不包括前两个提交并保留我们的历史(并保留他们的历史也会很好。)

详细的问题描述

所以我们有分支:masterdevfunny_developers

这是我们的分支结构:

I---A---B---C---D---Y...X      <--(master/dev)
            \!\      \
       I'---IABC--G--DY..Z     <--(funny_developers flow)

I...C...X - 是我们的主要开发流程(masterdev分支现已同步),具有提交历史记录。此流没有从funny_developers分支

导入

I' - 是一个提交,其中funny_developers重新启动了一个空的回购(似乎是git-init?)。

IABC - 非常脏的提交,其中funny_developers将提交masterC中存在的所有文件复制为新文件。不从C合并,只需重新创建项目的文件结构!因此,他们删除了master分支演变期间所做的所有变更历史。

G..Z - 是一大堆提交,他们做了很多更改。在此流程中,他们还多次合并了master的更新,创建了自己的分支,将它们合并到funny_developers(有时会解决冲突)等。

所以现在我遇到了将G..Z合并到master并保留我们的初始提交历史及其过去(不包括I'IABC提交)的问题。

问题

你能否告诉我最好的方法(如果存在)将他们的提交抓到master并保留提交历史,不包括前两个?

我一次拯救女王和王国的实验

我试过了git cherry-pick G..Z。但是他们在并行分支中进行编码,并且在funny_developers中进行了大量的合并。他们解决了很多自己的分支冲突。如果我决定使用这种方法,我似乎需要花很多时间来解决它们。

我尝试了git rebase --onto master IABC Z,期望它能够将G..Z内的分支存储桶移到master上。但是我很久以前就已经陷入了一系列与提交有关的冲突(甚至在'funny_developers'开始之前)。我无法理解它们与实际的变化有什么关系(可能是因为它们重新启动了回购......)。

无论如何,如果我找不到保留“两个历史”的解决方案,我倾向于为他们的所有工作做出差异,并将其作为master的单个补丁提交。

0 个答案:

没有答案