我有一个提交图,看起来像下面的那个.标记*为的提交代表许多提交.
A*
|
B---------
| |
C* D* <- old feature branch
| |
E---------
|
F*
|
G <- master
Run Code Online (Sandbox Code Playgroud)
合并提交E未正确完成,并且C*中的某些更改(不是全部)已丢失.如何重做该合并以将更改重新引入当前主服务器?
一切都已被推动(开源项目),所以改变历史不是一种选择.
我尝试从提交C*创建一个补丁并将其应用到主服务器,但由于C*的一些更改已正确合并,并且因为项目自该提交后进化,大约80%的补丁失败.
理想情况下,我们会采用C*中的所有更改,将它们应用于掌握并解决所有冲突.但由于分支已经合并,git不会检测到任何更改,也不允许再次合并.
$ git checkout 5bc5295 # C
HEAD is now at 5bc5295... cleanup
$ git checkout -b "missing-commits"
Switched to a new branch 'missing-commits'
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$ git merge missing-commits
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)