Είχα πάντα την εντύπωση ότι μπορούσατε να δώσετε σε μια κρύπτη ένα όνομα κάνοντας git stash save stashname
, το οποίο θα μπορούσατε αργότερα να εφαρμόσετε κάνοντας git stash apply stashname
. Αλλά φαίνεται ότι σε αυτή την περίπτωση το μόνο που συμβαίνει είναι ότι το stashname
θα χρησιμοποιηθεί ως περιγραφή της κρύπτης.
Δεν υπάρχει κανένας τρόπος να ονομάσετε πραγματικά μια κρύπτη; Αν όχι, τι θα προτείνατε για να επιτύχετε ισοδύναμη λειτουργικότητα; Ουσιαστικά έχω ένα μικρό stash το οποίο θα ήθελα περιοδικά να εφαρμόζω, αλλά δεν θέλω να πρέπει πάντα να ψάχνω στο git stash list
ποιος είναι ο πραγματικός αριθμός του stash.
Έτσι θα το κάνετε:
git stash save "my_stash"
Όπου "my_stash"
είναι το όνομα της κρύπτης.
Μερικά ακόμη χρήσιμα πράγματα που πρέπει να γνωρίζετε: Όλες οι κρυψώνες αποθηκεύονται σε μια στοίβα. Τύπος:
git stash list
Αυτό θα εμφανίσει όλες τις κρυψώνες σας.
Για να εφαρμόσετε μια κρυψώνα και να την αφαιρέσετε από τη στοίβα κρυψώνων, πληκτρολογήστε:
git stash pop stash@{n}
Για να εφαρμόσετε μια κρυψώνα και να τη διατηρήσετε στη στοίβα κρυψώνων, πληκτρολογήστε:
git stash apply stash@{n}
Όπου n
είναι ο δείκτης της αποθηκευμένης αλλαγής.
Μπορείτε να μετατρέψετε μια κρυψώνα σε υποκατάστημα, αν το θεωρείτε αρκετά σημαντικό:
git stash branch <branchname> [<stash>]
από τη σελίδα man:
Αυτό δημιουργεί και ελέγχει έναν νέο κλάδο με όνομα <branchname>
ξεκινώντας από τη δέσμευση στην οποία δημιουργήθηκε αρχικά το <stash>
, εφαρμόζει τις αλλαγές που έχουν καταγραφεί στο <stash>
στο νέο δέντρο εργασίας και στο ευρετήριο, και στη συνέχεια απορρίπτει το <stash>
αν αυτό ολοκληρωθεί με επιτυχία. Όταν δεν δίνεται το <stash>
, εφαρμόζει το πιο πρόσφατο.
Αυτό είναι χρήσιμο αν ο κλάδος στον οποίο τρέξατε το git stash save
έχει αλλάξει αρκετά ώστε το git stash apply να αποτύχει λόγω συγκρούσεων. Δεδομένου ότι η stash εφαρμόζεται πάνω από τη δέσμευση που ήταν HEAD τη στιγμή που εκτελέστηκε το git stash, επαναφέρει την αρχικά αποθηκευμένη κατάσταση χωρίς συγκρούσεις.
Μπορείτε αργότερα να επανατοποθετήσετε αυτό το νέο κλαδί σε κάποιο άλλο μέρος που'είναι απόγονος του σημείου που βρισκόσασταν όταν κάνατε stashed.
Οι κρυψώνες δεν προορίζονται για να είναι μόνιμα πράγματα, όπως θέλετε. Πιθανότατα θα ήταν καλύτερα να χρησιμοποιείτε ετικέτες στις μεταβιβάσεις. Κατασκευάστε το πράγμα που θέλετε να αποθηκεύσετε. Κάντε μια δέσμευση από αυτό. Δημιουργήστε μια ετικέτα για αυτό το commit. Στη συνέχεια, γυρίστε το branch σας στο HEAD^
. Τώρα, όταν θέλετε να εφαρμόσετε ξανά την απόθεση, μπορείτε να χρησιμοποιήσετε το git cherry-pick -n tagname
(το -n
είναι --no-commit
).