Finden Sie die merge-base zwischen einem remote-und einem commit

Gegeben, eine Fernbedienung und ein commitish, ich will es zu verschmelzen in einen Ziel-branch auf origin und generiert ein "diff" für Sie.

Wenn der Ziel-branch existiert, Ursprung, es ist ein einfacher Aufruf merge-base um zu überprüfen, ob die remote-commitish ist in Bezug auf Herkunft Baum und ein diff vom merge-base, um die remote-commit.

Wenn es nicht vorhanden ist, blind Erstellung der neuen Niederlassung riskant sein kann, wie ich will, um sicherzustellen, dass die Geschichte gebracht wird, ist in Bezug auf die Herkunft.

Gerade jetzt, ich bin mit rev-list zu bestimmen, wenn die commit hat eine gemeinsame Geschichte mit origin. Insbesondere bin ich mit git rev-list --max-parents=0 --remotes=origin und git rev-list --max-parents=0 committish um die root-commit(s) für die Herkunft und die remote-commit und überprüfen, dass Sie mindestens eine gemeinsame Wurzel (rev-list erzeugen kann, die die union oder die Differenz zwischen commits/Fernbedienungen aber nicht die Kreuzung scheint es).

Jetzt weiß ich, dass die remote-commit ist verwandt, aber ich muss noch generiert ein "diff". Gerade jetzt, ich nur wissen, was root commits im Ursprung erreichbar sind die neuen commit. Wie finde ich die besten merge-base in origin, wenn ich nicht weiß, in welcher Branche ist sehr eng mit dem verpflichten will ich bringen? Werde ich über das komplett falsch?

In anderen Worten, die Herkunft und commitish, wie identifiziere ich den merge-base-X gegeben keine Kenntnisse über die Hierarchie von origin? git merge-base origin committish ist nicht gültig, da die Herkunft nicht angeben, die ein einzelner Begehen.

o----o----o master        \
      \                    }-- everything reachable from origin
       o---X---o branch2  /
            \
o---o----o---o----o---o commitish    }-- new data from remote
InformationsquelleAutor Will | 2016-11-21
Schreibe einen Kommentar