Gibt es eine Möglichkeit zu sehen, was gedrückt wird, wenn ich einen git push
Befehl ausführen würde ?
Was ich mir vorstelle, ist so etwas wie die Registerkarte "Dateien geändert" in Githubs Funktion "Pull Request". Wenn ich eine Pull-Anfrage stelle, kann ich sehen, was eingezogen wird, wenn sie meine Pull-Anfrage akzeptieren:
Die Befehlszeile ist in Ordnung, aber ich würde eine Art GUI bevorzugen (wie der Screenshot oben).
Antworten:
Führen Sie Folgendes aus, um eine Liste der zu übertragenden Dateien anzuzeigen:
Beispiel:
Führen Sie Folgendes aus, um den Codedifferenz der zu übertragenden Dateien zu ermitteln:
Führen Sie Folgendes aus, um die vollständigen Dateipfade der zu ändernden Dateien anzuzeigen:
Wenn Sie diese Unterschiede in einer GUI sehen möchten, müssen Sie git dafür konfigurieren. Siehe Wie kann ich die Ausgabe von 'git diff' mit einem visuellen Diff-Programm anzeigen? .
quelle
HEAD
nicht den Index, sondern den Ursprung (git diff origin/master HEAD
) unterscheiden. Wenn Sie den Index unterscheiden, erhalten Sie genau dann dieselben Ergebnisse, wenn Sie keine Änderungen für das Festschreiben vorgenommen haben. Wenn Sie Änderungen vorgenommen haben, werden diese in den Diff aufgenommen, aber eindeutig nicht verschoben, da sie noch nicht festgeschrieben wurden.git diff --stat origin/master HEAD
ist die richtige Antwort.git diff --cached [remote/branch]
macht den Trick :)Es gibt immer Trockenlauf:
Es wird alles außer dem tatsächlichen Senden der Daten tun.
Wenn Sie eine grafischere Ansicht wünschen, haben Sie eine Reihe von Optionen.
Tig und das mit git gelieferte Gitk-Skript zeigen beide den aktuellen Zweig Ihrer lokalen Kopie und den Zweig der Fernbedienung oder des Ursprungs an.
Alle Commits, die Sie nach dem Ursprung vornehmen, sind die Commits, die übertragen werden.
Öffnen Sie gitk aus der Shell, während Sie in dem Zweig, den Sie pushen möchten, durch Eingabe eingeben. Um
gitk&
den Unterschied zwischen dem, was sich auf der Fernbedienung befindet, und dem, was Sie auf die Fernbedienung pushen möchten , zu sehen, wählen Sie Ihr lokales nicht gepushtes Commit aus und klicken Sie mit der rechten Maustaste auf die Fernbedienung und Wählen Sie "Diff this -> selected":quelle
git diff --stat HEAD origin/master
odergit diff HEAD origin/master
. Wichtig ist der KOPF , ansonsten nehmen Sie nichtgit push --dry-run
ist, dass weiterhin eine Schreibberechtigung auf der Fernbedienung erforderlich ist. Wenn Sie also einen Klon haben,--dry-run
der nicht berechtigt ist, Upstreams zu pushen, aber sehen möchten, wie Ihre lokalen nicht gepushten Änderungen aussehen, tun Sie dies nicht.branch
und sehen möchtenorigin/branch
, würde ich mich der Antwort von Ionuț G. Stan anschließen, da keine Verbindung zum Remote-Repo erforderlich ist. Dies kann gut oder schlecht sein, je nachdem, was Sie brauchen.Um einfach die Commits Warteliste geschoben zu werden: ( das ist diejenige , die Sie sich erinnern )
quelle
git cherry -v heroku/remote
Falls Sie Ihren Code in mehr als einer Fernbedienung aufbewahren.Du willst wahrscheinlich rennen
git difftool origin/master...
. Das sollte den einheitlichen Unterschied von dem anzeigen, was sich in Ihrem aktuellen Zweig befindet, der sich noch nicht im Ursprungs- / Hauptzweig befindet, und ihn im grafischen Diff-Tool Ihrer Wahl anzeigen. Um auf dem neuesten Stand zu sein, führen Siegit fetch
zuerst aus.quelle
git difftool -d origin/master
Ich habe mein Difftool so eingestellt, dass es verschmilzt, damit es großartig funktioniert, danke!git difftool -d
ist viel besser, danke Aquarius Power. Das einzige Problem ist, dass verschobene Dateien nicht erkannt und stattdessen als gelöscht und hinzugefügt angezeigt werden.Eine Möglichkeit, Ihre lokale Version zu vergleichen, bevor Sie sie auf das Remote-Repo übertragen (Art des Push-in-Trockenlaufs):
TortoiseGit verwenden:
Klicken Sie mit der rechten Maustaste auf das Stammordnerprojekt> TortoiseGit> Diff mit vorheriger Version>
für Version 2 wählen
refs/remotes/origin/master
quelle
Versuchen Sie es
git diff origin/master..master
(vorausgesetzt, diesorigin/master
ist Ihr Upstream). Im Gegensatzgit push --dry-run
dazu funktioniert dies auch dann, wenn Sie keine Schreibberechtigung für den Upstream haben.quelle
Verwenden
git gui
Sie dort, um eine Liste der Änderungen in Ihrem tatsächlichen Commit anzuzeigen. Sie können auchgitk
eine einfache Oberfläche für Reflogs verwenden. Vergleichen Sie einfach zwischenremotes/...
und ummaster
zu sehen, was gepusht wird. Es bietet eine Oberfläche ähnlich Ihrem Screenshot.Beide Programme sind in git enthalten.
quelle
gitk --all
Sie eine vollständige Liste aller Kommentare. Jetzt können Sie den aktuellen Status Ihres Dev-Zweigs mit Ihrer Fernbedienung vergleichen, um zu pushen.So sehen Sie, welche Dateien geändert werden, und zeigen die tatsächlichen Codeänderungen im Vergleich zu dem
master
Zweig an, den Sie verwenden können:HINWEIS : Wenn Sie zufällig eine der Intellij-IDEs verwenden, können Sie mit der rechten Maustaste auf Ihr Projekt der obersten Ebene klicken, Git > Mit Zweig vergleichen > auswählen und den gewünschten Ursprung auswählen, z
origin/master
. In der angezeigten Dateibaumstruktur können Sie auf die Dateien doppelklicken, um einen visuellen Unterschied anzuzeigen. Im Gegensatz zur obigen Befehlszeilenoption können Sie Ihre lokalen Versionen über das Diff-Fenster bearbeiten.quelle
Sie können die Commits auflisten, indem Sie:
Vergleichen Sie dann mit dem folgenden Befehl, bei dem die Anzahl von ^ der Anzahl der Commits entspricht (im Beispiel die 2 Commits):
quelle
Wenn Sie Mac OS X verwenden, würde ich Ihnen Tower empfehlen. Es ist ein wunderbares Programm, das mir den Umgang mit Git zum Vergnügen gemacht hat. Ich muss mich jetzt länger an Terminalbefehle erinnern und es bietet eine großartige Benutzeroberfläche zum Anzeigen, Verfolgen und Lösen von Unterschieden in Dateien.
Und nein, ich bin nicht mit ihnen verbunden, ich benutze nur ihre Software und mag sie wirklich.
http://www.git-tower.com/
quelle
Nur um meine zwei Cent hinzuzufügen ... Ich wollte dies implementieren, wenn Jobs in einer Gitlab-Pipeline auf einem Gitlab-Runner ausgeführt werden. Der beste Weg, dies zu tun, war die Verwendung dieses Skripts:
Auch in meinem Fall wollte ich Dateien nach Erweiterung filtern, um dies zu erreichen, habe ich verwendet:
Danach können Sie diese Liste zum Beispiel woanders weiterleiten, vielleicht einen Linter;)
Hoffe das wird jemandem helfen.
quelle
quelle
Danach erhalten
git commit -m "{your commit message}"
Sie vor dem Push einen Commit-Hash . Sie können also sehen, womit Sie pushen möchten,git
indem Sie den folgenden Befehl ausführen:z.B:
git diff origin/master c0e06d2
quelle