Υπάρχει κάποιος τρόπος να ανατρέψω ή να αναιρέσω το git pull έτσι ώστε ο πηγαίος κώδικας/τα repos μου να επανέλθουν στην παλιά κατάσταση που ήταν πριν κάνω το git pull? Θέλω να το κάνω αυτό επειδή συγχωνεύτηκαν κάποια αρχεία που δεν ήθελα να το κάνω, αλλά μόνο να συγχωνευτούν άλλα υπόλοιπα αρχεία. Έτσι, θέλω να πάρω αυτά τα αρχεία πίσω, είναι αυτό δυνατό ? Ευχαριστώ :)
EDIT Θέλω να αναιρέσω τη συγχώνευση git για διευκρίνιση. Αφού είδα κάποιες απαντήσεις, έκανα το εξής
git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...
Τώρα, τι πρέπει να κάνω; Το να κάνω git reset --hard
είναι εντάξει? Δεν θέλω να το χαλάσω πάλι, οπότε ζητάω λεπτομερή βήματα ?
Η εκτέλεση του git pull
εκτελεί τις ακόλουθες εργασίες, με τη σειρά:
git fetch
git merge
Το βήμα συγχώνευσης συνδυάζει κλάδους που έχουν ρυθμιστεί να συγχωνεύονται στη διαμόρφωσή σας. Θέλετε να αναιρέσετε το βήμα merge, αλλά πιθανότατα όχι το βήμα fetch (δεν έχει πολύ νόημα και δεν θα έπρεπε να είναι απαραίτητο).
Για να αναιρέσετε το merge, χρησιμοποιήστε το git reset --hard
για να επαναφέρετε το τοπικό αποθετήριο σε μια προηγούμενη κατάσταση- χρησιμοποιήστε το git-reflog για να βρείτε το SHA-1 της προηγούμενης κατάστασης και στη συνέχεια επαναφέρετε σε αυτήν.
Προειδοποίηση
Οι εντολές που αναφέρονται σε αυτή την ενότητα αφαιρούν όλες τις μη δεσμευμένες αλλαγές, οδηγώντας ενδεχομένως σε απώλεια εργασίας:
git reset --hard
Εναλλακτικά, κάντε επαναφορά σε ένα συγκεκριμένο χρονικό σημείο, όπως π.χ:
git reset --hard master@{"10 minutes ago"}
Το ίδιο με την απάντηση του jkp, αλλά εδώ είναι η πλήρης εντολή:
git reset --hard a0d3fe6
όπου το a0d3fe6 βρίσκεται κάνοντας
git reflog
και κοιτάζοντας το σημείο στο οποίο θέλετε να κάνετε αναίρεση.
Αν έχετε το gitk (δοκιμάστε να εκτελέσετε το "gitk --all από τη γραμμή εντολών git"), είναι απλό. Απλά εκτελέστε το, επιλέξτε το commit στο οποίο θέλετε να κάνετε rollback (δεξί κλικ) και επιλέξτε "Reset master branch to here". Αν δεν έχετε μη δεσμευμένες αλλαγές, επιλέξτε την επιλογή "hard".