0

我们有一点混乱,一个旧分支完成了后续工作,这些工作全部合并到一个 dev 分支,但在 dev 分支之间完成了其他工作,所以:

我们从 dev 开始,
然后分支到 5.6.9
,在 dev 上继续工作,但在 5.6.9 上,5.6.9 上的
所有工作都被合并到 dev
一个分支是从最新的 dev 中创建的(到这个阶段,大约有 1800 个提交5.6.9),然后合并到 5.6.9 - 这是我们想要恢复的

我们没有线性历史,我们可以恢复到给定的提交,因为在 5.6.9 上完成的工作在 dev 上的提交之间,并且现在无法找到任何方法来找到合并的提交哈希作为旧分支的日志包含所有开发(即 git log --merges 显示合并到开发的所有功能分支,而不是我们所做的合并到 5.6.9)

是否有记录 git 保存所有合并?有什么方法可以告诉它撤消合并(已被推送)?

4

2 回答 2

0

你可以做一个

git log --grep Merge

得到你的commitid。

接着:

git rebase --onto <commit-id>^ <commit-id> HEAD

那应该处理它。

于 2012-11-09T13:52:35.957 回答
0

对于合并提交,您可以按照 sjakubowski 的建议在 git 日志中对其进行 grep,即

git log --grep Merge

然后,一旦您找到合并提交,您可以通过

git revert -m 1 <merge_commit_id>

这应该有效。

于 2012-11-10T03:54:03.137 回答