Git已更新错误
我们有分支集成,其中提交了测试代码,然后测试所有新特性的分支(不稳定)。由于某些原因,在第x天,forTesting意外地合并到集成中,而没有人注意到。在此之后,集成和forTesting分支上已经发生了多个提交 假设我们有branchFeatureX,它在意外合并之前被合并到forTesting分支。现在,当我们想要将这个分支合并到集成时,我们会得到“已经是最新的”错误Git已更新错误,git,version-control,Git,Version Control,我们有分支集成,其中提交了测试代码,然后测试所有新特性的分支(不稳定)。由于某些原因,在第x天,forTesting意外地合并到集成中,而没有人注意到。在此之后,集成和forTesting分支上已经发生了多个提交 假设我们有branchFeatureX,它在意外合并之前被合并到forTesting分支。现在,当我们想要将这个分支合并到集成时,我们会得到“已经是最新的”错误 如何解决这个问题而不丢失集成分支中的远期约定? < P>如果在历史上出错的地方不是太远的话,你可以考虑以下恢复过程: 1)
如何解决这个问题而不丢失集成分支中的远期约定? < P>如果在历史上出错的地方不是太远的话,你可以考虑以下恢复过程: 1) 从主节点创建一个修复分支,并对其进行操作以确保额外的安全性 2)
git log
查找合并前最后一次正确的提交,所有提交都出错了。复制或记录提交哈希以供进一步使用
3) git重置——硬
4)然后,对于每一个从那时起发展起来的特征和你想要回来的,让我们考虑两种可能性: (此时,您可以查看日志或树的图形表示,但我建议使用后者)
a) 分支是在出现问题之前从master创建的: -->只需在FixBranch中合并此功能,应该非常简单 b) 分支是从已损坏的master版本创建的 -->git再次登录以记录此分支上的每个提交,并在修复分支中使用git cherry pick
4) 测试修复分支上的所有内容,以确认一切正常
5) 然后回到主分支上,像对fix branch(相同的最后一次良好提交)一样重新设置它,并将fix branch合并到中,因为您将
featureX
分支合并到fortesting
分支,然后将fortesting
分支合并到集成
分支,这意味着来自featureX
分支的更改已经引入了集成
分支。因此,当您将featureX
分支合并到fortesting
分支中时,git将显示已更新的
现在的提交历史应该如下图所示:
...---A---B---C---K---...---L integration
/
...---C---D---G---H---I---J---...---M---...---N fortesting
\ /
E-------F featureX
如果您想根据最新版本的integration
branch将featureX
的更改引入integration
branch,您可以使用以下命令:
# On integration branch
git cherry-pick <latest commit from featureX branch>
这个解决方案对我有效。虽然这有点乏味,但我还是能够在feature分支上选择所有提交。不过需要注意的是,合并提交也应该被仔细挑选。在我的例子中,我检查了源代码管理网站上的提交日志,合并没有显示在那里。
...---A---B---C---K---...---L---O integration
/
...---C---D---G---H---I---J---...---M---...---N fortesting
\ /
E-------F featureX