Ist es überhaupt möglich?
Grundsätzlich gibt es ein Remote-Repository, aus dem ich mit nur:
git pull
Jetzt möchte ich eine Vorschau anzeigen, was sich durch diesen Zug ändern würde (ein Unterschied), ohne etwas auf meiner Seite zu berühren. Der Grund dafür ist, dass das, was ich ziehe, möglicherweise nicht "gut" ist und ich möchte, dass jemand anderes es repariert, bevor mein Repository "schmutzig" wird.
git
version-control
Milan Babuškov
quelle
quelle
Antworten:
Führen Sie nach a
git fetch
eine ausgit log HEAD..origin/master
, um die Protokolleinträge zwischen Ihrem letzten gemeinsamen Commit und dem Hauptzweig des Ursprungs anzuzeigen. Um die Unterschiede anzuzeigen, verwenden Sie entwedergit log -p HEAD..origin/master
, um jeden Patch anzuzeigen, odergit diff HEAD...origin/master
(drei Punkte, nicht zwei), um einen einzelnen Unterschied anzuzeigen .Normalerweise muss ein Abruf nicht rückgängig gemacht werden, da beim Abrufen nur die Remote- Zweige und keiner Ihrer Zweige aktualisiert werden . Wenn Sie nicht bereit sind, alle Remote-Commits zu ziehen und zusammenzuführen, können Sie
git cherry-pick
nur die gewünschten Remote-Commits akzeptieren. Später, wenn Sie bereit sind, alles zu bekommen, wird eingit pull
Testament in den restlichen Commits zusammengeführt.Update: Ich bin mir nicht ganz sicher, warum Sie die Verwendung von Git Fetch vermeiden möchten. Alles, was Git Fetch tut, ist die Aktualisierung Ihrer lokalen Kopie der Remote-Zweige. Diese lokale Kopie hat nichts mit Ihren Zweigen zu tun, und sie hat nichts mit nicht festgeschriebenen lokalen Änderungen zu tun. Ich habe von Leuten gehört, die Git-Fetch in einem Cron-Job ausführen, weil es so sicher ist. (Normalerweise würde ich das aber nicht empfehlen.)
quelle
git diff ...@{u}
ist das gleiche, alsgit diff HEAD...origin/master
ob Ursprung / Meister der vorgelagerte Zweig istIch denke, Git Fetch ist das, wonach du suchst.
Die Änderungen und Objekte werden abgerufen, ohne dass sie in den Index Ihres lokalen Repos übernommen werden.
Sie können später mit Git Merge zusammengeführt werden .
Manpage
Bearbeiten: Weitere Erläuterungen
Direkt aus dem Git- SVN Crash Course Link
Wenn Sie die Manpage lesen, erhalten Sie ehrlich gesagt das beste Verständnis für Optionen und deren Verwendung.
Ich versuche dies nur anhand von Beispielen und Speicher zu tun. Derzeit habe ich keine Box zum Testen. Sie sollten sich Folgendes ansehen:
Ein Abruf kann mit git reset --hard ( Link ) rückgängig gemacht werden. Alle nicht festgeschriebenen Änderungen in Ihrem Baum sowie die von Ihnen abgerufenen Änderungen gehen jedoch verloren.
quelle
git reset --soft
oder--mixed
? Überprüfen Sie die Manpage.Sie können von einem Remote-Repo abrufen, die Unterschiede erkennen und dann ziehen oder zusammenführen.
Dies ist ein Beispiel für ein Remote-Repo namens
origin
und einen Zweig namensmaster
Tracking the Remote-Zweigorigin/master
:quelle
Ich habe einen benutzerdefinierten Git-Alias erstellt, um dies für mich zu tun:
damit kannst du das machen:
Auf diese Weise können Sie Änderungen auf einfache und einfache Weise in der Vorschau anzeigen, bevor Sie eine
merge
.quelle
Ich benutze diese beiden Befehle und kann sehen, welche Dateien geändert werden müssen.
Wenn Sie zuerst den Git-Abruf ausführen , erhalten Sie eine Ausgabe wie diese (Teil der Ausgabe):
Diese Operation gibt uns zwei Festschreibungs-IDs, die erste ist die alte und die zweite ist die neue.
Vergleichen Sie dann diese beiden Commits mit git diff
Dieser Befehl listet die Dateien auf, die aktualisiert werden:
Zum Beispiel werden app / controller / xxxx.php und app / view / yyyy.php aktualisiert.
Wenn Sie zwei Commits mit git diff vergleichen , werden alle aktualisierten Dateien mit geänderten Zeilen gedruckt . Mit grep werden jedoch nur die Zeilen gesucht und abgerufen , die diff --git aus der Ausgabe enthalten.
quelle
Ich komme vielleicht zu spät zur Party, aber das hat mich zu lange nervt. Nach meiner Erfahrung möchte ich lieber sehen, welche Änderungen ausstehen, als meine Arbeitskopie zu aktualisieren und diese Änderungen zu behandeln.
Dies geht in die
~/.gitconfig
Datei:Es ruft den aktuellen Zweig ab und führt dann einen Unterschied zwischen der Arbeitskopie und diesem abgerufenen Zweig durch. Sie sollten also nur die Änderungen sehen, die damit einhergehen würden
git pull
.quelle
HEAD..@{u}
? Es ist einfacher und erfordert nicht, dass die Fernbedienung als "Ursprung" bezeichnet wird oder dass Ihr Zweig genauso benannt wird wie auf der Fernbedienung.git pull
wenn Ihnen das, was es tut, nicht gefällt. Ich bin mir also nicht sicher, was der Anwendungsfall dafür ist.git pull
. Ich denke auch, darum ging es in der Frage von op.Wenn Sie nicht möchten, dass git-fetch Ihre lokale .git aktualisiert, kopieren Sie einfach Ihr lokales Repo in ein temporäres Verzeichnis und ziehen Sie dort. Hier ist eine kurze Hand:
Ex.:
quelle
Was ist mit dem Klonen des Repos an einer anderen Stelle und dem Git-Protokollieren sowohl an der echten Kasse als auch am frischen Klon, um zu sehen, ob Sie dasselbe haben?
quelle