Δημοσιεύτηκε: 29 Απρ 2012, 03:25
από simosx
Ilias95 έγραψε:
poscore έγραψε:Καλησπέρα, με
Κώδικας: Επιλογή όλων
git pull

παίρνεις κάποιο error; Θα πρέπει να δουλεύει!

φιλικά, poscore

Όντως είχα δοκιμάσει το "git pull" και πήρα κάποιο error το οποίο δυστυχώς δεν συγκράτησα.
Τελικά έσβησα το τοπικό αποθετήριο και δημιούργησα νέο κλώνο.
Θα ξαναδοκιμάσω μόλις έχω την ευκαιρία και θα ενημερώσω.


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

Αν το δημόσιο αποθετήριο (στο github) έχει μόνο νεότερα commit (και δεν υπάρχουν commit στο τοπικό σου αποθετήριο που δεν έχουν δημοσιοποιηθεί), τότε αρκεί να τρέξεις
Κώδικας: Επιλογή όλων
git pull

Ωστόσο, αν το τοπικό σου αποθετήριο έχει κάποια νέα commit που δεν υπάρχουν ακόμα στο δημόσιο αποθετήριο, τότε έχουμε μια ειδική περίπτωση.
Εδώ δοκιμάζουμε τη διαδικασία που ονομάζουμε rebase, με
Κώδικας: Επιλογή όλων
git pull --rebase

Με το rebase ζητάμε από το git να τροποποιήσει το τοπικό μας αποθετήριο και να κάνει αυτά τα commit που δεν υπάρχουν ακόμα στο δημόσιο αποθετήριο, να εμφανιστούν με τέτοιο τρόπο ώστε να περάσουν πρώτα στο ιστορικό (του τοπικού αποθετηρίου) τα commit που υπήρχαν στο δημόσιο αποθετήριο, και τα commit του τοπικού να εμφανιστούν πιο πρόσφατα στο ιστορικό. Αυτό ονομάζεται rebase.
Αν τα commit είναι ανεξάρτητα μεταξύ τους, τότε το git μπορεί να κάνει το rebase αυτόματα για μας.
Αν όμως τα commit έχουν αλληλοεξαρτήσεις, τότε πρέπει εμείς οι ίδιοι να διορθώσουμε τυχόν συγκρούσεις. Μάλλον πέτυχες σε αυτή την περίπτωση. Αν καταφέρεις να διορθώσεις μια τέτοια περίπτωση, έχεις πάρει το δίπλωμα στη χρήση του git :-).