Ως λογισμικό για έλεγχο έκδοσης, το Git καθιστά προβλέψιμα εύκολη την επαναφορά των αλλαγών. Αλλά ακόμη και η ιδέα της αναίρεσης μιας αλλαγής είναι πιο περίπλοκη από ό, τι φαντάζεστε αρχικά. Ένα αποθετήριο Git δεν είναι ακριβώς το ίδιο πράγμα με το σύνολο των αρχείων που εργάζεστε τοπικά. Η αναίρεση αλλαγών σημαίνει ότι εξετάζετε ακριβώς πού θέλετε να τις αναιρέσετε.

gitολοκλήρωση παραγγελίας, επαναφορά git, και gitεπαναφέρω είναι εντολές που μπορούν να σας βοηθήσουν να επαναφέρετε μια προηγούμενη έκδοση όχι μόνο της βάσης κωδίκων σας, αλλά και μεμονωμένων αρχείων. Γνωρίστε τις λεπτομέρειες αυτών των εντολών και θα περιηγηθείτε στο ιστορικό των αρχείων σας σαν ειδικός σε χρόνο μηδέν.

Τι σημαίνει, ούτως ή άλλως, η επαναφορά ενός αρχείου;

Είναι σημαντικό να σημειωθεί ότι η επαναφορά ενός αρχείου μπορεί να σημαίνει διαφορετικά πράγματα για διαφορετικά άτομα υπό διαφορετικές συνθήκες. Επίσης το επαναφορά git Η εντολή ενδέχεται να μην ταιριάζει με τις προσδοκίες σας για το τι σημαίνει επαναφορά.

instagram viewer

Μερικές φορές, θα θέλετε να αναιρέσετε τις τοπικές αλλαγές, ώστε ένα αρχείο να είναι ξανά σε συγχρονισμό με το τρέχον αποθετήριο. Σε άλλες περιπτώσεις, μπορεί να θέλετε να επαναφέρετε τις αλλαγές που έχετε ήδη δεσμευτεί στο αποθετήριο.

Οι ακόλουθοι όροι είναι βασικοί για την κατανόηση της διαφοράς: δέντρο εργασίας, περιοχή σκηνής και αποθετήριο. Τα αρχεία που επεξεργάζεστε τοπικά ανήκουν στο δέντρο εργασίας. Τα αρχεία που δεσμεύετε καταλήγουν τελικά στο αποθετήριο. Όταν είστε στη διαδικασία συλλογής αλλαγών, σκηνοθετείτε αρχεία. Ένα αρχείο μπορεί να έχει διαφορετικά περιεχόμενα σε καθεμία από αυτές τις θέσεις.

Δείτε επίσης: Advanced Git Tutorial

Μπορεί να σκεφτείτε την επαναφορά ενός αρχείου ως αναίρεση αλλαγών. Αλλά η κατάσταση του αρχείου σας θα καθορίσει ποιες αλλαγές αναιρείτε πραγματικά. Η προφανής περίπτωση είναι όταν κάνετε κάποιες αλλαγές, τις δεσμεύετε και μετά αποφασίζετε ότι δεν τις θέλετε πια.

Μια άλλη περίπτωση μπορεί να είναι ότι σκηνοθετήσατε ένα αρχείο και τώρα θέλετε να το ξεσκηνώσετε.

Πώς μπορώ να επαναφέρω ένα αρχείο που είχε υποβληθεί στο παρελθόν;

Ας ασχοληθούμε με μια υπόθεση που είναι πιο κατανοητή: δεσμεύσατε ένα αρχείο και τώρα θέλετε να επαναφέρετε τις αλλαγές σε αυτό.

Η εντολή Git για να γίνει αυτό ονομάζεται, κάπως αδιανόητα ολοκλήρωση παραγγελίας. μπορεί να έχετε χρησιμοποιήσει ολοκλήρωση παραγγελίας πριν να αλλάξετε κλάδους, αλλά αυτό είναι ένα μικρό μέρος του τι μπορεί να κάνει η εντολή. Σας δίνει επίσης τη δυνατότητα να ενημερώσετε αρχεία στο δέντρο εργασίας σας ώστε να ταιριάζουν με αυτά σε οποιοδήποτε σημείο του ιστορικού του αποθετηρίου. Μπορείτε να το κάνετε αυτό για μια συγκεκριμένη ετικέτα, διακλάδωση ή ακόμα και μια συγκεκριμένη δέσμευση.

Η πιο χρήσιμη, γενικής χρήσης μορφή αυτής της εντολής είναι:

git checkout [commit ID] -- διαδρομή/προς/αρχείο

Εδώ, περνάμε ένα συγκεκριμένο μονοπάτι (διαδρομή/προς/αρχείο) που προσδιορίζει μόνο ένα αρχείο. Καθορίζουμε επίσης ένα αναγνωριστικό δέσμευσης για να λάβουμε το αρχείο όπως υπήρχε στη συγκεκριμένη δέσμευση. Αυτή η εντολή θα ενημερώσει το αρχείο μόνο στο δέντρο εργασίας μας.

