Git 在已还原时不显示任何提交?
我已在Git 在已还原时不显示任何提交?,git,github,Git,Github,我已在develope分支上合并了一个PR,但在登台时出现问题,因此我已使用以下命令还原: git还原-m1 然后在development分支上git推送 当我在Github上创建PR以将功能分支合并到develope,它不会在PR上显示任何提交/代码,即使我已恢复了在develope分支上的合并提交 c1 -- c2 -- merge commit -- revert commit \ / c3 -- c4 c3, c4 - commits that cont
develope
分支上合并了一个PR,但在登台时出现问题,因此我已使用以下命令还原:
git还原-m1
然后在development
分支上git推送
当我在Github上创建PR以将功能分支合并到develope
,它不会在PR上显示任何提交/代码,即使我已恢复了在develope分支上的合并提交
c1 -- c2 -- merge commit -- revert commit
\ /
c3 -- c4
c3, c4 - commits that contain the feature branch changes
什么问题以及如何解决这个问题?这里需要理解两个概念
合并时,git比较两个分支的历史记录中的提交哈希,以确定要合并的提交
git revert
通过创建新的提交来反转以前的提交。参考上一次提交不会从历史记录中删除
下面是您的开发分支的当前状态
c1 -- c2 -- merge commit -- revert commit
\ /
c3 -- c4
c3, c4 - commits that contain the feature branch changes
如果您现在尝试合并特性分支,因为c4提交已经在开发历史中,git不会采取任何行动
这可以通过以下方式解决。本文详细讨论了该场景
创建修补程序并重新应用更改
在您的功能分支中,运行git log
,以确定从哪个提交开始需要合并更改以开发分支。(在我们的示例中,它是c3)
创建一个补丁。跑
git格式补丁
现在,将“开发”分支合并到要素分支<代码>git合并源/开发
。这也将恢复功能分支中的更改
重新应用补丁,git apply--index
请记住,要进行最初不正确的其他更改。提交并推送
还原还原提交
正如@Lasse所提到的,您可以恢复恢复提交。最好在功能分支中进行这些更改,然后提出PR以开发分支
c1 -- c2 -- merge commit -- revert commit
\ /
c3 -- c4
c3, c4 - commits that contain the feature branch changes
合并开发功能分支
git还原
进行必要的更正,提交并推送更改
重新设置要素分支的基础
这是最不可取的选项,因为它会重写要素分支历史。您可以运行git-rebase-i
,只需更改要合并的第一次提交的消息。这将创建新的当前和后续提交哈希,并允许您将其合并以进行开发。但有两个担忧
所有更改的PR上都会有合并冲突。最好将“开发到功能”分支合并到本地,解决冲突并推送
您需要强制推送,因为您将重写远程功能分支的历史记录
功能分支与合并和恢复提交有什么关系?我这样问是因为你并不完全清楚为什么你希望公关包含任何变化。你说你恢复了合并,然后把它推到了开发阶段,你在功能分支上做了什么,你能概述一下那里发生了什么,使你期望PR显示更改吗?在开发分支上恢复合并提交后,我没有在功能分支上做任何更改。现在我想把它放回去发展,但我期待着看到公关上的承诺?它在PR上显示空白代码。如果您的功能分支没有提交,则没有要合并的内容。如果您想将合并中的更改恢复到开发中,最简单的方法可能是恢复。