Как вы клонируете репозиторий Git в определенную папку?

StackOverflow https://stackoverflow.com/questions/651038

  •  19-08-2019
  •  | 
  •  

Вопрос

Выполнение команды git clone git@github.com:whatever создает каталог в моей текущей папке с именем whatever и переносит содержимое репозитория Git в эту папку:

/httpdocs/whatever/public

Моя проблема в том, что мне нужно, чтобы содержимое репозитория Git было клонировано в мой текущий каталог, чтобы они отображались в нужном месте для веб-сервера:

/httpdocs/public

Я знаю, как переместить файлы после того, как я клонировал репозиторий, но это, похоже, нарушает работу Git, и я хотел бы иметь возможность обновлять их, просто вызвав git pull.Как я могу это сделать?

Это было полезно?

Решение

Вариант A:

git clone git@github.com:whatever folder-name

Ergo, для right here использования:

git clone git@github.com:whatever .

Вариант B .

Переместите папку .git также. Обратите внимание, что папка shopt -s dotglob скрыта в большинстве графических обозревателей файлов, поэтому обязательно отображайте скрытые файлы.

mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/

Первая строка захватывает все обычные файлы, вторая строка захватывает точечные файлы. Также возможно сделать это в одну строку, включив dotglob (т.е. -fn), но это, вероятно, плохое решение, если вы задаете вопрос, на который отвечает этот ответ.

Еще лучше:

Храните свою рабочую копию в другом месте и создайте символическую ссылку. Вот так:

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

без перемещения файлов. Добавлено -f в случае, если кто-то копирует эти строки (-n - это сила, <=> избегайте некоторых часто нежелательных взаимодействий с уже существующими и несуществующими ссылками).

Если вы просто хотите, чтобы это работало, используйте вариант А, если кто-то еще собирается посмотреть на то, что вы сделали, используйте вариант С.

Другие советы

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

git clone git@github.com:whatever .

". " в конце указывается текущая папка в качестве папки извлечения.

Зайдите в папку..Если папка пуста, то:

git clone git@github.com:whatever .

ещё

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master

Базовое клонирование репозитория 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, вы & # 8217; там вы увидите файлы проекта, готовые к работе или использованию.

Клонирование репозитория в определенную локальную папку

Если вы хотите клонировать репозиторий в каталог с именем, отличным от open_framework, вы можете указать это в качестве следующего параметра командной строки:

$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme

Эта команда делает то же самое, что и предыдущая, но целевой каталог называется mynewtheme.

Git имеет несколько различных протоколов передачи, которые вы можете использовать. В предыдущем примере используется протокол git: //, но вы также можете увидеть http (s): // или user @ server: /path.git, который использует протокол передачи SSH.

Когда вы перемещаете файлы туда, куда вам нужно, перемещаете ли вы также каталог .git? В зависимости от вашей ОС и конфигурации этот каталог может быть скрыт.

Он содержит репозиторий и вспомогательные файлы, в то время как файлы проекта, которые находятся в вашем каталоге /public, являются только версиями в текущем извлеченном коммите (основная ветвь по умолчанию).

Клонировать:

git clone git@jittre.unfuddle.com:jittre/name.git

Клонируйте "конкретную ветвь":

git clone -b [branch-name] git@jittre.unfuddle.com:jittre/name.git

Чтобы клонировать git-репозиторий в определенную папку, вы можете использовать параметр -C <path>, например

.
git -C /httpdocs clone git@github.com:whatever

Хотя он все равно создаст папку whatever поверх нее, поэтому для клонирования содержимого хранилища в текущий каталог используйте следующий синтаксис:

git git@github.com:whatever .

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

Поскольку вы клонируете в общедоступную папку, рассмотрите возможность отделения хранилища Git от рабочего дерева с помощью --separate-git-dir=<git dir> или исключите папку .git в конфигурации вашего веб-сервера (например, в файле .htaccess).

Если вы хотите клонировать в текущую папку, попробуйте следующее:

git clone https://github.com/example/example.git ./

Чтобы клонировать в существующий рабочий каталог :

git clone https://github.com/link.git

Чтобы клонировать в другой каталог :

git clone https://github.com/link.git ./Folder1/ Folder2

Надеюсь, это поможет:)

Убедитесь, что вы удалили репозиторий .git, если пытаетесь зайти в текущий каталог.

rm -rf .git затем git clone https://github.com/symfony/symfony-sandbox.git

Использование

git clone <repository>

Клонируйте репозиторий, расположенный по адресу <repository> , на локальный компьютер.Исходный репозиторий может быть расположен в локальной файловой системе или на удаленном компьютере, доступном через HTTP или SSH.

git clone <repo> <directory>

Клонируйте репозиторий, расположенный по адресу <repository> , в папку с именем <directory> на локальном компьютере.

Источник: Настройка репозитория

Вот как я это сделаю, но я сделал псевдоним, чтобы сделать это для меня.

$ cd ~Downloads/git; git clone https:git.foo/poo.git

Вероятно, есть более элегантный способ сделать это, однако я обнаружил, что для меня это проще всего.

Вот псевдоним, который я создал, чтобы ускорить процесс. Я сделал это для zsh, но он должен отлично работать для bash или любой другой оболочки, такой как fish, 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's 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. Это загрузит источник плагина, который позволит вам использовать <=> с этого момента.

<Ч>

Я делаю Git-репозиторий со всеми моими псевдонимами. Пожалуйста, не стесняйтесь проверить их здесь: точечные файлы Ev . Пожалуйста, не стесняйтесь раскошелиться и улучшить их в соответствии с вашими потребностями.

По какой-то причине этот синтаксис не выделяется:

git clone repo-url [folder]

Здесь папка - необязательный путь к локальной папке (которая будет локальным хранилищем).

Git clone также pull будет кодировать из удаленного репозитория в локальный репозиторий. На самом деле это правда:

git clone repo-url  =  git init + git remote add origin repo-url + git pull

Если вы используете ssh для git cloning вы можете использовать следующую команду.

git -C path clone git@github.com:path_to_repo.git

например:git -C /home/ubuntu/ clone git@github.com:kennethreitz/requests.git извлек бы репозиторий git для requests к вашему /home/ubuntu/ путь.

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 .

Я рекомендую вам перейти по следующей ссылке:

https://help.github.com/en/articles/cloning-a-repository

Если вы получили следующую ошибку во время выполнения команды URL-адреса git clone

fatal: unable to access 'URL': Could not resolve host: github.com

Затем используйте следующую команду, чтобы исправить это:

git config --global --unset https.proxy

Что касается этой строки из оригинального поста:

"Я знаю, как переместить файлы после того, как я клонировал репозиторий, но это похоже, нарушает работу git"

Я могу это сделать, и пока я не вижу никаких проблем с моими операциями add, commit, push, pull.

Этот подход изложен выше, но просто не разбит на этапы.Вот шаги, которые работают у меня:

  1. клонируйте репозиторий в любую новую временную папку
  2. вставьте компакт-диск в ту корневую папку, которую вы только что клонировали локально
  3. скопируйте все содержимое папки, включая каталог /.git, в любую существующую папку, которая вам нравится;(скажем, проект eclipse, который вы хотите объединить со своим репозиторием)

Существующая папка, в которую вы только что скопировали файлы, теперь готова к взаимодействию с git.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top