2013-07-18 12 views
35

I sklonowany repo pomocąJak mogę "cofnąć" klon - pojedynczej gałęzi?

git clone -b <branch name> --single-branch <github url> <target directory>

ten sklonowany tylko ten oddział, ale teraz chcę, aby przełączyć się do kapitana i innych branż. Czy jest jakiś sposób, poza wyczyszczeniem i rozpoczęciem klonowania repozytorium, które mogę cofnąć - preferencję pojedynczego oddziału?

Odpowiedz

56

Można powiedzieć Git wyciągnąć wszystkie branże tak:

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" 
git fetch origin 

Jeśli spojrzeć w .git/config, będzie to wyglądać mniej więcej tak:

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    ignorecase = true 
    precomposeunicode = false 
[remote "origin"] 
    url = https://github.com/owner/repo.git 
    fetch = +refs/heads/master:refs/remotes/origin/master 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 
    rebase = true 

porównałem to do pełnego klonu i zobaczyłem, że jedyną różnicą było "pobranie" pod [remote "origin"].

Uwaga: używam wersji Git 1.8.2. Opcje konfiguracji mogły się zmienić, jeśli używasz starszej wersji Git. Jeśli moje polecenia nie działają, to polecam przejrzeć .git/config, aby zobaczyć, czy możesz zobaczyć coś podobnego.

+1

Chciałem zaoferować specjalne podziękowania, bo zrobił kawał dużo czytania i szukania w Google i nie udało mi się natknąć na coś takiego. – danieltalsky

+1

Cieszę się, że mogę Ci pomóc. Narzędzie wiersza poleceń "git' jest niesamowicie potężne (w rzeczywistości większość poleceń jest zaimplementowana w kategoriach innych poleceń), więc możesz zrobić z nim wiele rzeczy, gdy zrozumiesz, jak jest tworzone repozytorium (w zasadzie jak działa folder '.git'). – henrikhodne

+0

To nie działa dla mnie - po uruchomieniu tych poleceń 'git show-ref tags' nadal nie działa. – felixfbecker

-1

Po prostu dodaj oryginalne repo jako nowy pilot i odłóż go?

git remote add path/to/myrepo myNewOrigin 
git fetch myNewOrigin 

Można nawet usunąć bieżący „pochodzenie” pilota i zmienić nazwę „myNewOrigin” do „pochodzenia”, czy chcesz.

Stamtąd można ciągnąć/scalać/odnawiać.

20

Jeśli chcesz dodać jeden oddział, można wykonać następujące czynności:

git remote set-branches --add origin [remote-branch] 
git fetch origin [remote-branch]:[local-branch] 

Works w wersji git 1.9.1

+0

Jestem zakochany w tobie – user1760150