Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git已更新错误_Git_Version Control - Fatal编程技术网

Git已更新错误

Git已更新错误,git,version-control,Git,Version Control,我们有分支集成,其中提交了测试代码,然后测试所有新特性的分支(不稳定)。由于某些原因,在第x天,forTesting意外地合并到集成中,而没有人注意到。在此之后,集成和forTesting分支上已经发生了多个提交 假设我们有branchFeatureX,它在意外合并之前被合并到forTesting分支。现在,当我们想要将这个分支合并到集成时,我们会得到“已经是最新的”错误 如何解决这个问题而不丢失集成分支中的远期约定? < P>如果在历史上出错的地方不是太远的话,你可以考虑以下恢复过程: 1)

我们有分支集成,其中提交了测试代码,然后测试所有新特性的分支(不稳定)。由于某些原因,在第x天,forTesting意外地合并到集成中,而没有人注意到。在此之后,集成和forTesting分支上已经发生了多个提交

假设我们有branchFeatureX,它在意外合并之前被合并到forTesting分支。现在,当我们想要将这个分支合并到集成时,我们会得到“已经是最新的”错误


如何解决这个问题而不丢失集成分支中的远期约定?

< 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