Wie vergleiche ich zwei Revisionen in Bitbucket?


126

Mein Team verwendet Bitbucket für unser Git-Repository und wir haben vor kurzem damit begonnen, die Pull-Request-Funktion für Codeüberprüfungen zu verwenden. Es funktioniert gut bei der ersten Überprüfung, aber wenn es mehrere Iterationen durchläuft (dh Änderungen werden vorgenommen und die Pull-Anforderung aktualisiert), würde ich gerne einen Link nur mit den neuen Änderungen sehen, die seit der letzten Codeüberprüfung vorgenommen wurden.

Ich habe mir die "Vergleichen" -Funktionalität angesehen, aber die Benutzeroberfläche scheint nur zwischen Zweigen zu vergleichen. Gibt es eine einfache Möglichkeit, einen Unterschied zwischen zwei Commits zu ermitteln?


Einführung in die Arbeit mit Pull-Anfragen oder Überprüfung einer neuen Funktion in Bitbuckt 4.8
Surfmuggle

Antworten:


99

Dies ist nur eine geringfügige Änderung der bereits gegebenen Antworten, aber das Suchen von #diff am Ende anstelle von #commits ist normalerweise das, wonach ich suche. Wie andere vielleicht bereits erwähnt haben, werden die besten Ergebnisse für mich normalerweise erzielt, indem das neuere Commit zuerst und das ältere eine Sekunde lang platziert werden. Dies hängt jedoch von Ihren speziellen Anforderungen ab.

https://bitbucket.org/<OWNER>/<REPO>/branches/compare/<commit-hash>..<commit-hash-older>#diff

2
Ich wünschte, sie würden eine intuitive Benutzeroberfläche hinzufügen, um die Commit-Revision zu verfolgen (ähnlich wie Gerrit)
Dolbi

1
Ich habe diese Antwort heute ohne Erfolg versucht. Kann jemand überprüfen, ob es mit der aktuellen Version von Bitbucket noch gültig ist?
Martin Stålberg

Ich habe es gerade mit zwei Commits aus dem Tortoisehg-Projekt versucht und es scheint immer noch zu funktionieren. Hier ist ein Beispiel Link: bitbucket.org/tortoisehg/thg/branches/compare/...
Nachteule

1
Hat super funktioniert. Fügte das ein owner/repo, kopierte die Hashes aus der Commit-Liste, drückte die Eingabetaste und bam. Schöne und einfache Diff-Ansicht. 👍 (Warum dies jedoch in ihrer GUI nicht offensichtlich ist ...)
Svish

1
@ NightOwl - Verwenden Sie einen Stash / Bitbucket-Server? Wenn ja, funktioniert dies nur auf bitbucket.org - jira.atlassian.com/browse/BSERV-2550
Cinderhaze

25

Versuchen Sie etwas wie:

https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<commit1>..<commit2>#commits

Entnommen aus: https://bitbucket.org/site/master/issue/4779/ability-to-diff-between-any-two-commits


1
Funktioniert nicht in Version 4.14. Gibt einen Dead Link-Fehler aus, wenn Sie nach dem compare/Einfügen der oben genannten Informationen etwas hinzufügen .
Juha Untinen

Gleiches gilt für die andere in bitbucket.org/site/master/issues/11657/… erwähnte Syntax, die nur eine generische 404 und den Pfad darunter angibt .
Juha Untinen

25

Bitbucket unterstützt jetzt das Vergleichen von Tags.

https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<tag1>%0D<tag2>

1
Dies gibt mir eine Seite, macht aber keinen Unterschied zwischen TAGS, was ich gesucht habe
Tristanbailey

4
Für die Nachwelt funktioniert es, tag1muss aber mit "v" beginnen und neuer sein, tag2ist älter. Zum Beispiel wird bitbucket.org/codsen/array-includes-with-glob/branches/compare/… - anders herum nicht funktionieren und ohne "v" wird es nicht funktionieren - beide Fälle führen zu 404.
revelt

Das hat funktioniert. https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<TAG1>%0D<TAG2>?w=1#diffDies zeigt den Unterschied und ignoriert Leerzeichenunterschiede.
Damodar Bashyal

25

Die Suchfelder in den Dropdown-Listen für Zweige / Tags auf der Seite Vergleichen auf bitbucket.org unterstützen jetzt eingefügte Commit-Hashes.

Jetzt können Sie einfach https://bitbucket.org/<owner>/<repo>/branches/compare/die Hashes in die Dropdowns einfügen, anstatt URL-Hacking durchzuführen!

Dropdown-Liste, dann Commit-Hash einfügen


Dies funktionierte für mich, aber ich musste die URL bearbeiten, um in #diff anstelle von #commits zu enden, wie in der vorherigen Antwort angegeben, andernfalls wurden keine Änderungen angezeigt.
MikeA

