Robię:
git clone ssh://[email protected]/home/user/private/repos/project_hub.git ./
Dostaję:
Fatal: ścieżka docelowa „.” już istnieje i nie jest pustym katalogiem.
Znam ścieżkę. już istnieje. I zapewniam, że katalog jest pusty. (Robię to w środku i nic nie widzę!)
Czego mi brakuje tutaj, aby sklonować ten projekt do bieżącego katalogu?
ls -a
, czy widzisz.git
katalog?Odpowiedzi:
po prostu umieść obok niego kropkę
Od
git help clone
:Upewnij się więc, że katalog jest pusty (sprawdź za pomocą
ls -a
), w przeciwnym razie polecenie się nie powiedzie.źródło
ls -la
mkdir
tworzy twarde linki do.
i..
domyślnie, więc czy nowy katalog jest technicznie „pusty” w systemach uniksowych? To znaczy, myślę, mógłbyśunlink .
iunlink ..
ale to może spowodować ogromne problemy później, jeśli zapomni się ponownie połączyć ponownie po klonowaniu ....Poniższe elementy prawdopodobnie nie są w pełni równoważne klonowi we wszystkich przypadkach, ale załatwiły sprawę:
W moim przypadku powoduje to utworzenie
.git/config
pliku równoważnego z plikiem, który otrzymuję podczas klonowania.źródło
*
(zignoruj wszystko), mogłem wykonać,git checkout master
mimo że w folderze były już inne pliki. Następnie wszystkie zatwierdzone pliki z repozytorium zostały sklonowane (a tymczasowy plik .gitignore został zastąpiony odpowiednim plikiem .gitignore z repozytorium). Wszystko działało cudownie. Powinno tak się stać samo przez się, używającgit clone -f
czegoś.-t \*
to niepotrzebne, ponieważ jest domyślne.git remote set-head origin -a
może się przydać. Ustawia domyślną gałąź origin (refs/remotes/origin/HEAD
) tak, jak jest ustawiona w zdalnym repozytorium.git clone
robi to automatycznie, w przeciwieństwie dogit remote add -f
.@Andrew odpowiedział na to wyraźnie tutaj . Ale tak proste, jak to działa, nawet jeśli katalog nie jest pusty:
źródło
<repository-url>
może to być również lokalne repozytorium, ponieważgit remote add origin /path/to/existing/repo
Aby mieć pewność, że można sklonować repozytorium, przejdź do dowolnego katalogu tymczasowego i sklonuj tam projekt:
Spowoduje to sklonowanie twoich rzeczy do
project_hub
katalogu.Po zakończeniu klonowania możesz przenieść ten katalog gdziekolwiek chcesz:
Jest to bezpieczne i nie wymaga żadnych magicznych rzeczy.
źródło
/path/to/new/location
katalogu, co z pewnością nie jest celem pytania.źródło
Zrobić
Katalog musi być pusty
źródło
Hmm ... określenie ścieżki prądu absolutnego za pomocą
$(pwd)
działało dla mnie.wersja git: 2.21.0
źródło
Jeśli bieżący katalog jest pusty, to zadziała:
źródło
Oprócz odpowiedzi @ StephaneDelcroix, przed użyciem:
upewnij się, że twój aktualny katalog jest pusty, używając
źródło
Rozwiązanie: W tym przypadku w rozwiązaniu wykorzystano
dot
:rm -rf .* && git clone ssh://[email protected]/home/user/private/repos/project_hub.git .
rm -rf .* &&
można pominąć, jeśli mamy absolutną pewność, że katalog jest pusty.Podziękowania dla: @James McLaughlin w komentarzach poniżej.
źródło
ls -d .*
. ..
me: ~ / tmp / tmp / tmp $rm -rf ./.*
jest „bezpieczniejszy”, jeśli po prostu usuwasz ukryte (kropkowe) pliki i katalogi w bieżącym katalogu (tak jak wcześniej powiedział mi @stackunderflow). Jestrm -rf
to niebezpieczne polecenie dla niedoświadczonych użytkowników, więc bądź ostrożny! Tylko moje 2 centy..git
późniejgit init
(wiedziałem o tym)-rf
usuwać normalnych plików. Proszę rozważyć usunięcie tej odpowiedzi lub przynajmniej zaakceptowanie innej.Poprawianie odpowiedzi @ GoZoner:
Komenda shopt pochodzi z tej odpowiedzi SO i zmienia zachowanie komendy „mv” na Bash, aby uwzględnić pliki kropkowe, do których musisz dołączyć katalog .git i wszelkie inne ukryte pliki.
Należy również pamiętać, że gwarantuje to, że będzie działać tak, jak jest, jeśli bieżący katalog (.) Jest pusty, ale będzie działał, dopóki żaden plik w sklonowanym repozytorium nie będzie miał takiej samej nazwy jak pliki w bieżącym katalogu. Jeśli nie obchodzi Cię, co jest w bieżącym katalogu, możesz dodać opcję -f (force) do polecenia „mv”.
źródło
Miałem tę samą potrzebę. W moim przypadku miałem standardowy folder internetowy, który jest tworzony przez instalację serwera WWW. Na potrzeby tej ilustracji powiedzmy, że tak
/server/webroot
a webroot zawiera inne standardowe pliki i foldery. Moje repozytorium zawiera tylko pliki specyficzne dla witryny (HTML, javascript, CFML itp.)
Musiałem tylko:
Musisz być ostrożny, aby wykonać git init w folderze docelowym, ponieważ jeśli tego nie zrobisz, wydarzy się jedna z dwóch rzeczy:
To NIE przeszkadzało żadnym „standardowym” plikom, które mam w folderze głównym, ale musiałem dodać je do pliku .gitignore, aby zapobiec przypadkowemu dodaniu ich do kolejnych zatwierdzeń.
To wydaje się łatwym sposobem na „klonowanie” do niepustego katalogu. Jeśli nie chcesz, aby pliki .git i .gitignore były tworzone przez ściągnięcie, po prostu usuń je po ściągnięciu.
źródło
Dalsze ulepszanie odpowiedzi @ phatblat :
jako jedna wkładka:
git clone --no-checkout <repository> tmp && mv tmp/.git . && rmdir tmp && git checkout master
źródło
źródło
użyj. (kropka) na końcu polecenia, jak poniżej
URL klonowania git .
źródło
fatal: destination path '.' already exists and is not an empty directory.
Oto, co znalazłem:
Widzę to:
Wśród moich poszukiwań natknąłem się na:
https://couchpota.to/forum/viewtopic.php?t=3943
Poszukaj wpisu Clintona. Hall ... Jeśli spróbujesz tego (tak jak ja), prawdopodobnie dostaniesz
access denied
odpowiedź, była moja pierwsza wskazówka, więc błąd początkowy (dla mnie) faktycznie wymykał się złemu rootowi kwestia.Rozwiązanie tego problemu w systemie Windows: uruchom
cmd
lubgit elevated
, a następnie uruchom:To był mój problem i po prostu podniesienie działało dla mnie.
źródło
Rozwiązaniem
Windows
jest sklonowanie repozytorium do innego folderu, a następnie skopiowanie i wklejenie do oryginalnej lokalizacji lub po prostu skopiowanie.git
niewidocznego folderu.źródło
Usuwanie za pomocą
może sprawić ci kłopoty lub więcej błędów.
Jeśli masz folder / path / to / i chcesz usunąć wszystko w środku, ale nie ten folder, po prostu uruchom:
źródło
Naprawiłem ten sam błąd, usuwając ukryty folder .git w moim katalogu głównym, a następnie dodając kropkę do „repo klonowania git”. w moim folderze root / dist. Jest to w kontekście projektu pakietu internetowego vue-cli. Więc to, co wszyscy mówią, ma rację, zwykle oznacza to, że masz śledzenie git albo w folderze, w którym próbujesz sklonować, albo w folderze nadrzędnym, albo w folderze głównym danego folderu!
źródło
źródło
jeśli repo jest prywatne najpierw dodaj swój klucz ssh użyj => git clone [email protected]: twoja nazwa_użytkownika / yourrepo.git inne użyj => git clone https://github.com/yourusername/yourrepo.git
źródło
warto utworzyć nowy plik
mkdir filename
, a następnie uruchomić poleceniegit clone xxxxx
, działa na moim komputerzeźródło
Wystarczy usunąć (lub przenieść) zawartość, w tym
.git
katalog danego katalogu.Zautomatyzowane narzędzia, takie jak studio Android,
Rebuild
rozwiążą problem.Więcej informacji:
Pokazany błąd
jarresolver
dotyczyłścieżki repozytorium git
temp\jarresolver\
Właśnie usunąłem zawartość
temp\jarresolver\
katalogu, w tym ukryty.git
katalog.To wszystko, wszystko działało, nie wymaga klonowania.
Kiedy to zrobiłem
Rebuild
, samo klonowanie i kompilacja Androida Studio zakończyło się sukcesem.źródło
Widziałem to pytanie wiele razy - i chcę to tylko podkreślić
git pull
z twojego katalogu załatwi sprawę.Chyba że coś mi brakuje - to działało dla mnie.
źródło
git pull
nic nie zrobi, jeśli nie zdefiniowano repozytorium, co jest krytyczną częścią tego, cogit clone
robi.