git clone без папки проекта


86

Я предоставил доступ к серверу и хочу клонировать репозиторий git в свою корневую папку. Но когда я сделаю git clone, он создаст мне папку с именем проекта, а моя папка проекта - это мой корень. У меня нет доступа к моей родительской папке, мой корень

/var/www/sites/mysite/

и когда я сделаю клонирование, структура папок будет

/var/www/sites/mysite/mysite

2
убедитесь, что не доставляете .git на выбранный вами apache / веб-сервер.
— mnagel

Ответы:


198

git cloneпринимает последний аргумент, который является целевым каталогом, по умолчанию это имя проекта, но вы можете его изменить. В вашем случае вы, вероятно, захотите просто .:

$ git clone origin-url .

Но обратите внимание, что из man git-clone:

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


4
git clone @rodrigo ./heaven
— a_m_dev 03

А как насчет клонирования на два уровня в глубину? У меня две папки поверх pom.xml?
— Bionix1441

1
@ Bionix1441: Я не знаю о вашей структуре каталогов, но если вы на два уровня ниже, просто пишите git clone aaa/bbb. Если вы хотите подняться на два уровня выше, вы можете попробовать, git clone ..но это не сработает, потому что ваш родительский каталог никогда не бывает пустым.
— Родриго

Структура следующая folder1\folder2\pom.xml, мне нужны только pom.xmlпапки и на том же уровне, что иpom.xml
— Bionix1441

36

Вы также можете просто настроить новое репо, а затем удаленное отслеживание и ветку:

git init .
git remote add origin git@github.com:user/repo.git
git fetch origin
git checkout master

Это все равно не сработает, если в репо есть родительская папка
— Hittz

Пришлось также настроить ветвь восходящего потока для соответствия: git branch --set-upstream-to=origin/master master Затем пришлось отправить локальные изменения в удаленную ветвь: git push --force это заменило старую удаленную ветку моей локальной обновленной копией.
— Daniel ZA

8

Это также хорошо работает в Windows.

git init
git remote add origin git@github.com:user/repo.git
git pull origin master

5

Помните, что репозиторий git - это просто структура каталогов, в которой вы его храните. Это означает, что когда вы клонируете репозиторий в неправильный каталог, вы можете просто переместить содержимое каталога в любое другое место, где захотите, и данные репозитория останутся нетронутыми. Так, например, вы можете запустить следующие команды из командной строки:

$ mv /var/www/sites/mysite/mysite/* /var/www/sites/mysite`
$ mv /var/www/sites/mysite/mysite/.* /var/www/sits/mysite`
$ rmdir /var/www/sites/mysite/mysite

4

Вы можете клонировать свой проект в подпапку, и они переместят все файлы, включая .gitпапку, в родительскую папку (ваш корень).


3
почему это не может быть сделано проще, например, git clone git@github.com: что угодно. \
— dzona

может, увидишь ответ Родригоса. но я знаю, что репозиторий git - это просто набор файлов, которые можно свободно перемещать, этот ответ легко запомнить.
— mnagel

git clone git @ github: me / name.git.
— Салман Махмуд,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.