Как получить Git для клонирования в текущий каталог

Я делаю:

git clone ssh://[email protected]/home/user/private/repos/project_hub.git ./

Я получаю:

Fatal: путь назначения. уже существует и не является пустым каталог.

Я знаю путь. уже существует. И я могу заверить, что каталог пуст. (Я внутри, и ничего не вижу!)

Что мне здесь не хватает, чтобы клонировать этот проект в текущий каталог?

Ответ 1

Решение: В этом случае решение использовало dot, поэтому: rm -rf .* && git clone ssh://[email protected]/home/user/private/repos/project_hub.git .

rm -rf .* && может быть опущен, если мы абсолютно уверены, что каталог пуст.

Кредиты идут: @James McLaughlin о комментариях ниже.

Ответ 2

просто поставьте точку рядом с ней

git clone [email protected]:user/my-project.git .

От git help clone:

Клонирование в существующий каталог разрешено только в том случае, если каталог пуст.

Итак, убедитесь, что каталог пуст (проверьте с помощью ls -a), иначе команда не будет выполнена.

Ответ 3

Вполне вероятно, что во всех случаях это не полностью эквивалентно клону, но помогло:

git init .
git remote add -t \* -f origin <repository-url>
git checkout master

В моем случае это создает файл .git/config, который эквивалентен тому, который я получаю при выполнении клонирования.

Ответ 4

@Андрей ответил на это ясно здесь. Но так же просто, как это работает, даже если каталог не пуст:

git init .
git remote add origin <repository-url>
git pull origin master

Ответ 5

Чтобы убедиться, что вы можете клонировать репо, перейдите в любой временный каталог и выполните клонирование проекта:

git clone ssh://[email protected]/home/user/private/repos/project_hub.git

Это приведет к клонированию вашего материала в каталог project_hub.

Как только клонирование завершено, вы можете перемещать этот каталог везде, где хотите:

mv project_hub /path/to/new/location

Это безопасно и не требует никаких магических вещей.

Ответ 6

git clone your-repo tmp && mv tmp/.git . && rm -rf tmp && git reset --hard

Ответ 7

В дополнение к ответу @StephaneDelcroix перед использованием:

git clone [email protected]/my-project.git .

убедитесь, что ваш текущий каталог пуст, используя

ls -a

Ответ 8

Если текущий каталог пуст, это будет работать:

git clone <repository> foo; mv foo/* foo/.git* .; rmdir foo

Ответ 9

Улучшение ответа @GoZoner:

git clone <repository> foo; shopt -s dotglob nullglob; mv foo/* .; rmdir foo

Команда shopt берется из этого SO-ответа и изменяет поведение команды mv на Bash, чтобы включить dotfiles, что вам нужно будет включая каталог .git и любые другие скрытые файлы.

Также обратите внимание, что это гарантируется только как-есть, если текущий каталог (.) пуст, но он будет работать до тех пор, пока ни один из файлов в клонированном репо не будет иметь то же имя, что и файлы в текущем каталоге, Если вам все равно, что в текущем каталоге, вы можете добавить параметр -f (force) в команду "mv".

Ответ 10

Do

git clone https://[email protected]/user/projectname.git .

Каталог должен быть пустым

Ответ 11

используйте. (точка) в конце вашей команды, как показано ниже

git клон URL.

Ответ 12

Вот что я нашел:

Я вижу это:

fatal: destination path 'CouchPotatoServer' already exists and is not an empty directory.

Среди моих поисков я наткнулся на:

https://couchpota.to/forum/viewtopic.php?t=3943

Ищите запись Clinton.Hall... Если вы попробуете это (как и я), вы, скорее всего, получите ответ access denied, был мой первый ключ, поэтому первоначальная ошибка (для меня) была фактически ускользает от неправильной проблемы с корнем.

Решение для этого в окнах: убедитесь, что вы запустили cmd или git elevated, затем выполните:

git clone https://github.com/RuudBurger/CouchPotatoServer.git

Выше была моя проблема, и для меня это работало просто.

Ответ 13

Удаление с помощью

rm -rf. *

может вызвать у вас проблемы или некоторые ошибки.

Если у вас есть /path/to/folder и вы хотите удалить все внутри, но не в эту папку, просто запустите:

rm -rf/path/to/folder/*

Ответ 14

shopt -s dotglob
git clone ssh://[email protected]/home/user/private/repos/project_hub.git tmp && mv tmp/* . && rm -rf tmp

Ответ 15

У меня была такая же потребность. В моем случае у меня была стандартная веб-папка, созданная установкой веб-сервера. Для этой иллюстрации предположим, что это

/server/webroot

и webroot содержит другие стандартные файлы и папки. В моем репо есть только файлы с конкретным сайтом (html, javascript, CFML и т.д.).

Все, что мне нужно было сделать:

cd /server/webroot

git init

git pull [url to my repo.git]

Вам нужно быть осторожным, чтобы выполнить git init в целевой папке, потому что если вы НЕ сделаете одну из двух вещей:

  • Вывод git просто завершится неудачей с сообщением о файле git, в моем случае:

fatal: не репозиторий git (или любой из родительских каталогов):.git

  1. Если есть файл .git где-то в родительском пути к вашей папке, то ваше репо будет создано в родительском доме THAT, содержащем файл .git. Это случилось со мной, и я был удивлен этим; -)

Это НЕ нарушало какие-либо "стандартные" файлы, которые у меня есть в папке webroot, но мне нужно было добавить их в файл .gitignore, чтобы предотвратить непреднамеренное добавление их к последующим коммитам.

Это похоже на простой способ "клонировать" в непустой каталог. Если вам не нужны файлы .git и .gitignore, созданные притяжением, просто удалите их после pull.

Ответ 16

полезно создать новый файл mkdir filename, а затем запустить команду git clone xxxxx, он работает на моем компьютере

Ответ 17

Если репо является приватным сначала добавьте ключ ssh. use = > git clone git @github.com: yourusername/yourrepo.git еще use = > git clone https://github.com/yourusername/yourrepo.git

Ответ 18

Я видел этот вопрос столько раз - и я просто хочу указать, что git pull из вашего каталога сделает трюк.

Если мне не хватает чего-то здесь - это сработало для меня.