git:合并来自还原以前合并的分支的更改
对不起,这个标题让人困惑,但我想不出更好的了 这是我的问题。我有两个分支,git:合并来自还原以前合并的分支的更改,git,merge,Git,Merge,对不起,这个标题让人困惑,但我想不出更好的了 这是我的问题。我有两个分支,develope和feature。我遵循了这个过程: 在功能中写入代码 将功能合并到开发 发现错误,恢复合并 编写一些无关的代码并直接提交到develope 现在,我想将我对develop所做的更改合并回功能中。问题是,当我这样做时,它会把我以前在功能中所做的所有更改都吹走。我假设发生这种情况是因为第3步中的还原比功能中的任何代码更改都要新,所以它会将还原应用于更改 有可能做我想做的事吗?我唯一能想到的就是在develop
develope
和feature
。我遵循了这个过程:
功能中写入代码
功能
合并到开发
develope
develop
所做的更改合并回功能中。问题是,当我这样做时,它会把我以前在功能中所做的所有更改都吹走。我假设发生这种情况是因为第3步中的还原比功能中的任何代码更改都要新,所以它会将还原应用于更改
有可能做我想做的事吗?我唯一能想到的就是在develope
中还原还原,然后合并,然后还原还原的还原。这似乎有点麻烦。我认为您可以通过两个步骤来纠正这种情况:
1) 执行develope
的交互式重基,并删除还原提交,即
git rebase -i HEAD~6 # or however far back is the merge commit
删除包含revert commit的行并完成重基。此时,develope
现在拥有原始的合并提交,但没有恢复
2) 在develope
上重新建立基础,指定develope
和功能
都源自的提交哈希值。默认情况下,rebase将完全忽略合并提交,从而将其删除:
git checkout feature
git rebase <SHA-1>
git签出功能
吉特重基
其中
这里是从develope
分支出来的提交功能
在这两个步骤之后,您的开发
分支将既没有合并提交也没有恢复提交,您应该可以安全地将其合并到功能
我强烈建议阅读@torek在这个问题上给出的答案:
通常,您创建一个功能分支,然后在该分支上工作以完成您的功能。然后将功能合并到开发分支,一段时间后,开发状态变为活动状态
在您的情况下,如果您在“开发”分支上有更改,我更希望您的功能分支上有一个重基。然后,您将获得所有更改,并且您的特性分支将被重写到dev分支的最后一次提交
Atlassian提供了一个很好的教程,介绍了如何使用要素分支
我认为这不能解决问题。为什么我们要在功能上重新设置develop的基础,以将提交从前者带入后者?不,如果您将功能分支的基础重新设置为与develop相同的状态,那么您将有所有新的更改,并且在日志中,看起来您已从新位置创建了一个新分支。是的,但这不会带来恢复,从而抹掉了他在功能
分支中的其他工作?除非我们消除错误的合并,否则无法让开发
与功能
交互而不发生这种情况。好的一点可能是,这个问题当时更容易理解。但是我会做一些测试并尝试这种情况:)是的,这个问题令人困惑,您描述的工作流程可能首先避免了这个问题,这可能是OP想要的。请参阅