Git还原合并提交,丢失了一些文件
因此,我错误地合并了Git还原合并提交,丢失了一些文件,git,merge,Git,Merge,因此,我错误地合并了发布版上的功能分支,并按下了按钮。 然后用合并提交的反向提交将其还原回来,一切都进行得很顺利 当尝试将发行版合并到主版时出现问题,注意到一些丢失的文件和奇怪的更改。当损坏的合并被实际推到我的主分支上时,问题变得更加可怕 回顾revert merge commit(W1),我看到所有缺失的文件都在反向提交中删除了文件 请记住,功能分支无论如何都会在主程序上进行合并,我考虑在反向提交主程序上使用rebase-I,就像合并是在没有反向提交的情况下进行的一样 你认为有更好的解决办法吗
发布版上的功能
分支
,并按下了按钮。
然后用合并提交的反向提交将其还原回来,一切都进行得很顺利
当尝试将发行版
合并到主版
时出现问题,注意到一些丢失的文件和奇怪的更改。当损坏的合并被实际推到我的主分支上时,问题变得更加可怕
回顾revert merge commit(W1)
,我看到所有缺失的文件都在反向提交中删除了文件
请记住,功能
分支无论如何都会在主程序
上进行合并,我考虑在反向提交主程序
上使用rebase-I,就像合并是在没有反向提交的情况下进行的一样
你认为有更好的解决办法吗
谢谢大家!:)
编辑
首先,感谢您的关注和回复!为了更好地解释情况,我在图片上添加了一些内容。
实际上,我们不再关心图片中的发布
分支,它只影响少数文件,并且可以出现在主版
上,没有任何重大问题。在创建发行版
和功能
之间,在主文件
中进行的文件添加和修改
在发布合并(M2)
删除(W1)
之后,我正在重新设置主分支的基础。我知道我们正在失去一些发布历史,但我认为“保存”实际发布的代码是更好的解决方案,如果有必要,我们可以从中开始回购。
大约有1000个承诺要重新设定基础,一些冲突正在蔓延。我正在用每个文件的最新正确版本更正每个明显的冲突
编辑2
最后,我们重新设置了主分支的基础,然后在分支顶部应用差异,如“假基础”,这样更改是可见和可更改的。更新:
根据你最新的问题,我明白为什么会发生文件删除。对我来说,这似乎是一个不寻常的环境组合。最有趣的一点是,恢复合并是一个比我乍一看更危险的操作。撤消合并(通过重置以在推送之前将其从历史记录中清除)是典型的过程,如果在推送之前发现问题,则可以避免此类问题。但这在现在并没有多大帮助
尽管有澄清,我仍然建议您不要修改历史记录,我的所有建议都包含在我的原始答案中。请记住,如果您以编辑来自发布
的提交的方式重新设置主控
,发布
仍将有原始提交,并且您将有一个奇怪的、分裂的历史,在某些合并操作上容易发生冲突(因为重复提交执行相同的操作)
如果您想将M1中的所有更改放回历史记录中,可以通过还原W1来减少麻烦。你仍然可能会遇到一些冲突,但这是一个简单得多的过程开始;不会造成上游重新定基问题;并使您在未来的道路上遇到更少的冲突合并
听起来您正在考虑编辑发布分支的历史记录。出于短期原因(需要“上游再基地”资源配置)和长期原因(发布分支将不再记录发布的内容),我建议不要这样做。当然,我可能误解了你的建议,所以让我们从一个共同的出发点开始:
您当前有类似于
O --- x --- x --- x --- M2 <--(master)
\ \ /
\ x --- M1 --- W1 <--(release)
\ /
A ----- B --- C --- D <--(feature)
屈服
A' --- B' --- C' --- D' <--(feature)
/
O --- x --- x --- x --- M2 <--(master)
\ \ /
\ x --- M1 --- W1 <--(release)
\ /
A ----- B --- C --- D
A'--B'--C'--D'谢谢您的回复,我已经研究了您所说的内容,并且在主要帖子中更好地解释了情况
A' --- B' --- C' --- D' <--(feature)
/
O --- x --- x --- x --- M2 <--(master)
\ \ /
\ x --- M1 --- W1 <--(release)
\ /
A ----- B --- C --- D