Как получить 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
- Если есть файл .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
из вашего каталога сделает трюк.
Если мне не хватает чего-то здесь - это сработало для меня.