Wie kann ich einen Zusammenführungsverlauf anzeigen?

Lesezeit: 4 Minuten

Benutzer-Avatar
nkint

Ich benutze Git, aber ich bin kein Experte damit.

Ich habe ein Legacy-Projekt geerbt und es folgt dem Git-Flow (und ich mag es): Jedes neue Feature in a feature/name Zweig. Aber wenn neue Funktionen integriert wurden develop Hauptzweig, aus dem sie nicht gelöscht wurden origin. So, dass ich jetzt im Ursprung viele Zweige sehe und nicht weiß, welche alt sind oder welche in Arbeit sind.

Gibt es eine Möglichkeit, einen Verlauf der Zusammenführungen zwischen Feature-Branches und der Entwicklung zu haben?

EDIT: Ich bin auf einem Linux-Rechner

  • Sie verwenden Windows oder Linux

    – Dharani Dharan

    19. November 2015 um 11:24 Uhr

Verwenden Sie den folgenden Befehl, um einen Verlauf der im aktuellen Zweig vorgenommenen Merge-Commits abzurufen:

git log --merges

  • würde dies nicht Fast-Forward-Merges überspringen/ignorieren?

    – stdout

    14. Juli um 10:36 Uhr

  • Richtig: Fast-Forward-Merges sind keine echten Merges – sie sind nur ein Stapel von Commits

    – mkrufky

    14. Juli um 20:38 Uhr

Kann ich einen anderen Vorschlag machen, dass Sie nach den Zweigen mit Kopfrevisionen suchen, die in der Geschichte Ihres Entwicklungszweigs enthalten sind? Es schützt Sie vor dem Verlust von Änderungen, die an einen Zweig übertragen wurden, der zuvor zusammengeführt wurde.

Etwas in diese Richtung:

git log --oneline develop > /path/develop.log

# Just in case anyone's broken process and committed a bugfix directly to a release branch
git branch -a | grep 'remotes\/origin\/release\/' | while read branch; 
do 
    git log --oneline $branch > /path/"$branch".log; 
done

git branch -r | while read branch;
do
    git log -1 --oneline $branch | awk '{print $1}' | while read commitID;
    do 
        if grep -rq $commitID "/path/" ;
        then 
            echo "git push --delete origin \"$branch\"    Deletable   $commitID";
            break;
        #else 
            # the head revision hasn't been committed to any 'master' branch
            # echo "$branch $commitID"; 
        fi; 
    done; 
done

installieren Sie diese

sudo apt-get install git-gui

und führen Sie den auszuführenden GUI-Befehl aus

git gui 

  • Ich kann dieser Antwort in einigen Punkten nicht zustimmen. Erstens ist es nicht unbedingt Distributions-agnostisch. Außerdem wird davon ausgegangen, dass der Benutzer unbedingt einen Fenstermanager verwendet, was nicht angegeben wurde. Und ein letztes Problem für mich ist, dass es nicht so sehr eine Antwort ist, als dass es ein schneller Vorschlag ist könnte für das OP nützlich sein, aber nicht unbedingt für andere Distributionsbenutzer, die auf die Antwort stoßen könnten. Die akzeptierte Antwort hingegen ist eine, die nicht nur für das OP funktioniert, sondern für jeden anderen, der git installiert hat und zu dieser Frage kommt.

    – Körperlose Logik

    24. Oktober 2017 um 19:48 Uhr

  • @PaulBeverage Das ist ziemlich überkritisch. Ich denke, diese Antwort ist eine Option für die überwiegende Mehrheit der Menschen, die sie sehen werden. Auch wenn sie es nicht können apt-get it, git-gui ist wahrscheinlich verfügbar. Ich meine, das ist nicht irgendein zufälliges, halbherziges Werkzeug. Es wird auf git-scm.com verwiesen. Wahrscheinlich nicht die “beste” Antwort, aber dennoch relevant und hilfreich.

    – Jeff

    3. März 2018 um 19:39 Uhr

  • @ Jeff – Eine oder mehrere Annahmen zu treffen, führt nicht zu einer guten Antwort, was Dharani hier getan hat. Ebenso macht der Hinweis, dass eine Antwort im Kern Annahmen verwendet hat, meinen Kommentar nicht „überkritisch“. Dies ist eine Website, die auf Fakten und Anwendbarkeit basiert – ich persönlich finde diese Antwort nicht angemessen für den gegebenen Kontext der Frage aus dem OP. Die akzeptierte Antwort hingegen ist in jeder Situation, einschließlich der des OP, perfekt anwendbar.

    – Körperlose Logik

    6. März 2018 um 16:26 Uhr

  • @PaulBeverage Ich sage, es ist “hyper” -kritisch, weil die Antwort eine Ablehnung enthält, die in diesem Fall nicht gerechtfertigt erscheint (wenn die Ablehnung nicht von Ihnen stammt, ist dies eine schlechte Annahme meinerseits). OP gibt an, dass er neu bei git ist, was möglicherweise impliziert, dass sie eher von einer GUI-Darstellung als von der Befehlszeilenausgabe der akzeptierten Antwort profitieren würden. Und OP ist auf Linux. Es scheint unwahrscheinlich, dass sie diese Frage stellen würden und Verwenden einer Distribution ohne Fenstermanager.

    – Jeff

    6. März 2019 um 22:02 Uhr

  • @PaulBeverage Wäre diese Antwort angemessen, wenn OP gesagt hätte: “Ich bin auf Ubuntu und habe einen Fenstermanager, der Git-GUI unterstützen kann …” Wenn Sie “nur darauf hinweisen würden, dass eine Antwort eine Annahme hat”, könnten Sie sagen Sie so etwas wie “dies setzt eine Debian-basierte Distribution mit einem Fenstermanager voraus” – nicht “Ich kann nicht zustimmen” und “Antwort… [not] angemessen”.

    – Jeff

    6. März 2019 um 22:06 Uhr

1109240cookie-checkWie kann ich einen Zusammenführungsverlauf anzeigen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy