Klonuj zawartość repozytorium GitHub (bez samego folderu)

232

Chciałbym git clonezawartości repozytorium, które mam na GitHub . Kiedy git clone(git @ github: me / name.git ...) dostaję folder o nazwie, name/a wewnątrz nazwy mam swoją zawartość ... Jak uzyskać JUST zawartość?

mazlix
źródło
Aby faktycznie pominąć pobieranie niepotrzebnych obiektów w celu zaoszczędzenia zasobów sieciowych: stackoverflow.com/questions/600079/...
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Odpowiedzi:

313

Jeśli bieżący katalog jest pusty, możesz to zrobić za pomocą:

git clone git@github:me/name.git .

(Zwróć uwagę .na końcu, aby określić bieżący katalog.) Oczywiście spowoduje to również utworzenie .gitkatalogu w bieżącym folderze, a nie tylko kodu źródłowego z projektu.

Ten opcjonalny [directory]parametr jest udokumentowany na git clonestronie podręcznika , która wskazuje, że klonowanie do istniejącego katalogu jest dozwolone tylko wtedy, gdy ten katalog jest pusty.

Mark Longair
źródło
2
Niestety, to nie działa, jeśli istnieją inne niepowiązane katalogi już w tym samym katalogu. Poszukuję rozwiązania. Komunikat o błędzie to: „fatal: destination destination”. ” już istnieje ... ”
John Little
12
Katalog, do którego git klony musi być pusty
jolyonruss
1
@HumaunRashid Dodaj .omówione w odpowiedzi: git clone https://github.com/humaun21/Test .. I tak, [email protected]/name.gitjest symbolem zastępczym dla Twojego rzeczywistego adresu repozytorium git.
Aaron Campbell
1
@JohnLittle Miałem ten sam problem, okazuje się, że ukryty jest plik .DS_Store. Po prostu rm .DS_Storei możesz już iść.
Selrond
1
Jeśli pracujesz na systemie Linux, musisz upewnić się, że katalog jest pusty, w tym sprawdzić ukryte pliki i podkatalogi. Możesz to zrobić za pomocą ls -a. Powinieneś mieć tylko. i .. jako wynik. To nie zadziała inaczej
Ayo Makanjuola
156

Niestety, to nie działa, jeśli istnieją inne niepowiązane katalogi już w tym samym katalogu. Poszukuję rozwiązania. Komunikat o błędzie to: „fatal: destination destination”. ” już istnieje...".

Rozwiązaniem w tym przypadku jest:

git init
git remote add origin [email protected]:me/name.git
git pull origin master

Ten przepis działa, nawet jeśli istnieją inne katalogi w tym, w którym chcesz się zameldować.

John Little
źródło
Hej, w tym pojawia się błąd taki jak Odmowa zezwolenia <klucz publiczny>. Odległy koniec rozłączył się niespodziewanie.
Stan
Czy nie powinno być github.comtam później git remote ..., a nie tylko github?
AMN
5
Ta odpowiedź powinna była zostać zaakceptowana. działa świetnie.
vikramvi
Przeczytałem gdzie indziej tutaj, że musisz uruchomić git fetch --allprzed git pull origin master, ponieważ jeśli na repo znajdują się inne gałęzie, git pullnie dostanę ich, chyba że użyjesz go fetchnajpierw. Czy to jest poprawne?
Alex G
38

Jeśli folder nie jest pusty, działała dla mnie nieco zmodyfikowana wersja odpowiedzi @ JohnLittle:

git init
git remote add origin https://github.com/me/name.git
git pull origin master

Jak zauważył @ peter-cordes, jedyną różnicą jest użycie protokołu https zamiast git, dla którego musisz mieć skonfigurowane klucze SSH .

Tomáš Zemanovič
źródło
Jaką wersję git używasz? To mi nie zadziałało. Nadal nie pozwala mi to skonfigurować, ponieważ
katalog
@ guribe94 git wersja 2.5.0
Tomáš Zemanovič
3
To jest ta sama odpowiedź, używając anonimowego protokołu https zamiast protokołu git przez ssh (wymagającego konta github z skonfigurowaną parą kluczy ssh).
Peter Cordes
15

Możesz określić katalog docelowy jako drugi parametr git clonepolecenia, dzięki czemu możesz:

git clone <remote> .

Spowoduje to sklonowanie repozytorium bezpośrednio w bieżącym katalogu lokalnym.

Laurent Pireyn
źródło
2

aby sklonować repozytorium git do bieżącego i pustego folderu (nie git init), a jeśli nie używasz ssh:

git clone https://github.com/accountName/repoName.git .
palcowiec
źródło
1

ten pracownik dla mnie

git clone <repository> .
Diego Santa Cruz Mendezú
źródło