Рассмотрим популярные инструменты, которые обязательно должны быть в арсенале современного программиста.
Система контроля версий GIT
Во время работы у программиста часто бывает следующая ситуация:
- Написал фрагмент кода, проверил, программа работает.
- Написал следующий фрагмент, проверил, а программа уже не работает.
Нужно понять, что именно нарушилось, а для этого нужно вернуться к работающей версии. Для этого нужно где-то сохранить копию предыдущей версии.
Для этого существуют системы контроля версий, которые называются VCS (Version Control System). Хотя каждая система управления версиями имеет свои специфические особенности, но общий принцип работы у всех один:
- Существует центральное хранилище (Repository), где хранится информация о всех версиях программы.
- Программист перед началом работы получает копию текущей версии (Pull).
- После внесения изменений в программу программист заносит в хранилище следующую версию (Push).
- При ведется журнал изменений и можно в любой момент получить любую версию программы.
На данный момент самой популярной системой контроля версий является GIT. Ядро Git представляет собой набор утилит командной строки с параметрами.
Среди проектов, использующих Git — ядро Linux, Android, jQuery, PHP.
Сервис для хостинга проектов GitHub
Крупнейшим сервисом для хранения Git-проектов является GitHub.
Этот сервис позволяет размещать проекты любой сложности. В частности, на GitHub размещен исходный код ядра Linux.
В 2018 году Microsoft купила GitHub за 7,5 млрд долларов.
До апреля 2020 г. на GitHub можно было бесплатно размещать только открытые проекты.
Сейчас можно размещать бесплатно как открытые, так и закрытые проекты. На сервисе GitHub по состоянию на май 2021 г. было зарегистрировано 65 миллионов программистов.
На GitHub есть система звезд, которые выставляются репозиториям. По количеству звезд можно находить самые востребованные проекты.
Программа GitHub Desktop
Для работы с сервисом GitHub разработана программа GitHub Desktop. Она позволяет легко начать работать с сервисом. Для этого нужно сделать следующие шаги:
- Скачать и установить программу GitHub Desktop.
- Завести аккаунт на GitHub.
- Создать новый репозиторий.
- Подключиться к репозиторию.
Создание репозитория
Для создания закрытого репозитория выберите Private.
Открытый репозиторий (Public) доступен в поиске, виден в вашем профиле и любой человек может посмотреть код и предложить свои изменения.
Рекомендуется для репозиториев создавать файл README, в котором кратко описывать, для чего этот репозиторий нужен.
После создания репозитория к нему нужно подключиться из программы.
Основные термины Git
Репозиторий (Repository) — каталог файловой системы, в котором хранятся файлы разработки.
Удаленный репозиторий (Ориджин, Origin) — репозиторий, находящийся на сервере. Это общий репозиторий, в который приходят все изменения.
Локальный репозиторий — репозиторий, расположенный на локальном компьютере разработчика. Именно с ним работает программист.
Клон (Clone) — копия Origin в локальный репозиторий.
Форк (Fork) — копия репозитория. Форк позволяет разработчику вносить изменения без риска испортить исходный код.
Коммит (Commit) — запись изменений в локальный репозиторий.
Пуш (Push) — отправка всех неотправленных коммитов в удаленный репозиторий.
Пул (Pull) — получение последних изменений с удаленного репозитория.
Пулреквест (Pull Request) — запрос на слияние форка репозитория с основным репозиторием. Пулреквест может быть принят или отклонен владельцем репозитория.
Общая схема работы с Git
Во время работы с Git чаще всего программист делает следующие шаги:
- Получить рабочую версию текста программы (Pull).
- Внести изменения в текст программы.
- Зафиксировать изменения в локальном репозитории (Commit).
- Отправить все коммиты в удаленный репозиторий (Push).
- При необходимости получить изменения из удаленного репозитория (Fetch).
Форк проекта
Для разработки типовых задач программисту не нужно начинать разработку с “чистого листа”. Лучше найти похожий проект на GitHub и сделать форк.
Форк — это копия проекта, которая может разрабатываться автономно. При необходимости можно сделать пул реквест для запроса соединения с оригиналом.
Этапы создания форка:
- Найти проект на Github. Например, https://github.com/octocat/Spoon-Knife
- Нажать ссылку Fork
- В GitHub Desktop клонировать проект и выбрать “For my own purposes”.
После этого проект будет автономен.
Ветвление в GIT
Во время разработки можно создавать так называемые ветки (branch).
Ветки позволяют вести независимую разработку. Основная ветка называется main. После принятия решения по новой ветке она или удаляется, или сливается (merge) с main.
Отмена изменений в GIT
Ключевой особенностью GIT является легкая отмена исправлений.
В случае неудачи программист всегда может вернуться к предыдущей версии. Это можно сделать командой revert.
Отмену можно делать до необходимой версии.
Выбор Gitflow
В каждой компании существует набор правил, по которым осуществляется порядок внесения изменения в Git. Этот набор обычно называют gitflow (от слова flow — поток).
Типовой gitflow выглядит так:
- Основная ветка main содержит только полностью работающие версии.
- Текущая разработка ведется в ветке dev.
- Каждый программист заводит свою ветку.
После того как все программисты объявили о завершении этапа происходит слияние в основную ветку.
Страницы GitHub
На GitHub есть еще полезная услуга, которая называется GitHub Pages
Вы получаете один сайт для каждой учетной записи GitHub и неограниченное количество сайтов для проектов.
Для создания страниц Github нужно создать репозиторий с именем аккаунта. Адрес этой страницы будет иметь вид:
https://username.github.io
Адреса проектов будут иметь вид:
http://username.github.io/repository
На этих сайтах можно размещать только статические страницы (HTML, CSS). Основное назначение — описание проектов.
Все эти возможности GitHub делают данный сервис весьма полезным для работы программиста.
Привет! Мог бы написать статью про Git, но в командной строке?
Использование командной строки не рекомендую, так как это сильно замедляет работу, именно поэтому программисты используют визуальные среды, в том числе и GitHub Desktop.
Я и собираюсь использовать визуальные среды, но после того как в принципе смогу сделать основные команды через командную строку. Так что лучше всего представить цепочку освоения Git’а так :
— называем задачу,
— показываем как это делается из под командной строки, затем
— показываем как это делается через GUI от GitForWindows/GitHubDesktop/SmartGit
И все: вы получили студента — который по настоящему освоился и дальше уже все остальное освоит по аналогии!
Порядок действий что в первую очередь нужен новичку что бы стартовать (пробелы можно будет доосвоить через документацию):
— установить GitForWindows/GitHubDesktop
— если уже стоит — то проверить не нуждается ли установка в починке?
— понять разницу между системной и портативной установкой, и как их совмещать.
— настроить первично
— научиться создавать локальный репозиторий
— и/или клонировать себе удаленный
— для этого уметь использовать авторизацию
— добавлять файлы в проект (и исключать из него)
— комитить изменения
— создавать, переключать и объединять ветки
— синхронизировать локальный репозиторий с удаленным
— теперь поучиться сравнивать и отменять изменения.
Это мой минимум — для того что бы уже практиковаться и переваривать уже всякие другие руководства.
Сможете так сделать?
Или может знаете что кто-то уже так сделал, и вы не заходите изобретать велосипед и просто поделитесь ссылкой?
Буду очень даже благодарен !!
Этот список не содержит чего-то особо сложного. Достаточно небольшой практики и все получится.