Πώς μπορώ να κλωνοποιήσω έναν συγκεκριμένο κλάδο του Git;

Ο κλώνος Git θα συμπεριφέρεται αντιγράφοντας τον απομακρυσμένο τρέχοντα κλάδο εργασίας στον τοπικό.

Υπάρχει κάποιος τρόπος να κλωνοποιήσω έναν συγκεκριμένο κλάδο μόνος μου χωρίς να αλλάξω κλάδους στο απομακρυσμένο αποθετήριο;

git clone -b  

Παράδειγμα:

git clone -b my-branch git@github.com:user/myproject.git

Με το Git 1.7.10 και μεταγενέστερα, προσθέστε το --single-branch για να αποτρέψετε τη λήψη όλων των κλάδων. Παράδειγμα, με τον κλάδο OpenCV 2.4:

git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
Σχόλια (10)
Λύση
git clone --single-branch --branch  

Η επιλογή --single-branch ισχύει από την έκδοση 1.7.10 και μετά.

Παρακαλούμε δείτε επίσης την άλλη απάντηση την οποία πολλοί προτιμούν.

Μπορεί επίσης να θέλετε να βεβαιωθείτε ότι έχετε κατανοήσει τη διαφορά. Και η διαφορά είναι η εξής: με την κλήση του git clone --branch url παίρνετε όλους τους κλάδους και ελέγχετε έναν. Αυτό μπορεί, για παράδειγμα, να σημαίνει ότι το αποθετήριό σας έχει ένα κλαδί τεκμηρίωσης ή wiki 5kB και ένα κλαδί δεδομένων 5GB. Και κάθε φορά που θέλετε να επεξεργαστείτε την μπροστινή σελίδα σας, μπορεί να καταλήξετε να κλωνοποιείτε 5GB δεδομένων.

Και πάλι, αυτό δεν σημαίνει ότι το git clone --branch δεν είναι ο τρόπος για να το πετύχετε αυτό, απλά δεν είναι πάντα αυτό που θέλετε να πετύχετε, όταν ρωτάτε για την κλωνοποίηση ενός συγκεκριμένου κλάδου.

Την εποχή που γράφτηκε η αρχική απάντηση παρακάτω, το git δεν είχε την επιλογή - single-branch, αλλά ας την διατηρήσουμε για πλήρη ικανοποίηση των θυμωμένων μελισσών.

Η απάντηση που τόσο πολύ δεν άρεσε στους αντιγραφείς ήταν αυτή:

git init
git remote add -t refspec remotename host:/dir.git
git fetch
Σχόλια (3)

Δημιουργήστε έναν κλάδο στο τοπικό σύστημα με αυτό το όνομα. π.χ. πείτε ότι θέλετε να πάρετε τον κλάδο με το όνομα "branch-05142011"

git branch branch-05142011 origin/branch-05142011

Θα σας δώσει ένα μήνυμα όπως - "Branch branch-05142011 set up to track remote branch branch-05142011 from origin.&quot,

Τώρα απλά ελέγξτε τον κλάδο όπως παρακάτω και έχετε τον κώδικα - git checkout branch-05142011

Σχόλια (5)