2013-03-28 14 views
24

Próbuję sklonować zdalne repozytorium na githubie, ale jest duże i moje połączenie nie wydaje się być wystarczająco stabilne, więc nie mogę sklonować go pomyślnie.Jak sklonować repozytorium git z jego kodu pocztowego

Ale pomyślnie pobrałem .zip repozytorium.

Czy istnieje sposób na użycie tego zipa, ponieważ został stworzony przez git clone, więc mogę naciskać, ciągnąć itp ..?

+3

możliwe duplikat ([Jak wypełnić clone git dla dużego projektu na niestabilnym połączeniu?] http://stackoverflow.com/questions/3954852/how-to-complete-a-git-clone-for-a-big-project-on-an-unstable-connection) – kan

Odpowiedz

16

A related po here zapewnia informacje potrzebne, aby pobrać katalog .git i uprościć odpowiedź, że umläute stanowił:

  • chwycić katalogu .git przez klonowanie gołego repozytorium

    $ mkdir repo 
    $ git clone --bare http://github/user/repo repo 
    
  • Producent katalogu .git i przenieść sklonowane pliki

    $ mkdir repo/.git 
    $ mv repo/* repo/.git 
    
  • Rozpakuj repozytorium

    $ unzip repo.zip 
    
  • Ponownie zainicjować repozytorium

    $ cd repo 
    $ git init 
    
  • Sprawdź jesteś sync'ed

    $ git pull 
    
  • Reset głowę, aby oczyścić status

    $ git reset HEAD 
    
  • Oto dziennik dla lokalizacji repo ... repo - http://github.com/udacity/fullstack-nanodegree-vm

    $ git log 
    commit ebcbda650bc81d7f4856f5314a0689cea5b43086 
    Merge: 574774b b5b787e 
    Author: Karl Krueger <[email protected]> 
    Date: Tue Apr 7 11:39:54 2015 -0700` 
    
         Merge pull request #3 from pmallory/sharedDirAlert 
    
         Add a login alert to explain how to access Vagrant's shared directory 
    
    commit b5b787efdb1ecec0c3c9c7f9c0fd4732f984fcb3 
    Author: Philip Mallory <[email protected]> 
    Date: Mon Apr 6 15:40:32 2015 -0700` 
    
         move the alert into the motd 
    
    commit b8012f33c86b0d19fc4c2b972af092e88d00978f 
    Author: Philip Mallory <[email protected]> 
    Date: Mon Apr 6 14:32:01 2015 -0700` 
    
         Add a login alert to explain how to access Vagrant's shared directory 
    
    commit 574774ba29ccd661154431d5600240f090440c37 
    Author: Lorenzo Brown <[email protected]> 
    Date: Wed Mar 11 14:08:02 2015 -0700` 
    
         Update pg_config.sh 
    
         Added installs for Auth&Auth 
    
    commit 88fc5537b1a0017a1d76af4587a22412473809a4 
    Author: Lorenzo Brown <[email protected]> 
    Date: Wed Mar 4 13:00:25 2015 -0800` 
    
         Update and rename vagrant to vagrant/catalog/README.txt 
    
    commit f978cdc14c62b7295d8da1a95452faaa1bd108b8 
    Author: Lorenzo Brown <[email protected]> 
    Date: Wed Feb 4 11:06:03 2015 -0800` 
    
         Update Vagrantfile 
    
         switched to port forwarding on 8080 
    
    commit d6a3a26578ef3c6d01d28abca76d817938892c7f 
    Author: Lorenzo Brown <[email protected]> 
    Date: Tue Feb 3 14:52:34 2015 -0800` 
    
         Update Vagrantfile 
    
         Added: 
    
         config.vm.network "forwarded_port", guest: 80, host: 8080 
         config.vm.network "forwarded_port", guest: 5000, host: 5000 
    
         FSF uses these two ports for lessons 2 & 3 respectively. 
    
    commit 752a79e408c7328ef7f1766d1b97bb468ffed90a 
    Author: Mike Wales <[email protected]> 
    Date: Mon Feb 2 11:21:29 2015 -0800` 
    
         Removed .vagrant directory 
    
    commit 5af9d19adf9ab19b1d886f6cc78e556f864b42dd 
    Author: Mike Wales <[email protected]> 
    Date: Mon Feb 2 11:16:45 2015 -0800` 
    
         Initial commit. 
    
+0

Więc init widzisz, że masz już dane na temat repo? Ale zasadniczo tracisz całą historię jak klon z 0 głębokim, prawda? Spróbuję tego, jeśli praca przyjmuję jako poprawną odpowiedź. ty! – Lesto

+0

Hi @lesto Tak, ** 'init' ** widzi istniejące dane o repo, ale o ile wiem, historia jest nadal dołączona (w przeciwieństwie do prostego klonu). Zobacz mój przykład powyżej Pobrałem plik zip dla [udacity/fullstack-nanodegree-vm ] [1], wykonałem procedurę, a następnie pokazałem log, który odzwierciedla wszystkie zmiany dla tej gałęzi. [1]: http: //github.com/ udacity/fullstack-nanodegree-vm – fracjackmac

+0

Zapomniałem wspomnieć o t hat @ [o172.net] (http://stackoverflow.com/users/997708/o172-net) Komentarz poniżej był niezwykle pomocny w ustaleniu, czym naprawdę jest ___bare___ repozytorium. – fracjackmac

11

Jeśli pobierzesz repozytorium (w tym katalog .git), jest to dość proste.

  • rozpakować repozytorium

    $ unzip repo.zip 
    
  • skonfigurować remote w repozytorium, które wskazuje na klonie-URI

    $ cd repo 
    $ git init 
    $ git remote add origin https://github.com/user/repo.git 
    
  • resync repozytoriach

    $ git pull 
    

W praktyce wydaje się, że „zip” pliki do pobrania z github nie containt katalog, .git, więc to nie pomoże :-(

Prawdopodobnie najlepszym trzeba zatem zrobić klon na komputerze, który ma stabilną dostępu, a następnie spakuj katalogu .git i przynieś że jakoś ....

+0

również wypróbowany z pracy, ale wciąż nieszczęśliwy .. uff ale mogę spróbować pobrać folder .git z http ... tak zaakceptowany jako odpowiedź – Lesto

+0

"W praktyce wygląda na to, że pliki" zip "pobierane z github nie zawierają katalogu .git" Czyż nie? sed to? :( – endolith

+0

"W praktyce wygląda na to, że pliki" zip "pobierane z github nie powodują zmian w katalogu .git, więc to nie pomaga" Jaki jest sens pozostawienia tej odpowiedzi? – Anwar

1

jedynym zip jak alternatywa dla klonowania wymienia "bundles", ale obawiam się, że nie github oferować tworzenie/pobieranie pakietów.

Archiwum zip do pobrania z github jest tylko migawką jednego konkretnego zatwierdzenia historii repozytorium (zwykle jest to czubek oddziału) i nie zawiera żadnej historii — ta funkcja jest przeznaczona do automatycznego dostarczania użytkownikom twoja baza kodu (nie deweloperzy!) z możliwością wygodnego pobrania migawki kodu źródłowego projektu. Zauważ, że zwykli użytkownicy i, powiedzmy, opiekunowie niższego szczebla pakujący twoje oprogramowanie dla systemów operacyjnych, zwykle nie klonują całych historii, ale raczej pracują z paczkami.

Innymi słowy, pobieranie archiwum zip działa tak, jak uruchomienie git archive po stronie zdalnej, a następnie przekazanie wynikowego pliku.

Należy również zauważyć, że repozytoria hostowane na github (i innych dostawcach hostingu Git) są "puste", to znaczy nie zawierają podkatalogu ".git".

W każdym razie wydaje się, że jedynym sposobem rozwiązania tego problemu jest znalezienie szybkiego i niezawodnego łącza i wykonanie początkowego pobrania za jego pomocą.

Pamiętaj, że rzeczy zmieniają się, jeśli nie masz pełnej historii. Następnie można użyć tak zwanego "płytkiego klonowania", przekazując parametr wiersza polecenia "--depth" do git clone.

+0

NB "nagie" repozytorium jest w zasadzie IS .git katalog – helloPiers

2

Choć przyjął odpowiedź załatwia sprawę, to wydaje się nieco bardziej prosto do przodu.

unzip <repo>.zip 
cd <repo> 
git init 
git add . 
git remote add origin https://github.com/<user>/<repo>.git 
git remote update 
git checkout master 

Wystarczy upewnić się, aby zastąpić <user> & <repo> z nazwą użytkownika github i nazwę repo;)

+1

Powinno to być 'git add .' not 'git add. Right? – Anwar