Άρχισα να δουλεύω πάνω σε ένα νέο χαρακτηριστικό και αφού κωδικοποίησα για λίγο, αποφάσισα ότι αυτό το χαρακτηριστικό θα έπρεπε να είναι σε δικό του κλάδο.
Πώς μπορώ να μεταφέρω τις υπάρχουσες μη δεσμευμένες αλλαγές σε ένα νέο κλάδο και να επαναφέρω τον τρέχοντα;
Θέλω να επαναφέρω τον τρέχοντα κλάδο μου διατηρώντας την υπάρχουσα εργασία στο νέο χαρακτηριστικό.
Χρησιμοποιήστε τα ακόλουθα:
git checkout -b <new-branch>
Αυτό θα αφήσει τον τρέχοντα κλάδο σας ως έχει, θα δημιουργήσει και θα ελέγξει έναν νέο κλάδο και θα κρατήσει όλες τις αλλαγές σας. Στη συνέχεια μπορείτε να κάνετε μια δέσμευση με:
git add <files>
και να κάνετε commit στον νέο σας κλάδο με:
git commit -m "<Brief description of this commit>"
Οι αλλαγές στον κατάλογο εργασίας και οι αλλαγές που βρίσκονται στο index δεν ανήκουν ακόμα σε κανένα κλάδο. Αυτό αλλάζει το πού θα καταλήξουν αυτές οι αλλαγές.
Δεν επαναφέρετε τον αρχικό σας κλάδο, παραμένει ως έχει. Η τελευταία δέσμευση στο <old-branch>
θα εξακολουθεί να είναι η ίδια. Επομένως, κάνετε checkout -b
και στη συνέχεια κάνετε commit.
Εναλλακτικά:
Αποθηκεύστε τις τρέχουσες αλλαγές σε μια προσωρινή κρυψώνα:
$ git stash
Δημιουργήστε έναν νέο κλάδο με βάση αυτό το stash και μεταβείτε στο νέο κλάδο:
$ git stash branch <new-branch> stash@{0}
Συμβουλή: χρησιμοποιήστε το πλήκτρο tab για να μειώσετε την πληκτρολόγηση του ονόματος του stash.
Αν το δεσμεύσετε, θα μπορούσατε επίσης να επιλέξετε το μοναδικό αναγνωριστικό δέσμευσης. Το κάνω συχνά αυτό όταν ξεκινάω την εργασία μου στο master και στη συνέχεια θέλω να δημιουργήσω έναν τοπικό κλάδο πριν τον προωθήσω στο origin/
git cherry-pick <commitID>
Υπάρχουν πολλά που μπορείτε να κάνετε με το cherry-pick, όπως περιγράφεται εδώ, αλλά αυτή θα μπορούσε να είναι μια περίπτωση χρήσης για εσάς.