Я делаю:
git clone ssh://user@host.com/home/user/private/repos/project_hub.git ./
Я получаю:
Фатальный: путь назначения '.' уже существует и не является пустым каталогом.
Я знаю путь. уже существует. И я могу заверить, что каталог пуст. (Я делаю ls внутри и ничего не вижу!)
Что мне здесь не хватает, чтобы клонировать этот проект в текущий каталог?
ls -a
, вы видите.git
каталог?Ответы:
просто поставьте точку рядом с ней
От
git help clone
:Поэтому убедитесь, что каталог пуст (проверьте с помощью
ls -a
), иначе команда не выполнится .источник
ls -la
mkdir
создает жесткие ссылки.
и..
по умолчанию, так что новый каталог технически "пуст" в системах на основе Unix, вообще? Я имею в виду, я думаю , вы могли быunlink .
и ,unlink ..
но это может привести к вам огромные проблемы позже , если вы забыли восстановить связь снова после клонирования ....Следующее, вероятно, не полностью эквивалентно клону во всех случаях, но сработало для меня:
В моем случае это создает
.git/config
файл, эквивалентный тому, который я получаю при выполнении клонирования.источник
*
(игнорируйте все), я мог работать,git checkout master
даже если в папке уже были некоторые другие файлы. Затем все зафиксированные файлы из хранилища были клонированы (и временный .gitignore был перезаписан соответствующим .gitignore из репозитория). Все сработало чудесно. Это должно произойти само по себе, используяgit clone -f
что-то.-t \*
не нужно, так как это по умолчанию.git remote set-head origin -a
может пригодиться Он устанавливает исходную ветку branch (refs/remotes/origin/HEAD
), как это установлено в удаленном хранилище.git clone
делает это автоматически, в отличие отgit remote add -f
.@ Андрей четко ответил здесь . Но так же просто, как это работает, даже если каталог не пустой:
источник
<repository-url>
также может быть локальный репо, какgit remote add origin /path/to/existing/repo
Чтобы быть уверенным, что вы можете клонировать репозиторий, перейдите в любой временный каталог и клонируйте проект там:
Это клонирует ваши вещи в
project_hub
каталог.Когда клонирование закончится, вы можете переместить этот каталог куда хотите:
Это безопасно и не требует никаких магических вещей вокруг.
источник
/path/to/new/location
каталоге, что, конечно, не является предметом вопроса.источник
Делать
Каталог должен быть пустым
источник
Хм ... указание абсолютного текущего пути с помощью
$(pwd)
сработало для меня.версия git: 2.21.0
источник
Если текущий каталог пуст, то это будет работать:
источник
В дополнение к ответу @ StephaneDelcroix, перед использованием:
убедитесь, что ваш текущий каталог пуст с помощью
источник
Решение: В этом случае решение использовало
dot
, поэтому:rm -rf .* && git clone ssh://user@host.com/home/user/private/repos/project_hub.git .
rm -rf .* &&
может быть опущено, если мы абсолютно уверены, что каталог пуст.Кредиты идут: @ Джеймс Маклафлин на комментарии ниже.
источник
ls -d .*
. ..
me: ~ / tmp / tmp / tmp $rm -rf ./.*
«безопаснее», если вы просто удаляете скрытые (точечные) файлы и каталоги под текущим каталогом (точно так же, как @stackunderflow указано передо мной). Ноrm -rf
это опасная команда для неопытных пользователей, поэтому будьте осторожны с ней! Просто мои 2 цента..git
послеgit init
(я это знал)-rf
удалять нормальные файлы. Пожалуйста, рассмотрите возможность удаления этого ответа или хотя бы принятия другого.Улучшение ответа @ GoZoner:
Команда shopt взята из этого SO ответа и изменяет поведение команды 'mv' в Bash, добавляя в нее dotfiles, которые вам нужно будет включить в каталог .git и любые другие скрытые файлы.
Также обратите внимание, что это гарантированно будет работать как есть, только если текущий каталог (.) Пуст, но он будет работать до тех пор, пока ни один из файлов в клонированном хранилище не будет иметь того же имени, что и файлы в текущем каталоге. Если вам все равно, что находится в текущем каталоге, вы можете добавить опцию -f (force) к команде 'mv'.
источник
У меня была такая же потребность. В моем случае у меня была стандартная веб-папка, которая создается при установке веб-сервера. Для целей этой иллюстрации скажем, что это
/server/webroot
и webroot содержит другие стандартные файлы и папки. В моем репо только есть файлы, специфичные для сайта (html, javascript, CFML и т. Д.)
Все, что мне нужно было сделать, это:
Вы должны быть осторожны, чтобы выполнить git init в целевой папке, потому что если вы НЕ сделаете, произойдет одно из двух:
Это НЕ мешало ни одному из «стандартных» файлов, которые есть в моей папке webroot, но мне нужно было добавить их в файл .gitignore, чтобы предотвратить их случайное добавление при последующих фиксациях.
Это кажется простым способом «клонировать» в непустую директорию. Если вы не хотите, чтобы файлы .git и .gitignore создавались при извлечении, просто удалите их после извлечения.
источник
Дальнейшее улучшение ответа @ phatblat :
как один лайнер:
git clone --no-checkout <repository> tmp && mv tmp/.git . && rmdir tmp && git checkout master
источник
источник
используйте. (точка) в конце вашей команды, как показано ниже
git clone URL .
источник
fatal: destination path '.' already exists and is not an empty directory.
Вот что я нашел:
Я вижу это:
Среди моих поисков я наткнулся на:
https://couchpota.to/forum/viewtopic.php?t=3943
Ищите запись от Клинтона. Холл ... Если вы попробуете это (как я сделал), вы, вероятно, получите
access denied
ответ, был мой 1-й ключ, поэтому первоначальная ошибка (для меня) фактически ускользала от неправильного корня вопрос.Решение для этого в Windows: убедитесь, что вы запустили
cmd
илиgit elevated
, затем запустите:Выше было моей проблемой, и просто повышение работало для меня.
источник
Решение
Windows
заключается в том, чтобы клонировать хранилище в другую папку, а затем скопировать и вставить в исходное местоположение или просто скопировать.git
невидимую папку.источник
Удаление с
может привести вас к неприятностям или еще некоторым ошибкам.
Если у вас есть / path / to / folder, и вы хотите удалить все внутри, кроме этой папки, просто запустите:
источник
Поэтому я исправил эту же ошибку, удалив скрытую папку .git в моем корневом каталоге, а затем добавив точку в репозиторий git clone. в моей папке root / dist. Это в контексте проекта веб-пакета vue-cli. То, что все остальные говорят правильно, обычно означает, что у вас есть отслеживание git либо в папке, в которую вы пытаетесь клонировать, либо в родительской папке, либо в корне рассматриваемой папки!
источник
источник
если репозиторий закрыт, сначала добавьте свой ssh-ключ: => git clone git@github.com: yourusername / yourrepo.git, иначе используйте => git clone https://github.com/yourusername/yourrepo.git
источник
полезно создать новый файл
mkdir filename
, затем запустить командуgit clone xxxxx
, это работает на моем компьютереисточник
Я видел этот вопрос очень много раз - и я просто хочу отметить, что
git pull
из вашего каталога все получится.Если я не пропустил что-то здесь - это сработало для меня.
источник
git pull
ничего не будет делать, если вы не определили хранилище, что является важной частью того, чтоgit clone
делает.