2010-07-16 10 views
9

Eine verwandte Frage How do you stash an untracked file? wurde mit "track the file" beantwortet. Dies funktioniert jedoch nicht für meine speziellen Bedürfnisse.git: Kann ich eine nicht verfolgte Datei speichern, ohne sie dem Index hinzuzufügen?

Ich versuche, alles, was nicht im Index ist mit git stash save --keep-index zu verstauen, so dass ich den Index in meinem Pre-Commit Hook validieren kann. Die Idee stammt aus dem Beispiel "Testing partially commits" der git-stash man-Seite. Ich möchte sicherstellen, dass das, was ich tatsächlich begehe, die Tests besteht und nicht nur, was im Arbeitsverzeichnis steht. Hier ist, was ich bisher:

echo "Running tests on the staging area." 
git stash save --keep-index 
# configure, build, run tests, clean 
git stash pop; true 

Dies scheint zu funktionieren, bis ich untracked Dateien in meinem Arbeitsverzeichnis haben die verstaute nicht bekommen. Einige Suchvorgänge führten zu einer Feature-Anfrage von vor zwei Jahren: Option to save untracked and/or ignored files in stash, aber sonst nichts.

Sollte ich Stash überhaupt verwenden? Vielleicht gibt es einen besseren Weg mit temporären Filialen oder etwas.

Antwort

12

Wie ich auf die damit verbundene Frage beantwortet, ist die Antwort jetzt YES:

Ab git 1.7.7, git stash nimmt die --include-untracked Option untracked Dateien in Ihrem Versteck aufzunehmen.

git stash --include-untracked 

Oder Sie können die kurze -u Option verwenden.

git stash -u 
2

Nein, git stash wird nur den aktuellen Status des Arbeitsverzeichnisses und des Indexes "aufzeichnen". So wird das Verstecken Ihre nicht verfolgten Dateien nicht aufnehmen.

Die Umstellung auf einen temporären Zweig und das Verfolgen der nicht verfolgten Dateien dort, wie Sie vorschlagen, scheint ein vernünftiger Ansatz zu sein.

+1

Ich nehme an, meine Definition von "Arbeitsverzeichnis" unterscheidet sich von der der Git-Entwickler. Ich habe mein Problem gelöst, indem ich git-checkout-index in ein temporäres Verzeichnis eingefügt und dort erstellt habe. Ich würde trotzdem lieber Git-Stash verwenden, wenn möglich. –

+0

Das ist definitiv eine seltsame Definition von "Arbeitsverzeichnis". Ich würde auch neue Dateien als Teil meines Arbeitsverzeichnisses betrachten. – allyourcode