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ść?



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.


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, git@github.me/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 git@github.com: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ć.


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 .


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.


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 .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.