Wie kann ich eine nicht verfolgte Datei in einem Git Stash auschecken?

8

Angenommen, ich habe einige Änderungen mit einem der folgenden Befehle gespeichert:

%Vor%

Ich kann eine einzelne Datei aus dem Versteck über

auschecken %Vor%

Das funktioniert, wenn git "Dateiname" kennt, funktioniert aber nicht, wenn "Dateiname" nicht geparkt ist. Gibt es eine Möglichkeit, nicht verfolgte Dateien aus einem Versteck zu checken?

    
eakst7 12.05.2014, 12:04
quelle

2 Antworten

15

git stash erstellt intern spezielle Zusammenführungs-Commits für Schwarzmagie, um verschiedene Teile Ihrer Änderungen zu speichern. Das Zusammenführungs-Commit hat das ursprüngliche Basis-Commit (das, was Sie am Anfang des Zweigs beim Verstecken hatten) als sein erstes Elternteil, ein Wegwerf-Commit, das den Indexinhalt zum Zeitpunkt des Versteckens als zweites Elternteil repräsentiert, und (nur wenn Sie% verwendet haben) co_de%) ein Wegwerf-Commit, das die nicht verfolgten Dateien als drittes Elternteil enthält.

Der Merge-Commit bezieht sich also auf die nicht abgefangenen Dateien (als einer seiner Eltern) ... aber er enthält diese Dateien nicht wirklich in seiner eigenen Baumstruktur (wenn das keinen Sinn ergibt, haben Sie entweder ein paar Sachen, die man noch über Git's Interna lernen sollte ... oder du weißt zu viel über Merge Commits und dieses ganze Konstrukt scheint einfach zu schrecklich um darüber nachzudenken;)).

Kurz gesagt: Um auf die nicht verfolgten Teile Ihres Stash zuzugreifen, greifen Sie auf seinen dritten Elternteil zu: --include-untracked

    
Jan Krüger 12.05.2014, 12:26
quelle
1
  

Ich habe einen Scratch-Zweig, mit dem ich experimentiere, aber im Allgemeinen nicht dazu verpflichte. Ich möchte ein paar ausgewählte Änderungen in meinen eigentlichen Zweigzweig einfügen.

Sorgen Sie in diesem Fall nicht dafür, die Änderungen zu speichern, um sie von einem Zweig in einen anderen zu verschieben. Tun Sie direkt ein git commit , und verschieben Sie die Änderungen von dem Zweig, den Sie festgeschrieben haben, auf den anderen, indem Sie git cherry-pick verwenden : git cherry-pick #hash_of_the_commit .

    
Raul Rene 12.05.2014 12:28
quelle

Tags und Links