Куда git клонирует по умолчанию windows

Обновлено: 07.07.2024

Краткое содержание урока, основные инструкции для командной строки, полезные ссылки и советы.

Что такое репозиторий

Это каталог в файловой системе, где хранится информация о проекте:

  • файлы и папки проекта
  • история проекта
  • настройки проекта
  • служебная информация

Информация о репозитории хранится в скрытой папке .git в корне проекта.

Можно ли работать с git локально

Да, можно. Но при этом проект находится только на нашей машине и в случае поломки железа или случайной потери данных мы не сможем восстановить проект.

Локальный репозиторий

Это репозиторий, который хранится на нашей машине, в рабочей папке проекта. Это та самая скрытая папка .git

Удаленный репозиторий, зачем он нужен

Это репозиторий, который хранится в облаке, на сторонних сервисах, специально созданных под работу с проектами git.

Плюсы удаленного репозитория

  • выполняет роль резервной копии
  • возможность работать в команде
  • некоторые дополнительные возможности, которые предоставляет хостинг. Например, визуализация истории или возможность работать над проектом прямо в веб-интерфейсе

Что такое клонирование

Это копирование удаленного репозитория на локальную машину. Обычно это первое действие при работе с проектом. При клонировании на нашу машину копируются файлы и папки проекта и вся его история. То есть мы получаем доступ к истории не с момента начала нашей работы над проектом, а с самого начала проекта.

Как клонировать готовый проект

Наберем в командной строке

При этом в текущем каталоге создастся папка vue, в ней окажутся все файлы проекта vue и специальная скрытая папка .git, то есть сам репозиторий, или информация о нем.

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

При клонировании по умолчанию создается папка с таким же названием, как и у репозитория. Но можно склонировать репозиторий и в другую папку вот так

Где vue-new - нужное название папки.

Свой удаленный репозиторий

Для своих проектов нам понадобится собственный репозиторий. Можно работать и локально, но плюсы удаленного мы уже рассматривали выше. Теперь нужно выбрать хостинг для наших git-проектов.

Где держать репозиторий

Есть множество вариантов, самые известные - это github и bitbucket. Нужно выбирать.

github или bitbucket

На самом деле не парьтесь. У них схожий функционал, и в начале работы с git мы не заметим разницы. bitbucket мне нравится больше из-за интерфейса, но в уроках выберем github из-за его большей популярности.

Как создать репозиторий в github

После регистрации создание репозитория доступно с главной страницы github. При создании нужно указать название проекта и тип (публичный или приватный). На остальное пока не обращаем внимания.

Права на репозиторий, публичные и приватные

Есть 2 типа репозиториев:

  • публичный (public), открыт всем
  • приватный (private), доступен только определенному кругу лиц - в первую очередь, нам самим

Публичные репозитории хороши для opensource-проектов и чтобы показать в резюме. Пока нам это не нужно.

Для себя будем создавать приватные репозитории. Для этого нам понадобятся ssh-ключи.

нельзя просто так клонировать приватный репозиторий

Что такое ssh-ключи

ssh-ключи используются для идентификации клиента на сервере при подключении по безопасному ssh-протоколу. Другими словами, ssh-ключ нужен для того, чтобы пускать на сервер только определенных клиентов. Только тех, кому разрешен доступ к проекту.

ssh-ключ не имеет прямого отношения к git, но так репозитории находятся на удаленных серверах, то ssh-ключи используются для разграничения доступа к приватным репозиториям.

ssh-ключ состоит из пары ключей: публичного и приватного ключа. Это просто 2 текстовых файла:

  • /домашний-каталог/.ssh/id_rsa.pub - публичный
  • /домашний-каталог/.ssh/id_rsa - приватный

Публичный ключ передается сторонним серверам, например, github, для открытия доступа на эти сервера. Приватный ключ хранится только на нашей машине и никому не передается. То есть когда у нас просят ssh-ключ, чтобы дать доступ на какой-нибудь сервер, мы отдаем именно публичный ключ, id_rsa.pub

Как сгенерировать ssh-ключ

ssh-ключи сами собой не появляются, но стоит проверить, возможно, они были установлены раньше. Запустим в терминале команды

Если видим файлы id_rsa и id_rsa.pub - отлично, ключи уже есть.

Если этих файлов нет, то нужно сгенерировать ключи утилитой ssh-keygen. В Windows она устанавливается вместе с git, в Linux и MacOS при необходимости установите. В Linux, например, вот так

После этого нужно сгенерировать пару ключей, запустив команду в терминале

Появились файлы id_rsa и id_rsa.pub - значит, ключи успешно сгенерированы.

Как добавить ssh-ключ в настройках github

