Περισσότερα
Ανάκτηση συγκεκριμένης δέσμευσης από ένα απομακρυσμένο αποθετήριο Git
Υπάρχει κάποιος τρόπος να ανακτήσω μόνο μια συγκεκριμένη δέσμευση από ένα απομακρυσμένο αποθετήριο Git χωρίς να το κλωνοποιήσω στον υπολογιστή μου; Η δομή του απομακρυσμένου repo είναι απολύτως ίδια με εκείνη του δικού μου και ως εκ τούτου δεν θα υπάρξουν συγκρούσεις, αλλά δεν έχω ιδέα πώς να το κάνω αυτό και δεν θέλω να κλωνοποιήσω αυτό το τεράστιο αποθετήριο.
Είμαι νέος στο git, υπάρχει κάποιος τρόπος;
178
3
Κλωνοποιείτε μόνο μία φορά, οπότε αν έχετε ήδη έναν κλώνο του απομακρυσμένου αποθετηρίου, η λήψη από αυτό δεν θα κατεβάσει τα πάντα ξανά. Απλά υποδείξτε ποιον κλάδο θέλετε να τραβήξετε, ή φέρτε τις αλλαγές και ελέγξτε τη δέσμευση που θέλετε.
Η άντληση από ένα νέο αποθετήριο είναι πολύ φτηνή σε εύρος ζώνης, καθώς θα κατεβάσει μόνο τις αλλαγές που δεν έχετε'ε. Σκεφτείτε από την άποψη ότι το Git κάνει το σωστό πράγμα, με τον ελάχιστο δυνατό φόρτο.
Το Git αποθηκεύει τα πάντα στο φάκελο
.git
. Ένα commit δεν μπορεί'να ανακτηθεί και να αποθηκευτεί μεμονωμένα, χρειάζεται όλους τους προγόνους του. Είναι συνδεδεμένα.Για να μειώσετε το μέγεθος της λήψης μπορείτε ωστόσο να ζητήσετε από το git να φέρει μόνο αντικείμενα που σχετίζονται με ένα συγκεκριμένο branch ή commit:
Αυτό θα κατεβάσει μόνο τις commits που περιέχονται στον απομακρυσμένο κλάδο
branch
(και μόνο αυτές που σας λείπουν), και θα τις αποθηκεύσει στοorigin/branch
. Στη συνέχεια μπορείτε να συγχωνεύσετε ή να κάνετε checkout.Μπορείτε επίσης να καθορίσετε μόνο μια δέσμευση SHA1:
Αυτό θα κατεβάσει μόνο το commit του καθορισμένου SHA-1 96de5297df870 (και τους προγόνους του που σας λείπουν), και θα το αποθηκεύσει ως (ανύπαρκτο) απομακρυσμένο κλάδο
origin/foo-commit
.Έκανα ένα pull στο git repo μου:
Επιτρέποντας στο git να τραβήξει όλο τον κώδικα για τον κλάδο και στη συνέχεια πήγα να κάνω μια επαναφορά στο commit που με ενδιέφερε.
git reset --hard
Ελπίζω αυτό να βοηθήσει.
Μπορείτε απλά να λάβετε μια μεμονωμένη δέσμευση ενός απομακρυσμένου αποθετηρίου με την εντολή
όπου,
μπορεί να είναι ένα όνομα απομακρυσμένου repo (π.χ.
origin) ή ακόμα και μια διεύθυνση URL απομακρυσμένου repo (π.χ.
https://git.foo.com/myrepo.git`)για παράδειγμα
αφού έχετε πάρει τη δέσμευση (και τους προγόνους που λείπουν) μπορείτε απλά να την ελέγξετε με την εντολή
Σημειώστε ότι αυτό θα σας φέρει στην κατάσταση "detached head".