Как вы клонируете репозиторий Git в определенную папку?
Выполнение команды git clone [email protected]:whatever
создает каталог в моей текущей папке с именем any и отбрасывает содержимое репозитория Git в эту папку:
/httpdocs/whatever/public
Моя проблема в том, что мне нужно содержимое репозитория Git, клонированного в мой текущий каталог, чтобы они отображались в правильном месте для веб-сервера:
/httpdocs/public
Я знаю, как перемещать файлы после того, как я клонировал репозиторий, но это, кажется, сломало Git, и я хотел бы иметь возможность обновлять, просто позвонив git pull
. Как я могу это сделать?
Ответы
Ответ 1
Вариант А:
git clone [email protected]:whatever folder-name
Ergo, для right here
использования:
git clone [email protected]:whatever .
Вариант B:
Переместите папку .git
тоже. Обратите внимание, что папка .git
скрыта в большинстве графических обозревателей файлов, поэтому обязательно отображайте скрытые файлы.
mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/
Первая строка захватывает все обычные файлы, вторая строка захватывает точечные файлы. Также возможно сделать это в одну строку, включив dotglob (т.е. shopt -s dotglob
), но это, вероятно, плохое решение, если вы задаете вопрос, на который отвечает этот ответ.
Еще лучше:
Сохраните свою рабочую копию где-нибудь еще и создайте символическую ссылку. Как это:
ln -s /where/it/is/right/now /the/path/I/want/to/use
Для вашего случая это будет что-то вроде:
ln -sfn /opt/projectA/prod/public /httpdocs/public
Который легко можно изменить, чтобы проверить, если вы этого хотите, т.е.
ln -sfn /opt/projectA/test/public /httpdocs/public
без перемещения файлов. Добавлен -fn
в случае, если кто-то копирует эти строки (-f
является силой, -n
избегает некоторых часто нежелательных взаимодействий с уже существующими и несуществующими ссылками).
Если вы просто хотите, чтобы это работало, используйте вариант А, если кто-то еще собирается посмотреть, что вы сделали, используйте вариант С.
Ответ 2
В этом примере я думаю, что многие люди задают этот вопрос после этого. Если вы находитесь в каталоге, в котором вы хотите загрузить содержимое репозитория git, запустите:
git clone [email protected]:whatever .
"." в конце указывает текущую папку в качестве папки проверки.
Ответ 3
Зайдите в папку. Если папка пуста, то:
git clone [email protected]:whatever .
еще
git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
Ответ 4
Базовое клонирование репозитория Git
Вы клонируете репозиторий с
git clone [url]
Например, если вы хотите клонировать библиотеку Git Drupal Open Framework Стэнфордского университета под названием open_framework, вы можете сделать это следующим образом:
$ git clone git://github.com/SU-SWS/open_framework.git
Это создает каталог с именем open_framework (в вашей текущей локальной файловой системе), инициализирует каталог .git внутри него, извлекает все данные для этого хранилища и извлекает рабочую копию последней версии. Если вы войдете во вновь созданный каталог open_framework, вы увидите там файлы проекта, готовые к работе или использованию.
Клонирование репозитория в определенную локальную папку
Если вы хотите клонировать репозиторий в каталог с именем, отличным от open_framework, вы можете указать это в качестве следующего параметра командной строки:
$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme
Эта команда делает то же самое, что и предыдущая, но целевой каталог называется mynewtheme.
Git имеет несколько различных протоколов передачи, которые вы можете использовать. В предыдущем примере используется протокол git://, но вы также можете увидеть http (s)://или user @server: /path.git, который использует протокол передачи SSH.
Ответ 5
Чтобы клонировать git-репозиторий в определенную папку, вы можете использовать параметр -C <path>
, например
git -C /httpdocs clone [email protected]:whatever
Хотя он по-прежнему будет создавать папку whatever
поверх нее, поэтому для клонирования содержимого хранилища в текущий каталог используйте следующий синтаксис:
cd /httpdocs
git clone [email protected]:whatever .
Note that cloning into an existing directory is only allowed when the directory is empty.
Поскольку вы клонируете в общедоступную папку, рассмотрите возможность ветки вашего Git-репозитория от рабочего дерева с помощью --separate-git-dir=<git dir>
или исключите папку .git
в конфигурации вашего веб-сервера (например, в файле .htaccess
).
Ответ 6
Когда вы перемещаете файлы туда, где вы хотите, перемещаете ли вы каталог .git
? В зависимости от вашей ОС и конфигурации этот каталог может быть скрыт.
Он содержит репо и поддерживающие файлы, в то время как файлы проекта, которые находятся в вашем каталоге /public
, являются только версиями в текущей фиксации выписки (основная ветка по умолчанию).
Ответ 7
Клон:
git clone [email protected]:jittre/name.git
Клонировать "конкретную ветвь":
git clone -b [branch-name] [email protected]:jittre/name.git
Ответ 8
Если вы хотите клонировать в текущую папку, вы должны попробовать следующее:
git clone https://github.com/example/example.git ./
Ответ 9
Чтобы клонировать в текущий рабочий каталог:
git clone https://github.com/link.git
Чтобы клонировать в другой каталог:
git clone https://github.com/link.git./Folder1/Folder2
Надеюсь, поможет :)
Ответ 10
использование
git clone <repository>
Клонируйте хранилище, расположенное в <хранилище>, на локальный компьютер. Исходный репозиторий может находиться в локальной файловой системе или на удаленном компьютере, доступном через HTTP или SSH.
git clone <repo> <directory>
Клонируйте репозиторий, расположенный в <repository>, в папку с именем <directory> на локальном компьютере.
Источник: Настройка хранилища
Ответ 11
Убедитесь, что вы удалите репозиторий .git, если вы пытаетесь проверить предмет в текущем каталоге.
rm -rf .git
, затем git clone https://github.com/symfony/symfony-sandbox.git
Ответ 12
Вот как бы я это сделал, но я сделал псевдоним, чтобы сделать это для меня.
$ cd ~Downloads/git; git clone https:git.foo/poo.git
Возможно, это более элегантный способ сделать это, однако я нашел, что это проще для меня.
Здесь псевдоним, который я создал, чтобы ускорить работу. Я сделал это для zsh, но он должен отлично работать для bash или любой другой оболочки, такой как рыба, xyzsh, fizsh и т.д.
Измените ~/.zshrc
, /.bashrc
и т.д. с вашим любимым редактором (мой - Leafpad, поэтому я напишу $ leafpad ~/.zshrc
).
Мое личное предпочтение, однако, состоит в том, чтобы сделать zsh-плагин для отслеживания всех моих псевдонимов. Вы можете создать персональный плагин для oh-my-zsh, выполнив следующие команды:
$ cd ~/.oh-my-zsh/
$ cd plugins/
$ mkdir your-aliases-folder-name; cd your-aliases-folder-name
# In my case '~/.oh-my-zsh/plugins/ev-aliases/ev-aliases'
$ leafpad your-zsh-aliases.plugin.zsh
# Again, in my case 'ev-aliases.plugin.zsh'
Затем добавьте эти строки в новый созданный пустой файл alises.plugin:
# Git aliases
alias gc="cd ~/Downloads/git; git clone "
(Отсюда замените свое имя моим.)
Затем, чтобы заставить псевдонимы работать, они (вместе с zsh) должны быть отправлены (или что бы там ни называлось). Для этого внутри вашего пользовательского документа плагина добавьте следующее:
## Ev Aliases
#### Remember to re-source zsh after making any changes with these commands:
#### These commands should also work, assuming ev-aliases have already been sourced before:
allsource="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh; clear"
sourceall="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh"
####
####################################
# git aliases
alias gc="cd ~/Downloads/git; git clone "
# alias gc="git clone "
# alias gc="cd /your/git/folder/or/whatever; git clone "
####################################
Сохраните плагин oh-my-zsh и запустите allsource
. Если это не работает, просто запустите source $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh
. Это загрузит источник плагина, который позволит вам использовать allsource
с этого момента.
Я создаю репозиторий Git со всеми моими псевдонимами. Пожалуйста, не стесняйтесь проверить их здесь: Ev dot-files. Пожалуйста, не стесняйтесь развивать и улучшать их в соответствии с вашими потребностями.
Ответ 13
По какой-то причине этот синтаксис не выделяется:
git clone repo-url [folder]
Здесь папка - необязательный путь к локальной папке (которая будет локальным хранилищем).
Git clone
также pull
код из удаленного репозитория в локальный репозиторий. На самом деле это правда:
git clone repo-url = git init + git remote add origin repo-url + git pull
Ответ 14
Если вы используете ssh
для git cloning
, вы можете использовать следующую команду.
git -C path clone [email protected]:path_to_repo.git
например:
git -C /home/ubuntu/ clone [email protected]:kennethreitz/requests.git
доставит репозиторий git для requests
к вашему пути /home/ubuntu/
.
Ответ 15
For Windows user
1> Open command prompt.
2> Change the directory to destination folder (Where you want to store your project in local machine.)
3> Now go to project setting online(From where you want to clone)
4> Click on clone, and copy the clone command.
5> Now enter the same on cmd .
It will start cloning saving on the selected folder you given .
Ответ 16
Хотя все ответы, приведенные выше, хороши, я хотел бы предложить новый метод вместо использования метода символьной ссылки в общедоступном каталоге html, как предложено BEST в принятом ответе. У вас должен быть доступ к настройкам виртуального хоста вашего сервера.
Речь идет о настройке виртуального хоста вашего веб-сервера, напрямую указывающего на каталог репозитория. В Apache вы можете сделать это следующим образом:
DocumentRoot/var/www/html/website/your-git-repo
Вот пример файла виртуального хоста:
<VirtualHost *:443>
ServerName example.com
DocumentRoot /path/to/your-git-repo
...
...
...
...
</VirtualHost>
Ответ 17
Предположим, что вы хотите в папке типа /stuff
, но ваш pull создает каталог под /repo/tokens/
.
Вы можете сделать:
mkdir /stuff
ln -s /repo/tokens /stuff
Что это. Вы закончили.
Ответ 18
Я рекомендую вам перейти по следующей ссылке:
https://help.github.com/en/articles/cloning-a-repository
Если вы получили следующую ошибку при выполнении команды git clone URL command
fatal: unable to access 'URL': Could not resolve host: github.com
Затем используйте следующую команду, чтобы исправить это:
git config --global --unset https.proxy
Ответ 19
Относительно этой строки из исходного сообщения:
"Я знаю, как перемещать файлы после того, как я клонировал репо, но это кажется, нарушает git"
Я могу это сделать, и до сих пор не вижу никаких проблем с моими операциями add, commit, push, pull.
Этот подход изложен выше, но просто не разбит на этапы.
Здесь шаги, которые работают для меня:
- клонировать репо в любую новую временную папку
- cd в эту корневую папку, которую вы клонировали локально
- скопировать все содержимое папки, включая каталог /.git, в любую существующую папку; (скажем, проект затмения, который вы хотите объединить с вашим репо).
Существующая папка, в которую вы только что скопировали файлы, теперь готова к взаимодействию с git.