webentwicklung-frage-antwort-db.com.de

Gehe zu einer bestimmten Revision

Ich habe ein Git-Repository eines bestimmten Projekts geklont. Kann ich die Dateien in den Ausgangszustand versetzen und beim Überprüfen der Dateien die neuesten Versionen 2, 3, 4 ... aufrufen? Ich hätte gerne einen Überblick über die Entwicklung des Projekts.

473
xralf

Verwenden Sie git checkout <sha1>, um ein bestimmtes Commit auszuchecken.

719
Marcelo Cantos

Um zu einer bestimmten Version zu gelangen, führen Sie die folgenden Befehle aus. HASH-CODE erhalten Sie von git log --oneline -n 10

git reset --hard HASH-CODE

Hinweis - Nach dem Zurücksetzen auf eine bestimmte Version/ein bestimmtes Commit können Sie git pull --rebase ausführen, wenn Sie alle verworfenen Commits wiederherstellen möchten.

36
J4cK

Mit Tools wie gitk können Sie eine grafische Ansicht des Projektverlaufs erhalten. Renn einfach:

gitk --all

Wenn Sie eine bestimmte Filiale auschecken möchten:

git checkout <branch name>

Verwenden Sie für ein bestimmtes Commit den SHA1-Hash anstelle des Zweignamens. (Siehe Baum im Git-Community-Buch , das eine gute Lektüre ist, um weitere Optionen zum Navigieren in Ihrem Baum zu finden.)

git log verfügt über eine Reihe von Optionen, mit denen Sie auch den detaillierten Verlauf oder den zusammenfassenden Verlauf anzeigen können.

Ich kenne keinen einfachen Weg, um in einem Commit-Verlauf voranzukommen . Projekte mit einer linearen Historie sind wahrscheinlich nicht allzu häufig. Die Idee einer "Revision" wie bei SVN oder CVS lässt sich in Git nicht so gut abbilden.

18
Mat

Mit dem SHA1-Schlüssel eines Commits können Sie Folgendes tun:

  • Suchen Sie zuerst das Commit, das Sie für eine bestimmte Datei wünschen:

    git log -n <# commits> <file-name>

    Auf der Grundlage Ihres <# commits> wird eine Liste von Commits für eine bestimmte Datei erstellt.

    TIPP: Wenn Sie sich 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 an.

    HINWEIS: Der SHA1-Schlüssel eines Commits ist in der Liste von git log -n wie folgt formatiert:

commit <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 Befehl: git checkout <desired-SHA1> <file-name>

    Dadurch wird die von Ihnen angegebene Version der Datei im Staging-Bereich abgelegt. Um es aus dem Staging-Bereich zu entfernen, verwenden Sie einfach den Befehl: reset HEAD <file-name>

Verwenden Sie einfach den Befehl: git checkout HEAD <file-name>, um zu der Stelle zurückzukehren, auf die das Remote-Repository verweist.

5
Wizard

Ich habe ein Befehlszeilen-Tool python erstellt, um zu sehen, wie sich ein Projekt entwickelt hat. Sie könnten sehen, ob das hilft. Das Tool wird auf dem Git unter der folgenden URL gehostet

https://github.com/yoganand/git-evolver

3

Ich befand mich in einer Situation, in der wir einen Hauptzweig und dann einen anderen Zweig mit dem Namen 17.0 hatten und in diesem 17.0 gab es einen Festschreibungs-Hash, der nicht gesagt werden konnte "XYZ". Und der Kunde erhält einen Build bis zu dieser XYZ-Revision. Jetzt sind wir auf einen Fehler gestoßen, der für diesen Kunden behoben werden muss. Daher müssen wir für diesen Kunden eine separate Filiale erstellen, bis dieser "xyz" -Hash ausgeführt wird. 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 dazu den folgenden Befehl in diesem Ordner aus:

  1. git init
  2. git clone Nach diesem Befehl befinden Sie sich im Hauptzweig. Wechseln Sie also zum gewünschten Zweig
  3. git checkout 17. Dies bringt Sie zu dem Zweig, in dem Ihr Commit vorhanden ist
  4. git checkout Dies wird Ihr Repository bis zu diesem Hash-Commit in Anspruch nehmen. Sehen Sie sich den Namen Ihres Zweigs an, der in den Festschreibungs-Hash Nr. Geändert wurde. Geben Sie diesem Hash einen Zweignamen
  5. Git-Zweig ABC Dies wird einen neuen Zweig auf Ihrem lokalen Computer erstellen.
  6. git checkout ABC
  7. git Push Origin ABC Dadurch wird dieser Zweig in das Remote-Repository verschoben und ein Zweig auf dem Git-Server erstellt. Du bist fertig.
1
ashish

Eine Möglichkeit wäre, alle Commits zu erstellen, die jemals an Patches vorgenommen wurden. Checken Sie das erste Commit aus und wenden Sie die Patches nach dem Lesen der Reihe nach an.

benutze git format-patch <initial revision> und dann git checkout <initial revision>. Sie sollten einen Stapel von Dateien in Ihrem Director haben, beginnend mit vier Ziffern, die die Patches darstellen.

wenn Sie mit dem Lesen Ihrer Revision fertig sind, führen Sie einfach git apply <filename> aus, das wie git apply 0001-* aussehen sollte, und zählen Sie.

Aber ich frage mich wirklich, warum Sie nicht stattdessen nur die Patches selbst lesen möchten? Bitte posten Sie dies in Ihren 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 so an, wie er beim 10. letzten Festschreiben des nächsten Zweigs aktuell war.

sie können sich auch git blame filename ansehen, um eine Liste der Zeilen zu erhalten, die mit einem Commit-Hash + -Autor verknüpft sind.

1
Alex

Ich möchte das Befehlszeilentool tig erwähnen, das anscheinend überall verfügbar ist. Es ist eine textgrafische Baumansicht mit Tag-Anzeige usw. des Projektrevisionsverlaufs. Es kann über ssh usw. verwendet werden. Super praktisch.

1
std''OrgnlDave