@ brian.keng kannst du das bitte als richtige Antwort markieren?
Ahmed Hasn.

10

Ich habe Bitbucket Server, Version: v4.4.1

Die Antwort bei mir war dies.

http://<path-to-my-server>/projects/<project-name>/repos/<repo-name>/commits/<old>?to=<new>

Ich habe nach dieser Antwort gesucht, weil wir in meinem Projekt Git-Submodule verwenden und in Pull-Anfragen nur das alte Commit sha im Vergleich zum neuen Commit sha jedes geänderten Submoduls angezeigt wird. Es gibt keinen Link zum Klicken oder irgendetwas (von dem ich weiß), um zu dieser Diff-Ansicht zu springen. Mit dieser URL kann ich anzeigen, was sich auch in Submodulen geändert hat.

Übrigens, wenn jemand eine bessere Möglichkeit kennt, zwei Commits in Submodulen während einer Pull-Anfrage zu vergleichen, lassen Sie es mich bitte wissen.


13
Für mich bedeutet dies auf Bitbucket Server v4.9.0 nur, das erste Commit anzuzeigen. Die Revisionen werden nicht verglichen.
Jeff

@ Jeff hast du versucht, <old> auf <new> umzuschalten? Ich hätte sie vielleicht
verwechselt.

1
Ja, das gleiche Problem. Ab November 2016 (diesen Monat) gibt Atlassian an, dass diese Funktion in Bitbucket Server noch nicht unterstützt wird: jira.atlassian.com/plugins/servlet/mobile#issue/BSERV-2550 . Sind Sie sicher, dass es das tut, was Sie denken, dass es auf Ihrem System ist?
Jeff

Ich fand, dass dies für ein Sudo für Tags funktioniert, indem ich den Commit-Hash für jedes Tag nahm
Tristanbailey

5

Das Bitbucket-Vergleichsansichtsformat lautet wie folgt:

https://bitbucket.org/<owner>/<repo>/branches/compare/<new>%0D<old>

Ein Beispiel gegeben ged/ruby-pg (RubyGem, eine Ruby-Bibliothek):

So vergleichen Sie zwei Versionen (von v0.18.1 bis v0.18.2)

https://bitbucket.org/ged/ruby-pg/branches/compare/v0.18.2%0Dv0.18.1

Um zwei Revisionen zu vergleichen (von f97dd6c bis 22a3612)

https://bitbucket.org/ged/ruby-pg/branches/compare/22a361201fd1d387d59a066b179124694a446f38%0Df97dd6cb4f34da6a62c4339887249115c7c25b9c


4

Gehen Sie zu Ihrem Bitbucket-Repository> Zweige Geben Sie hier die Bildbeschreibung ein

Klicken Sie auf das Menüsymbol und dann auf Vergleichen



0

Erstellen Sie ein Light-Tag für die Commits, die Sie vergleichen möchten. git -a [tagname] [commit_sha]

Dann vergleichen Sie in Bitbucket im Vergleichsmenü (das Pull-Anforderungen ausführt) einfach mit Tags.


0

Sie können dies auch innerhalb einer Pull-Anfrage tun, z. B. nachdem jemand einen Push an eine Zweigstelle gesendet hat, um die Überprüfungsergebnisse zu korrigieren. Meines Wissens gibt es noch keine Benutzeroberfläche dafür, aber Sie können die URL folgendermaßen eingeben:

https://<bitbucket-server>/projects/<PROJECT>/repos/<REPO>/pull-requests/<PR-NUM>/<commit-hash>?since=<commit-hash-older>


0

An der Eingabeaufforderung

git log -p -1

Dies zeigt den Vergleich mit der Vorgängerversion.

git log -p -5

Dies zeigt die letzten 5 Revisionen, in denen zwei aufeinanderfolgende Versionen (n & n-1, n-1 & n-2 usw.) verglichen werden.

Mir ist klar, dass dies nicht ideal ist, um einen direkten Unterschied zwischen zwei spezifischen Versionen zu zeigen.

Ref. https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History


-4

Führen Sie git über das Terminal git auf Ihrem Projektpfad aus:

git diff <new commit> <old commit>

Ex: git diff 26cf60f be5f978


2
So vergleichen Sie Dinge mit git in der Befehlszeile. Die Frage war, wie es in Bitbucket auf der Website geht :)
Mark VY

Bitbucket hat diese Funktionen nicht .. daher ist cmd Linie der einzige Weg ..
Siddharth

Dies war die Antwort, die ich am nützlichsten fand. Einverstanden ist die Frage, dass Bitbucket und diese Antwort eine Lösung bietet, die gut mit Bitbucket funktioniert, war gut wie andere Git-Lösungen.
PTSW
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.