git - git revert 后,合并显示没有更改并且已经更新
问题描述
我有一个dev
已经与分支合并的分支featureA
,并且featureB
. dev
我将该分支合并到master
并推送到远程。后来我发现featureB
还没有准备好合并,master
因为有一个错误的提交。所以我恢复了 dev
-->的合并master
。
git revert -m 1 <merge-commit-hash>
然后我试图合并featureA
到master
. 但我不能合并。它会说Already up to date
。
正如 Linus Torvalds 所说,我知道原因,
Linus 解释了这种情况:
恢复常规提交只是有效地撤消了该提交所做的事情,而且相当简单。但是还原合并提交也会撤消提交更改的数据,但它对合并对历史的影响绝对没有任何作用。
所以合并仍然存在,它仍然会被视为将两个分支连接在一起,并且未来的合并会将合并视为最后一个共享状态 - 恢复引入的合并的恢复根本不会影响它。
因此,“还原”撤消了数据更改,但从某种意义上说,它不是“撤消”,因为它不会撤消提交对存储库历史的影响。
因此,如果您将“还原”视为“撤消”,那么您将永远错过这部分还原。是的,它会撤消数据,但不,它不会撤消历史记录。
dev
在这种情况下,将其再次合并为的唯一解决方案master
是revert the revert commit
。但我只想合并分支中包含的一个dev
分支,即featureA
如何将分支 ( featureA
) 合并到主线分支 ( master
),包含在还原的合并分支 ( dev
) 中?
解决方案
一般来说,我会尽量避免回复,因为根据我的经验,它们会造成混乱,有时我最终会选择樱桃采摘。
我会在 dev 分支中恢复功能 b 的合并,然后将 dev 合并到 master 中,而不是将合并恢复到 master 中。
我不确定 git 现在是否允许你这样做。您可能必须还原主服务器中的还原。
推荐阅读
- x86 - 为什么这段代码会出现一行太长的错误?
- r - Rcpp - 如何计算 rowSums 正好为 1 的矩阵
- python - 如何将多个“for”循环的结果保存到数据框中?
- c++ - 如何获取 DSN 驱动程序信息?
- java - 优化将数字添加到队列中以从数字流中获取中位数
- python - 如何使用 FOR 循环在 Robot 框架中对列表进行排序
- tibero - 如何替换 java.sql.sqldata,因为它在 tibero 中不受支持
- elasticsearch - elasticdump导入索引设置不起作用
- javascript - Angular 6 集成了现有的 html 模板
- vue.js - 为多个 vue 属性重用 apollo graphql 查询定义