Открываем публичный ключ id_rsa.pub и копируем его содержимое. В настройках github ищем раздел "SSH и GPG keys" - https://github.com/settings/keys. Жмем "New SSH key", задаем название ключа, например, имя, и вставляем форму публичный ключ, прямо текстом. Все, теперь у нас есть доступ к нашим приватным репозиториям.

Два способа создания проекта

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

Второй, когда у нас уже есть проект. Нужно зайти в папку проекта и связать его с уже существующим репозиторием на github. Это называется инициализация.

Рассмотрим оба способа.

Пустой проект

Идем в командную строку и запускаем

В текущей папке получим новую папку с названием first-site - это и есть наш проект.

P.S. У вас склонировать этот репозиторий не получится - он закрытый. Создайте свой :-)

Непустой проект

Допустим, у нас на локальной машине уже есть проект second-site. Создаем в github репозиторий second-site. Заходим в папку проекта и выполняем команды

Все, можно приступать к работе над проектом. Команды add, commit и push мы разберем в следующих уроках.

Это единственный урок, в котором мы разбирались с тонкостями репозиториев. В дальнейшем будем считать, что репозиторий = проект.

Что могу посоветовать

  • github или bitbucket? Для личных проектов неважно, оба сервиса разрешают бесплатно создавать приватные репозитории. Для open source или резюме - github
  • не увлекайтесь клонированием в папку со своим названием. Есть шанс запутаться, самому или коллегам
  • не путайте публичный и приватный ключи. Отдаем вовне только публичный ключ id_rsa.pub
  • при смене рабочей машины можно не генерировать ssh-ключи заново, а скопировать их со старой машины. Тогда не придется заново прописывать новые ключи на серверах

Немного подробнее о копировании ssh-ключей

Как скопировать ssh-ключи с одной машины на другую

Хочу немного затронуть эту тему отдельно. Генерировать ключ на новой машине не обязательно. Но нужно выполнить такие действия

  • Скопировать id_rsa и id_rsa.pub со старой машины на новую
  • Посмотреть права на файлы, возможно, ключи окажутся слишком "открытыми" для записи и потребуется сменить им права доступа - sudo chmod 700

Ссылки, которые могут пригодиться

На этом все. В следующем уроке мы сделаем первые изменения в проекте и начнем понимать, в чем заключается прелесть git.

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

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

В Windows вы можете перемещать файлы из папки, где вы будете клонировать репозиторий [если он есть), поэтому он пуст при выполнении git clone . После клонирования переместите ваши файлы назад [ctrl-z] и whoala ! Если текущая папка пуста, просто используйте: git clone giturl . @MatthiasDailey voilà - это настоящее правописание

Вариант А:

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

Вариант Б:

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

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

Еще лучше:

Сохраните свою рабочую копию где-нибудь еще и создайте символическую ссылку. Нравится:

Для вашего случая это будет что-то вроде:

Который легко можно изменить, чтобы проверить, если вы этого хотите, то есть:

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

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

Я не думал о вашем варианте «еще лучше», и мне нравится, хотя я не уверен, почему. Каковы преимущества этого? Вероятно, сейчас это не дает никаких преимуществ, но может избавить вас от многих неприятностей, если вы решите переместить вещи в один прекрасный день. Кроме того, вы можете быстро переключаться между выпусками с помощью опции «Еще лучше». Это особенно полезно и используется для серверов. @MEM Я думаю, что он имеет в виду создать символическую ссылку на .git, т. Е. ln -s path/to/.git path/to/working/directory Кто-нибудь может объяснить преимущества этого ?? Я сегодня немного дремучий. Как использование серверов symlink приносит пользу?

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

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

true, поэтому вы не хотите запускать «git init» в этой папке перед тем, как клонировать в нее. Но если вы это сделали, то удаление папки .git перед клонированием поможет. не мог заставить это работать в nitrous.io? даже после опустошения он говорит, что каталог не пуст @TejasManohar Убедитесь, что вы также удалили скрытые файлы.

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

На самом деле это был самый полезный ответ для меня, когда мне просто нужно было перенести уже созданный проект во вновь созданный репозиторий. Престижность! Только ответ, в котором указано, как оформить заказ в непустую папку, спасибо. Это действительно полезно, поскольку в switch -t документации по git checkout явно не указано on . -t документация из git: -t, --track При создании новой ветки настройте «восходящую» конфигурацию. Смотрите "--track" в git-branch (1) для деталей.

Базовое клонирование репозитория Git

Вы клонируете репозиторий с

Например, если вы хотите клонировать библиотеку Git Drupal Open Framework Стэнфордского университета под названием open_framework, вы можете сделать это следующим образом:

