Chcę pobrać kod źródłowy z master-next branch używając gita, jak opisano w wiki Xilinx .
Próbowałem tego:
#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git Initialized empty Git repository in /home/Hannan/master-next/.git/ fatal: remote error: Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name Email [email protected] for help
Nawet to się nie udało:
# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/ fatal: remote error: Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name Email [email protected] for help
Polecenie, które działa to:
git clone git://github.com/Xilinx/u-boot-xlnx.git
Ale skąd mam wiedzieć, że to rzeczywiście spowoduje pobranie gałęzi master-next , a nie główna gałąź ? Jak poprawnie pobrać konkretną gałąź za pomocą git?
Używam RHEL 6 dostępnego przez PuTTY.
Odpowiedź
Tak jak mówi komunikat o błędzie, git clone
oczekuje repozytorium git. Możesz dodać „t” nazwę gałęzi w ścieżce w ten sposób. Zobacz gałęzie w git .
Możesz sklonować pojedyncza gałąź (i jej historia): git clone <url> --branch <branch> --single-branch
Zobacz git help clone
.
Ale polecenie klonowania, które uruchomiłeś, dało ci kopię całego repozytorium, możesz zobaczyć istniejące gałęzie za pomocą git branch
i więcej szczegółów na ich temat za pomocą git show-branch
.
Przejdź do wybranej gałęzi za pomocą git checkout branch-name
.
Pierwsze rozdziały Pro Git książka (dostępna online) zawiera więcej szczegółów na temat podstawowych poleceń.
Komentarze
Odpowiedź
To polecenie powinno działać:
$ git fetch origin [branch]
Powyższe polecenie pobiera metadane tylko ze zdalnego repozytorium, nie działa scal źródła.
Jeśli chcesz pobrać i scalić źródła, polecenie wyglądałoby tak:
$ git pull origin [branch]
Uważaj na gałąź, w której wykonujesz polecenie scalania. To będzie miejsce, w którym zostaną scalone źródła.
Komentarze
- Twoja odpowiedź jest poprawna technicznie, ale myślę, że może przydać się pewne sprawdzenie gramatyczne / ponowne pisanie.
- to ładnie działa thx
Odpowiedź
repozytoria git zawierają wszystkie gałęzie ( ale skompresowany i tylko różnice, stąd rzadko problem z rozmiarem).
Dlatego możesz sklonować cały projekt tak, jak zrobiłeś to pomyślnie. Jest to standardowy sposób na uzyskanie repozytorium, nawet jeśli interesuje Cię tylko jedna gałąź.
Struktura .git będzie wtedy zawierać wszystkie gałęzie utworzone w tym repozytorium.
Aby użyć określonej gałęzi, wykonaj git checkout [branch_name]
Jeśli gałąź istnieje, pliki zostaną udostępnione lokalnie (podobnie jak bieżące pliki w katalogach projektu).
git status
pokaże wtedy, która gałąź jest aktualną gałęzią, na przykład:
Według Leiaza można sklonować konkretną gałąź. W praktyce nigdy tego nie robiłem ani nie widziałem, aby inni go używali. Po dalszych badaniach widzę, że jest to stosunkowo nowe, dodane w git 1.7.10 (kwiecień 2012): opcja „git clone learn –single-branch” w celu ograniczenia klonowania do jednej gałęzi (niespodzianka!); tagi, które nie wskazują na historię tej gałęzi, nie są pobierane. Na przykład:
git clone -b master-next --single-branch git://github.com/Xilinx/
Tutaj, dla mojej aplikacji „łączącej”, sprawdzam gałąź v3.0.10
Komentarze
- Ja ' też tego nie robiłem, przypomniałem sobie, że widziałem opcję. Myślę, że ' Rzadko używane jako dodatkowe gałęzie są " tanie " w rozmiarze.
git checkout master-next
po sklonowaniu.