Einige Git-Befehle verwenden Festschreibungsbereiche, und eine gültige Syntax besteht darin, zwei Festschreibungsnamen durch zwei Punkte zu trennen ..
, und eine andere Syntax verwendet drei Punkte ...
.
Was sind die Unterschiede zwischen den beiden?
Antworten:
Dies hängt davon ab, ob Sie einen
log
Befehl oder einendiff
Befehl verwenden. In demlog
Fall steht es in derman git-rev-parse
Dokumentation:Dies bedeutet im Grunde, dass Sie alle Commits erhalten, die sich in einem der beiden Zweige befinden, jedoch nicht in beiden.
In dem
diff
Fall steht es in derman git-diff
Dokumentation:Welches ist ein bisschen verschwommen. Grundsätzlich bedeutet dies, dass nur die Unterschiede in diesem Zweig im Vergleich zu einem anderen Zweig angezeigt werden: Es wird nach dem letzten gemeinsamen Commit mit dem ersten Committish gesucht, das Sie ihm gegeben haben, und dann nach dem zweiten Commitish. Auf diese Weise können Sie auf einfache Weise feststellen, welche Änderungen in diesem Zweig im Vergleich zu diesem Zweig vorgenommen wurden, ohne nur Änderungen in diesem Zweig zu berücksichtigen.
Das
..
ist etwas einfacher: In demgit-diff
Fall ist es dasselbe wie agit diff A B
und unterscheidet nur A von B. In demlog
Fall werden alle Commits angezeigt , die in B, aber nicht in A sind.quelle
..
und...
genau gegen log und diff getauscht wird:log A..B
Änderungen von Merge Base zu B, wasdiff A...B
git diff
.A...B
==A..B + B..A
?git log
dafür ist absolut jaVerwenden von Commit-Bereichen mit Git Log
Wenn Sie Festschreibungsbereiche wie
..
und...
mit verwendengit log
, besteht der Unterschied zwischen diesen darin, dass für die Zweige A und Bzeigt Ihnen alle Commits, die B hat, die A nicht hat , während
zeigt Ihnen sowohl die Commits, die A hat und die B nicht hat, als auch die Commits, die B hat, die A nicht hat, oder mit anderen Worten, es filtert alle Commits heraus, die sowohl A als auch B gemeinsam haben. Dadurch werden nur die Commits angezeigt, die nicht beide gemeinsam nutzen .
Visualisierung mit Venn-Diagrammen und Commit-Bäumen
Hier ist eine visuelle Darstellung von
git log A..B
. Die Commits in Zweig B, die in A nicht vorhanden sind, werden vom Commit-Bereich zurückgegeben und im Venn-Diagramm rot hervorgehoben und im Commit-Baum blau eingekreist:Dies sind die Diagramme für
git log A...B
. Beachten Sie, dass die Commits, die von beiden Zweigen gemeinsam genutzt werden, vom Befehl nicht zurückgegeben werden:Machen die Triple-Punkt - Commit - Strecke
...
Mehr NützlicheSie können den Triple-Dot-Commit-Bereich
...
in einem Protokollbefehl nützlicher machen, indem Sie die--left-right
Option verwenden, um anzuzeigen, welche Commits zu welchem Zweig gehören:In der obigen Ausgabe sehen Sie, dass den zugehörigen Commits ein
master
Präfix vorangestellt ist<
, während den zugehörigen Commits einorigin/master
Präfix vorangestellt ist>
.Verwenden von Commit-Bereichen mit Git Diff
Eines Tages könnte ich meine eigene Erklärung hinzufügen, wie die Festschreibungsbereiche funktionieren
git diff
, aber im Moment möchten Sie vielleicht herausfinden, was die Unterschiede zwischen Doppelpunkt ".." und Dreifachpunkt "..." in Git diff-Festschreibung sind Bereiche? .Siehe auch
quelle