2.1 Основы Git — Создание Git-репозитория
Если вы хотите начать работать с Git, прочитав всего одну главу, то эта глава — то, что вам нужно. Здесь рассмотрены все базовые команды, необходимые вам для решения подавляющего большинства задач, возникающих при работе с Git. После прочтения этой главы вы научитесь настраивать и инициализировать репозиторий, начинать и прекращать контроль версий файлов, а также подготавливать и фиксировать изменения. Мы также продемонстрируем вам, как настроить в Git игнорирование отдельных файлов или их групп, как быстро и просто отменить ошибочные изменения, как просмотреть историю вашего проекта и изменения между отдельными коммитами (commit), а также как отправлять (push) и получать (pull) изменения в/из удалённого (remote) репозитория.
Создание Git-репозитория
Обычно вы получаете репозиторий Git одним из двух способов:
- Вы можете взять локальный каталог, который в настоящее время не находится под версионным контролем, и превратить его в репозиторий Git, либо
- Вы можете клонировать существующий репозиторий Git из любого места.
В обоих случаях вы получите готовый к работе Git репозиторий на вашем компьютере.
Создание репозитория в существующем каталоге
Если у вас уже есть проект в каталоге, который не находится под версионным контролем Git, то для начала нужно перейти в него. Если вы не делали этого раньше, то для разных операционных систем это выглядит по-разному:
$ cd /home/user/my_project
$ cd /Users/user/my_project
$ cd C:/Users/user/my_project
а затем выполните команду:
$ git init
Эта команда создаёт в текущем каталоге новый подкаталог с именем .git , содержащий все необходимые файлы репозитория — структуру Git репозитория. На этом этапе ваш проект ещё не находится под версионным контролем. Подробное описание файлов, содержащихся в только что созданном вами каталоге .git , приведено в главе Git изнутри
Если вы хотите добавить под версионный контроль существующие файлы (в отличие от пустого каталога), вам стоит добавить их в индекс и осуществить первый коммит изменений. Добиться этого вы сможете запустив команду git add несколько раз, указав индексируемые файлы, а затем выполнив git commit :
$ git add *.c $ git add LICENSE $ git commit -m 'Initial project version'
Мы разберем, что делают эти команды чуть позже. Теперь у вас есть Git-репозиторий с отслеживаемыми файлами и начальным коммитом.
Клонирование существующего репозитория
Для получения копии существующего Git-репозитория, например, проекта, в который вы хотите внести свой вклад, необходимо использовать команду git clone . Если вы знакомы с другими системами контроля версий, такими как Subversion, то заметите, что команда называется «clone», а не «checkout». Это важное различие — вместо того, чтобы просто получить рабочую копию, Git получает копию практически всех данных, которые есть на сервере. При выполнении git clone с сервера забирается (pulled) каждая версия каждого файла из истории проекта. Фактически, если серверный диск выйдет из строя, вы можете использовать любой из клонов на любом из клиентов, для того, чтобы вернуть сервер в то состояние, в котором он находился в момент клонирования (вы можете потерять часть серверных хуков (server-side hooks) и т. п., но все данные, помещённые под версионный контроль, будут сохранены, подробнее об этом смотрите в разделе Установка Git на сервер главы 4).
Клонирование репозитория осуществляется командой git clone . Например, если вы хотите клонировать библиотеку libgit2 , вы можете сделать это следующим образом:
$ git clone https://github.com/libgit2/libgit2
Эта команда создаёт каталог libgit2 , инициализирует в нём подкаталог .git , скачивает все данные для этого репозитория и извлекает рабочую копию последней версии. Если вы перейдёте в только что созданный каталог libgit2 , то увидите в нём файлы проекта, готовые для работы или использования. Для того, чтобы клонировать репозиторий в каталог с именем, отличающимся от libgit2 , необходимо указать желаемое имя, как параметр командной строки:
$ git clone https://github.com/libgit2/libgit2 mylibgit
Эта команда делает всё то же самое, что и предыдущая, только результирующий каталог будет назван mylibgit .
В Git реализовано несколько транспортных протоколов, которые вы можете использовать. В предыдущем примере использовался протокол https:// , вы также можете встретить git:// или user@server:path/to/repo.git , использующий протокол передачи SSH. В разделе Установка Git на сервер главы 4 мы познакомимся со всеми доступными вариантами конфигурации сервера для обеспечения доступа к вашему Git репозиторию, а также рассмотрим их достоинства и недостатки.
Работа с системой контроля версий
В данном занятии для управления версиями используется сервис Gogs, построенный на основе Git. Основные возможности VCS демонстрируются на примере написания приложения для вывода названий отелей, полученных с помощью API. В рамках решения задачи в master репозитории разрабатывается метод для вывода списка отелей, а в новом репозитории будет реализована верстка названий. Основные шаги:
- Настройка репозитория в Visual Studio
- Работа в master ветке: разработка функционала
- Работа в новой ветке: изменение верстки, демонстрация отката изменений, слияние веток
Обычно для решения новой задачи программист заводит новую ветку. После написания кода и его отладки изменения из новой ветки сливаются в master ветку
Gogs: легковесный git-сервис
В числе самых обсуждаемых последних новостей в сообществе разработчиков были новые тарифы GitHub (см., например, здесь).
Конечно, у новых тарифов есть свои преимущества, но с нынешним курсом доллара их вряд ли можно назвать выгодными для российских пользователей.
Некоторые прибегают к альтернативному решению и разворачивают GitLab (или другой git-сервис) на собственном или арендованном сервере.
Но и у этого решения есть свои подводные камни: GitLab очень требователен к системным ресурсам. Для частных лиц гораздо проще платить 7 долларов в месяц за GitHub, чем арендовать сервер надлежащей конфигурации.
Из сказанного, однако, не следует, что у GitHub на сегодняшний день альтернативы нет. Об одном весьма интересном и перспективном решении мы хотели бы рассказать в этой статье. Знакомьтесь: Gogs. Этот инструмент будет интересен как для индивидуальных разработчиков, так и для небольших компаний.
Общая информация
Gogs — продукт китайских разработчиков. На первый взгляд он почти ничем не отличается от GitHub или BitBucket — это даже по дизайну заметно.
Но при всех внешних сходствах у него есть одно выгодное отличие от существующих аналогов: легковесность.
Gogs написан на Go (собственно, это название представляет собой сокращение от Go Git Service). Из этого факта вытекают серьёзные преимущества: низкие требования к системным ресурсам, минимум зависимостей, простота установки и настройки.
- поддержку протоколов HTTP(s) и SSH;
- поддержку SMTP и LDAP;
- возможность создания как приватных, так и публичных репозиториев;
- интеграцию с социальными сетями (пока что поддерживаются GitHub, Google+, а также китайские сервисы QQ и Weibo);
- возможность работы в связке с сервисами непрерывной интеграции и DevOps-сервисами (подробный список).
В конце 2015 года после более чем полугодового перерыва вышла в свет новая версия продукта. В ней было реализовано множество нововведений, самыми важными из которых являются, конечно же, поддержка пулл-реквестов и возможность создания вики-страниц для проектов.
Дизайн Gogs также был заметно улучшен, а интерфейс перевели на 18 языков, включая русский.
Gogs, GitHub и GitLab
Сравним Gogs с другими инструментами аналогичного плана. Результаты сравнения для наглядности представим в виде таблицы:
Характеристика | Gogs | GitHub | GitLab |
Баг-трекер | + | + | + |
Поддержка аккаунтов организаций | + | + | + |
Wiki | + | + | + |
Ревью кода | — | + | + |
Сниппеты кода | — | + | + |
Веб-хуки | + | + | + |
Гит-хуки | + | только в enterprise-версии | только в enterprise-версии |
Поддержка LDAP | + | + | + |
Синхронизация групп LDAP | — | только в enterprise-версии | только в enterprise-версии |
Установка Gogs
Рассмотрим процедуру установки и первичной настройки на примере OC Ubuntu 16.04. В качестве СУБД возьмем привычный MySQL.
$ sudo apt-get update $ sudo apt-get install -y mysql-server
После этого создайте файл gogs.sql:
$ nano gogs.sql
Добавьте в него следующие строки:
DROP DATABASE IF EXISTS gogs; CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8 COLLATE utf8_general_ci;
Сохраните внесённые изменения и выполните:
$ mysql -u root -p [пароль пользователя root]< gogs.sql
Чтобы уcтановить gogs из исходников, вам понадобятся также системы контроля версий git и mercurial:
$ sudo apt-get install git mercurial
Далее вам нужно будет установить компилятор Go. Откройте файл /.bashrc и добавьте в него следующие строки:
export GOPATH=/home/git/go export GOROOT=/usr/local/src/go export PATH=$:$GOROOT/bin
Сохраните изменения и выполните:
$ source ~/.bashrc
После этого установить компилятор Go:
$ wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz $ tar zxf go1.4.2.linux-amd64.tar.gz $ sudo mv go $GOROOT
Все необходимые зависимости установлены. Можно устанавливать Gogs:
$ go get -d github.com/gogits/gogs $ cd $GOPATH/src/github.com/gogits/gogs $ go build
По завершении установки нужно настроить запуск Gogs как службы. Для этого вам потребуется просто добавить в /etc/system/systemd файл gogs.service (шаблон см. здесь) и выполнить после этого следующие команды:.
$ sudo systemctl enable gogs $ sudo systemtctl start gogs
Если всё сделано правильно, то по завершении установки страница настройки Gogs будет доступна по адресу http:// [IP-адрес сервера]:3000. Вся дальнейшая настройка осуществляется через графический интерфейс; там всё довольно просто и интуитивно понятно. Если вы планируете привязать к серверу с Gogs домен, вам потребуется также установить Nginx и настроить его в качестве обратного прокси (подробнее в официальной документации).
В процедуре установки Gogs ничего сложного нет. Но если вы являетесь пользователем нашего сервиса Vscale (кстати, отличный повод им стать), то всё можно сделать ещё проще: совсем недавно мы добавили в панель управления соответствующий образ. Один клик ― и виртуальная машина с уже установленным и настроенным Gogs создана и готова к использованию:
Как только сервер будет создан, откройте в браузере страницу http://[IP-адрес сервера]. Ничего настраивать дополнительно вам не потребуется: всё уже прописано в шаблоне и готово к работе.
Войдите в Gogs с помощью логина и пароля, полученных при установке.
Gogs в работе
Работать с Gogs просто. Если у вас есть опыт работы с GitHub, то вы без труда во всём разберётесь. Для начинающих пользователей в панели управления приводятся подробные шпаргалки.
Приведём элементраный пример. Создадим через графический интерфейс тестовый репозиторий.
После этого клонируем его на локальную машину:
$ git clone http://[IP-адрес сервера]/root/test.git
Внесём небольшие изменения в файл README.md:
$ echo 'Test' >> README.md
Закоммитим внесённые изменения:
$ git add --all && git commit -m "init commit" && git push origin master
Вам будет предложено ввести логин и пароль пользователя Gogs. После этого коммит будет добавлен в репозиторий. В панели управления всё это выглядит так:
Заключение
Мы попробовали поработать с Gogs – и остались вполне довольны. У продукта китайских разработчиков перспективы есть, и неплохие. За последний год (а в первый раз мы познакомились с Gogs в начале 2015 года) была проделана огромная работа по его усовершенствованию, и мы надеемся, что она будет продолжена в будущем.
Gogs уже сейчас является вполне достойной альтернативой GitHub и GitLab.В плане потребления системных ресурсов он гораздо экономичнее, чем любое из аналогичных решений. Как утверждают разработчики в своём блоге, его можно установить даже на RaspberryPi. Не знаем, как насчёт RaspberryPi, но на виртуальном сервере самой простой конфигурации в Vscale Gogs работает вполне стабильно на небольшом количестве репозиториев. Приглашаем всех попробовать и оценить. Если у вас уже есть опыт работы с Gogs — будем рады, если вы поделитесь им в комментариях.
Специально для тех, кто хочет получить готовый настроенный git-сервис, но при этом предпочитает более традиционные и уже зарекомендовавшие себя решения, мы добавили образ с GitLab. Сразу же отметим, что для самых бюджетных и популярных тарифов он недоступен: GitLab потребляет слишком много системных ресурсов, и серверы “младших” конфигураций его просто-напросто не потянут.
Пользуясь случаем, мы хотели бы обсудить ещё одну важную тему. Сегодня некоторые VPS-провайдеры предлагают образы с предустановленным ПО. У нас в Vscale, например, уже есть: Ajenti, VestaCP, WordPress, Docker, GitLab и Gogs. Этот список мы планируем значительно расширить.
В связи с этим — вопрос ко всем пользователям VPS: какие образы с предустановленным ПО вам нужны? Что ещё, помимо стандартных CMS и панелей управления хостингом, вы бы хотели видеть у вашего провайдера? Если в списке чего-то нет, просьба делиться в комментариях.
Git gogs как работать
###### tags: Linux, Gogs, git, nginx, ufw, ssl. # Развертывание Gogs. В этой заметки: установка и настройка легковесного git репозитория написанного на go,создание самоподписанных ssl сертификатов, настройка nginx как прокси сервера для https, а также настройка ufw для блокировки нежелательных подключений по 80 и 3000 порту. ## Установка gogs на Ubuntu 20.04 LTS. Устанавливаем git и sqlite3.  Создаем пользователя для gogs. ``` adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Контроль версий Git' git ``` Скачиваем архив с бинарным файлом gogs используя wget с [сайта](https://dl.gogs.io/ ).  Разархивируем скаченный архив.  Переносим папку gogs в созданный ранее каталог /home/git. Изменяем владельца каталога и файлов в нем на git:git.  Скопируем готовый файл модуля systemd в каталог с сервисами.  Запускаем сервис. И добавляем в автозагрузку.  Перейдем по ip_адрес-сервера:3000. И продожаем web установку. Выбираем базу данный SQLite3. Указываем полный путь до файла бд /home/git/gogs/gogs.db.  Указываем в разделе домен адрес нашего сервера или DNS имя сервера.  Жмем установить gogs. После ждем минутку и обновляем страницу. Нажимаем на регистрацию. Создайем аккаунт. Первый созданный аккаунт это будет аккаунт администратора gogs.  Входим в аккаунт.  ## Настройка nginx в качестве прокси сервера завершения ssl. Мы можем с вами заметить что по умолчанию gogs использует протокол http что не является безопасным.  Для решения этой проблемы настроим Nginx в качестве прокси завершения ssl. Устанавливаем nginx. Создаем директорию /etc/nginx/ssl. Генерируем самоподписанный ssl сертификат. ``` openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt ```  Создайем конфиг gogs_ssl.conf в директории /etc/nginx/conf.d. В proxy_pass указываем адрес сервера gogs. Не забываем удалить стандартный сайт Nginx или отключить его если используеться IP адресс вместо dns имени.  Теперь мы можем переходит на сайт по https без указания порта.  ## Настройка ufw для блокировки 80 и 3000 портов. На сайт можно до сих пор зайти по 3000 порту это дыра в системе и стоит это исправить. Установите ufw. Ufw это надстройка над IPtables с более дружелюбным способом создавать правила.  Перед тем как что то блокировать и запускать ufw создаем правило разрешающие ssh подключения в ufw это делается просто:  Теперь нам нужно разрешить подключения по https.  По умолчанию после включение ufw все не указанные как разрешенные порты будут блокироваться. Поэтому блокировать 3000 порт нам не нужно. Однако нужно создать разрешающие правило для подключения на этот порт с нашего Nginx proxy.  Запускаем ufw. И смотрим статус.  Теперь при попытки подключиться по http мы будет получать такое сообщение от браузера, тоже самое, будет и по 3000 порту. Зато по https у нас все будет прекрасно работать.  Работа по https.  ## Тестирование Gogs. Давайте проверим работоспособность нашей системы контроля версий gogs. Создаем репозиторий.  Мы попадем на такую страницу.  Открываем свой любимый редактор кода в моем случае это vscode. Открываем терминал, отключаем проверку ssl гитом и добавляем репозиторий.  Создаем файл Readme.md  Закоммитьтем изменения.  Залеваем обновления в репозиторий. Нас спросит логин и пароль указываем логин пароль созданного ранее аккаунта.  Обновляем страницу репозитория в браузере. Как можно увидеть появился файл Readme.md.  Отключать проверку ssl сертификата не рекомендую с точки зрения безопасности, поэтому после тестирование верните в значение true. В обычной ситуации вам нужно было бы добавлять созданный нами сертификат в доверенные для нашего ПК с git. Но еще более вероятно мы бы использовали сертификат подписанный доверенным центром сертификации.
Last changed by
Read more
Знакомство с Linux. Часть четвертая. Сети.
Студент должен уметь настраивать сетевые интерфейсы в основных debian подобных операционных системах Linux.
Межсетевые экраны в OC Linux
Межсетево́й экра́н, сетево́й экра́н, фаервол — программный или программно-аппаратный элемент компьютерной сети, осуществляющий контроль и фильтрацию проходящего через него сетевого трафика в соответствии с заданными правилами.
Сброс пароля root в Linux через Grub.
Небольшие неприятности могут случиться со всеми. Но если данные на диске не зашифрованы, то забытый пароль от Linux — это маленькая неприятность с которой легко справиться.
Подготовка к квалификационному экзамену 2022 ПМ.02.
Задание для экзамена по профессиональному модулю ПМ. 02 Организация сетевого администрирования.