假设我的历史记录如下:
(2A)----(2B)------------ [dev-02]
/ \
(A)---(B)---(m1)---(C)---(m2)---(m3)---(D)--- [master]
\ / /
(1A)---(1B)---------(1C)------------------- [dev-01]
后来,我意识到dev-01
分支是完全错误的,所以我想将每个合并从dev-01
恢复为master
,而不是从其他分支恢复。
我知道这个命令可以解决问题:
$ git revert -m1 <sha_m2> <sha_m1>
或者仅使用一次恢复提交就更好了:
$ git revert -nm1 <sha_m2> <sha_m1>
$ git commit -m "Revert all from branch 'dev-01'"
问题是,我不知道如何(以编程方式)查找从分支dev-01
到master
的合并。因为这个命令:
$ git log --merges master
也显示分支dev-02
的合并。我知道如果我让Git为我生成合并消息(例如Merge branch 'd1'
),那么我可以使用一些bash脚本轻松过滤分支,但是如果我没有这样做呢?
假设在第一个分支之后我从未将master
合并回dev-01
,我是否可以找到从分支dev-01
到master
的每个合并? (或者我可以通过其他方法恢复该分支的合并吗?)