Σημειώστε ότι ο έλεγχος μιας παλαιότερης έκδοσης του αρχείου τροποποιεί το αντίγραφο εργασίας, χωρίς να το δεσμεύσετε ή ακόμα και να το σταδιοποιήσετε. Για να ολοκληρώσετε πλήρως την αναίρεση στο αποθετήριο, θα χρειαστεί να τοποθετήσετε το αρχείο και να δημιουργήσετε ένα νέο commit.

Δείτε επίσης: Πώς να επιθεωρήσετε το ιστορικό ενός έργου με το αρχείο καταγραφής git

Πώς μπορώ να αλλάξω αυτό που σκηνοθετώ;

Ο άλλος τύπος αναίρεσης περιλαμβάνει την περιοχή στάσης σας. Αυτό περιέχει τις αλλαγές που θα πραγματοποιήσετε δίπλα στο αποθετήριο. Εάν έχετε σκηνοθετήσει μια έκδοση ενός αρχείου και αργότερα αποφασίσετε ότι δεν θέλετε να το συμπεριλάβετε στην επόμενη δέσμευση, θα πρέπει πρώτα να το αποσταδώσετε.

Μπορείτε να χρησιμοποιήσετε το επαναφορά git εντολή για την κατάργηση του σταδίου ενός σταδιακού αρχείου:

git επαναφορά HEAD διαδρομή/προς/αρχείο

Μπορώ να αναιρέσω γρήγορα τις τοπικές αλλαγές;

Ναι, μπορείτε να αναιρέσετε τις αλλαγές σε ένα τοπικό αρχείο πριν από τη σταδιακή του. Χρησιμοποιήστε την ακόλουθη εντολή:

git checkout -- διαδρομή/προς/αρχείο

Σημειώστε ότι αυτό είναι παρόμοιο με την επαναφορά μιας αλλαγής αποθήκης, απλώς παραλείπει το αναγνωριστικό δέσμευσης. Μόλις εκτελέσετε αυτήν την εντολή, το Git θα αναιρέσει τυχόν αλλαγές στο αντίγραφο εργασίας σας.

Τι γίνεται με την επαναφορά του git;

Οι νεότερες εκδόσεις του Git έχουν μια νεότερη εντολή: επαναφέρω. Για τις απλές περιπτώσεις που συζητήσαμε εδώ, μπορείτε να χρησιμοποιήσετε τα παρακάτω ισοδύναμα. Για να αναιρέσετε μια αλλαγή στο χώρο αποθήκευσης:

git restore --source [commit id] path/to/file

Για να καταργήσετε το στάδιο ενός αρχείου χρησιμοποιήστε:

git restore --staged path/to/file

Και για να αναιρέσετε τις αλλαγές αντιγράφων εργασίας:

git restore path/to/file

Η ισχύς του Mastering Versioning του Git είναι ανεκτίμητη

Αν και η επαναφορά ενός αρχείου μπορεί να φαίνεται σαν κάτι συνηθισμένο, θα διαπιστώσετε ότι συμβαίνει πολύ σπάνια στην πράξη. Είναι πιο πιθανό να επαναφέρετε ολόκληρες δεσμεύσεις παρά μεμονωμένα αρχεία. Ωστόσο, στις περιπτώσεις που χρειάζεται να το κάνετε, το Git τουλάχιστον το κάνει αρκετά απλό.

Πώς να αφαιρέσετε ένα αρχείο από το Commit στο Git

Χρησιμοποιήστε αυτές τις εντολές Git για να εκτελέσετε λειτουργίες όπως η αφαίρεση ενός αρχείου από μια δέσμευση.

Διαβάστε Επόμενο

ΜερίδιοΤιτίβισμαΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Σχετικά θέματα
  • Προγραμματισμός
  • GitHub
  • Ανάπτυξη διαδικτύου
  • Προγραμματισμός
Σχετικά με τον Συγγραφέα
Μπόμπι Τζακ (Δημοσιεύτηκαν 63 άρθρα)

Ο Bobby είναι ένας λάτρης της τεχνολογίας που εργάστηκε ως προγραμματιστής λογισμικού για περισσότερες από δύο δεκαετίες. Είναι παθιασμένος με τα παιχνίδια, εργάζεται ως αρχισυντάκτης στο Switch Player Magazine και ασχολείται με όλες τις πτυχές της διαδικτυακής δημοσίευσης και της ανάπτυξης ιστού.

Περισσότερα από τον Bobby Jack

Εγγραφείτε στο ενημερωτικό μας δελτίο

Εγγραφείτε στο ενημερωτικό μας δελτίο για συμβουλές τεχνολογίας, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για να εγγραφείτε