Antworten:
Verwenden Sie git checkout <sha1>
diese Option, um ein bestimmtes Commit auszuchecken.
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 zur master
Verwendung gibt git 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 bekommengit log --oneline -n 10
git reset --hard HASH-CODE
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.
reset
nicht nur einen bestimmten Punkt in der Grafik auscheckt, sondern auch Ihren aktuell ausgecheckten Zweig verschiebt
reset
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:
gitk --all
Wenn Sie einen bestimmten Zweig auschecken möchten:
git checkout <branch name>
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.
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 :
verpflichten
<SHA1 id>
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>
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:
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 dann git 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 aussehen
git 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:
git show next~10:Documentation/README
Zeigt den Inhalt der Datei Documentation / README an, wie er beim 10. letzten Commit des nächsten Zweigs aktuell war.
Sie können sich auch ansehen, git blame filename
wo Sie eine Liste finden, in der jede Zeile einem Commit-Hash + Autor zugeordnet ist.
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.
git log -n1
. Aber wenngit checkout
es nicht fehlschlägt, ist es eine Verschwendung von Mühe.