Это создает каталог с именем open_framework (в вашей текущей локальной файловой системе), инициализирует внутри него каталог .git, извлекает все данные для этого хранилища и извлекает рабочую копию последней версии. Если вы войдете во вновь созданный каталог open_framework, вы увидите там файлы проекта, готовые для работы или использования.

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

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

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

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

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

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

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

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

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

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

это сработало и для меня. не ./ в начале пути к папке

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

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

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

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

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

Применение

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

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

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

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

Вот псевдоним, который я создал, чтобы ускорить процесс. Я сделал это для zsh, но он должен прекрасно работать для bash или любой другой оболочки, такой как fish, xyzsh, fizsh и так далее.

/.zshrc , /.bashrc и т.д. с вашим любимым редактором (шахта Leafpad, так что я бы написать $ leafpad

Однако я предпочитаю создать плагин zsh для отслеживания всех моих псевдонимов. Вы можете создать персональный плагин для oh-my-zsh, выполнив следующие команды:

Затем добавьте эти строки в только что созданный пустой файл alises.plugin:

(Отсюда замените свое имя на мое.)

Затем, чтобы заставить работать псевдонимы, они (вместе с zsh) должны быть получены (или как там это называется). Для этого в вашем документе плагина добавьте:

Сохраните ваш плагин 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 . Пожалуйста, не стесняйтесь раскошелиться и улучшить их в соответствии с вашими потребностями.

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

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

Вариант A:

Вариант B:

переместить .папка git тоже.

еще лучше:

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

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

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

заходим в папку.. Если папка пуста, то:

Базовое Клонирование Репозитория Git

вы клонируете репозиторий с

например, если вы хотите клонировать Стэнфордский университет Drupal Open Framework git library под названием open_framework, вы можете сделать это так:

который создает каталог с именем open_framework (в вашем текущем местоположении локальной файловой системы), инициализирует a .каталог git внутри него, вытаскивает все данные для этого репозитория и проверяет рабочую копию последней версия. Если вы войдете во вновь созданный каталог open_framework, вы увидите файлы проекта, готовые к работе или использованию.

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

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

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

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

Он содержит РЕПО и вспомогательные файлы, в то время как файлы проекта, которые находятся в вашем /public каталог-это только версии в текущей фиксации check-out (основная ветвь по умолчанию).

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

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

клонировать к Присутствует Рабочий Каталог:

клонировать к Другое Каталог:

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

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

клонируйте репозиторий, расположенный в , в папку на локальном компьютере.

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

вероятно, есть более элегантный способ сделать это, однако я нашел, что это проще всего для себя.

вот псевдоним, который я создал, чтобы ускорить процесс. Я сделал его для zsh, но он должен отлично работать для bash или любой другой раковины, такой как рыба, xyzsh, fizsh и т. д.

/.zshrc , /.bashrc , etc. с вашим любимым редактором (мой-Leafpad, поэтому я бы написал $ leafpad

мое личное предпочтение, однако, сделать плагин zsh, чтобы отслеживать все мои псевдонимы. Вы можете создать персональный плагин для oh-my-zsh, выполнив следующие команды:

после этого добавьте эти строки во вновь созданные пустые Алисы.файл плагина:

(отсюда, замените свое имя на мое.)

затем, чтобы получить псевдонимы для работы, они (вместе с zsh) должны быть sourced-in (или что бы это ни было называемый.) Для этого внутри пользовательского документа плагина добавьте следующее:

сохраните плагин 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. Пожалуйста, не стесняйтесь вилять и улучшать их, чтобы одеть ваши потребности.

предположим, вы хотите в папке, как /stuff , но ваш pull создает каталог под /repo/tokens/ .

вы можете сделать:

вот именно. Вы закончили.

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

" Я знаю, как перемещать файлы после клонирования РЕПО, Но это кажется, сломать git"

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

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

  1. клонировать РЕПО в любой свежий временный папка
  2. cd в эту корневую папку, которую вы только что клонировали локально
  3. скопируйте все содержимое папки, включая /.git directory-в любую существующую папку, которая вам нравится; (скажем, проект eclipse, который вы хотите объединить с вашим РЕПО)

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

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

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

  • определить соответствующий репозиторий;
  • создать вилку репозитория Git в учетной записи GitHub;
  • выбрать локальную папку для клонированных файлов;
  • клонировать репозиторий на локальный компьютер;
  • настроить значение вышестоящего удаленного источника.

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

Общие сведения

Для участия в разработке документации на сайте Майкрософт вы можете локально создавать и редактировать файлы Markdown, клонировав соответствующий репозиторий документации. Чтобы получить разрешения Майкрософт на чтение и запись для соответствующего репозитория, нужно создать его вилку в учетной записи GitHub. Это позволит сохранять предлагаемые изменения. Затем изменения объединяются в центральном общем репозитории, доступном только для чтения, с помощью запросов на вытягивание.

Треугольник GitHub

Если вы раньше не работали с GitHub, посмотрите следующее видео, где представлен концептуальный обзор процесса создания вилок и клонирования репозиториев:

Определение репозитория

Щелкните "Правка", чтобы определить расположение репозитория и файлов.

URL-адрес, по которому можно определить расположение репозитория

Например, для участия в создании документации можно использовать следующие популярные репозитории:

Создание вилки репозитория

Используя соответствующий репозиторий, создайте его вилку в своей учетной записи GitHub на сайте GitHub.

Перейдите в GitHub на страницу главного репозитория, а затем нажмите кнопку Fork (Создать вилку) вверху справа.

Пример профиля GitHub

Если будет предложено, выберите плитку своей учетной записи GitHub в качестве расположения для создаваемой вилки. После этого в вашей учетной записи GitHub будет создана копия репозитория, называемая вилкой.

Выбор локальной папки

Создайте локальную папку для локального хранения копии репозитория. Размер некоторых репозиториев может быть значительным, например до 5 ГБ для azure-docs. Выберите расположение с доступным местом на диске.

Выберите имя папки — оно должно быть простым для запоминания и ввода. Например, можно использовать корневую папку C:\docs\ или создать папку в каталоге профиля пользователя

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

Запустите Git Bash

Запустите Git Bash

Расположением по умолчанию, в котором обычно запускается Git Bash, является домашний каталог (

) или /c/users/<Windows-user-account>/ в ОС Windows.

Чтобы определить текущий каталог, ведите pwd в запросе $.

Преобразуйте каталог (cd) в папку, созданную для локального размещения репозитория. Обратите внимание, что Git Bash поддерживает соглашение Linux по использованию в путях к папкам прямых, а не обратных косых черт.

Например, cd /c/docs/ или cd

Создание локального клона

С помощью Git Bash подготовьтесь выполнить команду клонирования для вытягивания копии репозитории (вашей вилки) в текущий каталог на устройстве.

Проверка подлинности с использованием Git Credential Manager

Если вы установили последнюю версию Git для Windows и согласились на установку по умолчанию, будет по умолчанию активирован диспетчер учетных данных Git Credential Manager. Git Credential Manager упрощает проверку подлинности, избавляя от необходимости отзывать личный маркер доступа при повторной установке подключений с проверкой подлинности и удаленных подключений с GitHub.

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

Чтобы получить URL-адрес своей вилки GitHub для команды клонирования, нажмите кнопку Clone or download (Клонировать или скачать) в пользовательском интерфейсе GitHub:

"Clone or download" (Клонировать или скачать)

Команда клонирования должна выглядеть приблизительно следующим образом.

При появлении запроса введите учетные данные GitHub.

GitHub: вход в систему

При появлении запроса введите код двухфакторной проверки подлинности.

GitHub: двухфакторная проверка подлинности

Ваши учетные данные будут сохранены для проверки подлинности последующих запросов GitHub. Проверка подлинности выполняется на каждом компьютере один раз.

Запущенная команда клонирования скачивает копию файлов репозитория из вашей вилки в новую папку на локальном диске. Новая папка создается в текущей папке. В зависимости от размера репозитория этот процесс может занять несколько минут. По его окончании вы можете открыть папку, чтобы просмотреть ее структуру.

Настройка удаленного вышестоящего подключения

После клонирования репозитория следует установить удаленное подключение только для чтения, называемое вышестоящим, к основному репозиторию. С помощью URL-адреса вышестоящего подключения вы сможете обеспечить синхронизацию вашего локального репозитория с последними правками, внесенными другими участниками. Команда git remote служит для задания значения конфигурации. С помощью команды принесения можно обновить сведения о ветви из вышестоящего репозитория.

Если вы используете Git Credential Manager, выполните следующие команды. Замените заполнители <repo> и <organization> .

Просмотрите настроенные значения и проверьте правильность URL-адресов. Убедитесь, что URL-адреса исходного подключения ведут к вашей персональной вилке. Убедитесь, что URL-адреса вышестоящего подключения ведут к основному репозиторию, например MicrosoftDocs или Azure.

Далее приводится пример выходных данных для подключения к удаленному репозиторию. Здесь вымышленная учетная запись Git с именем MyGitAccount настраивается с личным маркером доступа для обращения к репозиторию azure-docs.

Если вы допустили ошибку, значение удаленного подключения можно очистить. Чтобы удалить значение вышестоящего подключения, выполните команду git remote remove upstream .

Читайте также: