2013-05-31 13 views

Antwort

23

Das Problem ist, dass ein Stash besteht aus zwei oder drei Commits. Beim Speichern wird der geänderte Arbeitsbaum in einem Commit, dem Index in einem Commit und (bei Verwendung des Flags --include-untracked) in allen nicht verfolgten Dateien eines dritten Commits gespeichert.

Sie können dies sehen, wenn Sie gitk --all verwenden und ein Versteck machen.

enter image description here

[email protected]{0} zeigt auf die commit, dass der Arbeits Baum enthält.

Sie können jedoch cherry-pick aus, dass begehen, wenn Sie

tun
git cherry-pick "[email protected]{0}" -m 1 

Der Grund, dass cherry-pick denkt, dass der Vorrat eine Zusammenführung ist, und muss somit der -m 1 Parameter ist, dass das Versteck begehen multpile Eltern hat, wie Sie in der Grafik sehen können.

Ich bin mir nicht sicher, was genau Sie durch Rosinenpicken erreichen möchten. Eine mögliche Alternative besteht darin, einen Zweig aus dem Versteck zu erstellen. Übernehmen Sie dort Änderungen und fügen Sie sie zu Ihrem aktuellen Zweig zusammen.

git stash branch stashchanges 
git commit -a -m "changes that were stashed" 
git checkout master 
git merge stashchanges 
+1

>> Ich bin mir nicht sicher, was genau Sie durch Rosinenpickerei erreichen möchten? - In meinem Fall wäre eine einfache Zusammenführung in Ordnung, indem Sie stash apply/pop ausführen. Aber ich habe mich gefragt, ob ich ein paar Änderungen aus den verdeckten Änderungen herauspicken kann. Danke für Ihre Antwort. –

-2

Ich habe dies noch nicht geschehen. Aber die Man-Page auf Cherry-Pick sagt, dass es nur auf Commits funktioniert.

Given one or more existing commits, apply the change each one introduces, 
    recording a new commit for each. This requires your working tree to be 
    clean (no modifications from the HEAD commit). 

Stashing ist kein Commit und bewegt HEAD nicht. Also, das kann nicht gemacht werden [das ist nur eine Vermutung]

+1

Eigentlich ist nicht nur ein Stash ein Commit, es ist mehrere. Aber sie werden oft nicht durch Protokollierungswerkzeuge angezeigt. Siehe meine Antwort. –