Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>What is the shape of your history, and what are you trying to do? From your description, what I understood so far is:</p> <p>You have a faulty merge commit <code>M</code> in your <code>development</code> branch coming from a <code>topic</code> branch (heads commits: <code>A</code>, <code>B</code>):</p> <pre><code> ---o---o---o---M---x---x / ---A---B </code></pre> <p>and you revert it with <code>$ git revert -m 1 M</code> to get this:</p> <pre><code> ---o---o---o---M---x---x---W / ---A---B </code></pre> <p>Then, you make more changes to your <code>topic</code> branch and <code>development</code> branch:</p> <pre><code> ---o---o---o---M---x---x---W---x / ---A---B-------------------C---D </code></pre> <p>And merge it back into <code>development</code> as <code>M2</code> when you feel that it is mature:</p> <pre><code> ---o---o---o---M---x---x---W---x---M2 / \ ---A---B-------------------C---D </code></pre> <p>Now, you want to find out all the <code>M</code> commits that don't have a corresponding <code>W</code> commit, correct? The <em>only</em> way to do this (assuming full generality) is to actually take the patch text of <code>M</code> and verify that it is the inverse of the patch text of <code>W</code>. Since, <code>W</code> is just a regular commit, you have to walk every single commit and compare it with every merge commit that comes before it in the entire branch. How else would you handle this clusterfuck?</p> <pre><code>---o---o---o---M1---x---x---M2---x---x--W1---M3---x---W3---x / \ \ ---A---B-----------C---D------------E---F </code></pre> <p>Have I conclusively proved that your workflow is broken, and that you must change your ways? Now go read <code>gitworkflows(7)</code> and reflect on this disaster.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload