Ich habe ein Git-Repository eines bestimmten Projekts geklont. Kann ich die Dateien in den Ausgangszustand versetzen und wenn ich sie überprüfe, gehe ich zu Revision 2, 3, 4 ... zuletzt? Ich möchte einen Überblick über die Entwicklung des Projekts haben.
git
revision
revision-history
xralf
quelle
quelle
git log -n1
. Aber wenngit checkout
es nicht fehlschlägt, ist es eine Verschwendung von Mühe.git log
Zeigt jetzt nur das erste Commit an. Kann ich den sha1 des nächsten Commits herausfinden?git log --oneline
die Ausgabe ausführen und als Referenz in eine Textdatei einfügen (die abgekürzten sha1-Summen sind garantiert eindeutig). Eine andere Möglichkeit, wenn Ihr Verlauf linear ist, besteht darin, herauszufinden, wie viele Commits es vom ersten Commit bis zurmaster
Verwendung gibtgit checkout master~543
(wenn es 543 Commits gibt)git checkout master~542
usw.Um zu einer bestimmten Version / einem bestimmten Commit zu gelangen, führen Sie die folgenden Befehle aus. HASH-CODE können Sie von bekommen
git log --oneline -n 10
Hinweis - Nach dem Zurücksetzen auf eine bestimmte Version / ein bestimmtes Commit können Sie ausführen
git pull --rebase
, wenn Sie alle verworfenen Commits zurückbringen möchten.quelle
reset
nicht nur einen bestimmten Punkt in der Grafik auscheckt, sondern auch Ihren aktuell ausgecheckten Zweig verschiebtreset
werden alle ausstehenden Änderungen verworfen.git pull --rebase
funktioniert nur, wenn Sie eine Fernbedienung für Ihr Repo haben und diese auf dem neuesten Stand ist.Sie können eine grafische Ansicht des Projektverlaufs mit Tools wie erhalten
gitk
. Renn einfach:Wenn Sie einen bestimmten Zweig auschecken möchten:
Verwenden Sie für ein bestimmtes Commit den SHA1-Hash anstelle des Zweignamens. ( Weitere Optionen für die Navigation in Ihrem Baum finden Sie unter Treeishes im Git Community Book , das gut gelesen werden kann.)
git log
bietet eine ganze Reihe von Optionen, um auch einen detaillierten oder zusammenfassenden Verlauf anzuzeigen.Ich kenne keinen einfachen Weg, um in einer Commit-Geschichte voranzukommen . Projekte mit einer linearen Geschichte sind wahrscheinlich nicht allzu häufig. Die Idee einer "Revision" wie bei SVN oder CVS lässt sich in Git nicht so gut abbilden.
quelle
Mit dem SHA1-Schlüssel eines Commits können Sie Folgendes tun:
Suchen Sie zunächst das gewünschte Commit für eine bestimmte Datei:
git log -n <# commits> <file-name>
Dies
<# commits>
generiert basierend auf Ihrer Liste eine Liste von Commits für eine bestimmte Datei.TIPP: Wenn Sie nicht sicher sind, nach welchem Commit Sie suchen, können Sie dies mit dem folgenden Befehl herausfinden :
git diff <commit-SHA1>..HEAD <file-name>
. Dieser Befehl zeigt den Unterschied zwischen der aktuellen Version eines Commits und einer früheren Version eines Commits für eine bestimmte Datei.HINWEIS: Der SHA1-Schlüssel eines Commits ist in der
git log -n
Liste wie folgt formatiert :Zweitens überprüfen Sie die gewünschte Version:
Wenn Sie das gewünschte Commit / die gewünschte Version gefunden haben, verwenden Sie einfach den folgenden Befehl:
git checkout <desired-SHA1> <file-name>
Dadurch wird die Version der von Ihnen angegebenen Datei im Staging-Bereich abgelegt. Um es aus dem Staging-Bereich zu entfernen, verwenden Sie einfach den folgenden Befehl:
reset HEAD <file-name>
Verwenden Sie einfach den folgenden Befehl, um zu dem Punkt zurückzukehren, auf den das Remote-Repository verweist:
git checkout HEAD <file-name>
quelle
Ich war in einer Situation, in der wir einen Hauptzweig haben, und dann einen anderen Zweig namens 17.0, und in diesem 17.0 gab es einen Commit-Hash ohne "XYZ" . Und der Kunde erhält bis zu dieser XYZ-Revision einen Build. Jetzt sind wir auf einen Fehler gestoßen, der für diesen Kunden behoben werden muss. Wir müssen also bis zu diesem "xyz" -Hash eine separate Filiale für diesen Kunden erstellen. Also hier ist, wie ich es gemacht habe.
Zuerst habe ich auf meinem lokalen Computer einen Ordner mit diesem Kundennamen erstellt. Angenommen, der Kundenname lautet "AAA", sobald dieser Ordner erstellt wurde. Führen Sie den folgenden Befehl in diesem Ordner aus:
quelle
Eine Möglichkeit wäre, alle Commits zu erstellen, die jemals für Patches vorgenommen wurden. Überprüfen Sie das anfängliche Commit und wenden Sie die Patches nach dem Lesen in der richtigen Reihenfolge an.
verwenden
git format-patch <initial revision>
und danngit checkout <initial revision>
. Sie sollten einen Stapel Dateien in Ihrem Director erhalten, beginnend mit vier Ziffern, die die Patches sind.Wenn Sie mit dem Lesen Ihrer Revision fertig sind, tun Sie einfach,
git apply <filename>
was aussehengit apply 0001-*
und zählen sollte.Aber ich frage mich wirklich, warum Sie nicht stattdessen nur die Patches selbst lesen möchten. Bitte poste dies in deinen Kommentaren, weil ich neugierig bin.
Das Git-Handbuch gibt mir auch Folgendes:
Sie können sich auch ansehen,
git blame filename
wo Sie eine Liste finden, in der jede Zeile einem Commit-Hash + Autor zugeordnet ist.quelle
Um zu einem bestimmten festgeschriebenen Code zu gelangen, benötigen Sie den Hash-Code dieses Festschreibens. Sie können diesen Hash-Code auf zwei Arten erhalten:
git log
und überprüfen Sie Ihre letzten Commits in diesem Zweig. Es zeigt Ihnen den Hash-Code Ihres Commits und die Nachricht, die Sie beim Festschreiben Ihres Codes hinterlassen haben. Einfach kopieren und dann machengit checkout commit_hash_code
Wenn Sie nach dem Wechseln zu diesem Code daran arbeiten und Änderungen vornehmen möchten, sollten Sie einen weiteren Zweig mit
git checkout -b <new-branch-name>
erstellen, da sonst die Änderungen nicht beibehalten werden.quelle
Um ein Commit auszuchecken (nb Sie schauen in die Vergangenheit!).
Um von einem Commit brutal neu zu starten und die späteren Zweige zu löschen, die Sie wahrscheinlich durcheinander gebracht haben.
quelle