Как заставить Git клонировать в текущий каталог - PullRequest
424 голосов
/ 26 марта 2012

Я делаю:

git clone ssh://user@host.com/home/user/private/repos/project_hub.git ./

Я получаю:

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

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

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

Ответы [ 23 ]

6 голосов
/ 04 августа 2017

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

/server/webroot

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

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

cd /server/webroot

git init

git pull [url to my repo.git]

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

  1. git pull просто завершится с сообщением об отсутствии git-файла, в моем случае:

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

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

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

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

2 голосов
/ 31 марта 2019

Хмм ... указание пути абсолютного тока с использованием $(pwd) сработало для меня.

git clone https://github.com/me/myproject.git $(pwd)

версия git: 2.21.0

2 голосов
/ 15 июня 2017
shopt -s dotglob
git clone ssh://user@host.com/home/user/private/repos/project_hub.git tmp && mv tmp/* . && rm -rf tmp
2 голосов
/ 28 февраля 2019

Дальнейшее совершенствование @ phatblat's answer :

git clone --no-checkout <repository> tmp \
  && mv tmp/.git . \
  && rmdir tmp \
  && git checkout master

как одного лайнера:

git clone --no-checkout <repository> tmp && mv tmp/.git . && rmdir tmp && git checkout master

1 голос
/ 22 марта 2017

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

git clone URL .

0 голосов
/ 22 марта 2017

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

0 голосов
/ 05 марта 2019

Просто удалите (или переместите) содержимое, включая каталог .git, из данного каталога.
Автоматизированные инструменты, такие как Rebuild для Android-студии, решат проблему за вас.

Подробнее:
Ошибка, показанная для меня, была для jarresolver git repo
показанный путь temp\jarresolver\

Я только что удалил содержимое каталога temp\jarresolver\, включая скрытый каталог .git,

Вот и все, все работает, клонирование не требуется.
Когда я сделал Rebuild, клонирование и сборка Android-студии прошло успешно.

0 голосов
/ 24 февраля 2019

Решение для Windows состоит в том, чтобы клонировать хранилище в другую папку, а затем скопировать и вставить в исходное местоположение или просто скопировать .git невидимую папку.

0 голосов
/ 20 апреля 2018

Поэтому я исправил эту же ошибку, удалив скрытую папку .git в моем корневом каталоге, а затем добавив точку в репозиторий git clone. в моей папке root / dist. Это в контексте проекта vue-cli webpack. То, что все остальные говорят правильно, обычно означает, что у вас есть отслеживание git либо в папке, в которую вы пытаетесь клонировать, либо в родительской папке, либо в корне рассматриваемой папки!

0 голосов
/ 13 февраля 2015

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

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

...