wszystkie odpowiedzi, które tu widziałem, są poprawne, ale istnieje znacznie czystszy sposób klonowania repozytorium i wyciągania wszystkich gałęzi na raz.
Po sklonowaniu repozytorium wszystkie informacje o gałęziach są faktycznie pobierane, ale gałęzie są ukryte. Za pomocą polecenia
$ git branch -a
możesz wyświetlić wszystkie gałęzie repozytorium i za pomocą polecenia
$ git checkout -b branchname origin/branchname
możesz następnie „ręcznie” pobrać je pojedynczo.
Jednak jeśli chcesz sklonować repozytorium z wieloma gałęziami, wszystkie przedstawione powyżej sposoby są długie i żmudne w odniesieniu do znacznie czystszego i szybszego sposobu, który zamierzam pokazać, chociaż jest to trochę skomplikowane. Aby to osiągnąć, musisz wykonać trzy kroki:
- Pierwszy krok
utwórz nowy pusty folder na swoim komputerze i klonuj kopię lustrzaną folderu .git z repozytorium:
$ cd ~/Desktop && mkdir my_repo_folder && cd my_repo_folder
$ git clone --mirror https://github.com/planetoftheweb/responsivebootstrap.git .git
lokalne repozytorium w folderze my_repo_folder jest nadal puste, jest teraz tylko ukryty folder .git, który można zobaczyć za pomocą polecenia „ls -alt” z terminala.
- Drugi krok
przełącz to repozytorium z pustego (pustego) do zwykłego, zmieniając wartość logiczną „gołą” konfiguracji git na false:
$ git config --bool core.bare false
- Trzeci krok
Chwyć wszystko, co znajduje się w bieżącym folderze i utwórz wszystkie gałęzie na komputerze lokalnym, dzięki czemu jest to normalne repo.
$ git reset --hard
Teraz możesz po prostu wpisać polecenie „git branch” i możesz zobaczyć, że wszystkie gałęzie zostały pobrane.
Jest to szybki sposób klonowania repozytorium git ze wszystkimi gałęziami jednocześnie, ale nie jest to coś, co chcesz zrobić dla każdego projektu w ten sposób.
git branch -a
) pokazuje gałęzie na pilocie, ale jeśli spróbujesz sprawdzić którekolwiek z nich, będziesz w stanie „odłączonej HEAD”. Następna odpowiedź w dół (drugi najbardziej pozytywny) odpowiada na inne pytanie (a mianowicie: jak wyciągnąć wszystkie gałęzie, i to znowu działa tylko dla tych, które śledzisz lokalnie). Kilka komentarzy wskazuje, że można przeanalizowaćgit branch -a
wyniki za pomocą skryptu powłoki, który lokalnie śledziłby wszystkie zdalne gałęzie. Podsumowanie: Nie ma natywnego sposobu na robienie tego, co chcesz, i tak może nie być tak świetny pomysł.