Git — система контроля версий (version control system, VCS), созданная программистом Линусом Торвальдсом для управления разработкой ядра Linux в 2005 году. Хорошо, а что это всё-таки значит?
Представьте, что вы с коллегами вместе пишете ядро Linuxнаучную статью. У вас на компьютере есть папка, где лежат текстовые документы, картинки, графики и прочие нужные файлы; то же самое есть и у ваших коллег. Когда кто-то из вас изменяет, добавляет или удаляет файлы, остальные этих изменений не видят.
Вы пишете друг другу об изменениях, пересылаете обновленные версии файлов, но в процессе работы непременно возникает путаница: какая версия текста — последняя? Куда и когда исчезла пара абзацев? Кто внес те или иные правки? Избежать таких проблем и помогают системы контроля версий. Устроено это так:
- Ваша папка на компьютере — это не просто папка, а локальный репозиторий.
- Она является копией удалённого репозитория, который лежит на веб-хостинге (например, GitHub или BitBucket).
- Eсли вы работаете над проектом с коллегами, то своя локальная копия есть у каждого.
- Kогда вы внесли некоторое количество изменений, вы можете их сохранить, и это действие запишется в журнал; это называется commit (коммит).
- После этого можно отправить изменения в удалённый репозиторий; это называется push (пуш, пу́шить, запу́шу, пуши́ от души).
- Актуальная версия проекта, учитывающая последние изменения всех участников, будет храниться в удалённом репозитории.
- Если вы увидели, что ваши коллеги запушили в удалённый репозиторий что-то новенькое, то можно (и нужно!) “скопировать” это себе на компьютер (в локальный репозиторий); это называется pull (пулл).
Чем-то похоже на Dropbox, Google Drive и прочие облачные хранилища, правда? Только в данном случае ваши файлы синхронизируются не автоматически, а по команде, и возможностей управления ими гораздо больше.
Что такое Git?
Понятно, что для совместной работы над текстом научной статьи вполне хватит и Google Docs, но вот если, например, вы хотите опубликовать результаты исследования в интернете и сделать для этого собственный сайт, то без VCS обойтись сложно. И ещё раз, системы контроля версий хороши тем, что:
- они позволяют работать над проектом в команде;
- вы видите, кем и когда были внесены те или иные изменения;
- их всегда можно откатить назад;
- вы не потеряете проделанную работу, даже если что-то удалите на своем компьютере;
- ваши наработки могут быть полностью открыты для других (а это доступность знаний и ускорение развития технологий, ура!);
- GitHub и GitLab позволяют не только хранить и просматривать файлы проекта, но и публиковать веб-сайты, документацию и т.п.
Существует много систем управления версиями, но мы будем пользоваться самой распространенной — git. Также нам нужно как-то отдавать гиту команды, и делать это можно двумя способами: с помощью командной строки и через графический интерфейс (graphical user interface, GUI). Графический интерфейс программы — это все те окошки с кнопочками, которые мы привыкли видеть. Существует много графических интерфейсов для Git, например:
Что такое Git? ДЛЯ НОВИЧКОВ / Про IT / Geekbrains
Book
The entire Pro Git book, written by Scott Chacon and Ben Straub and published by Apress, is available here. All content is licensed under the Creative Commons Attribution Non Commercial Share Alike 3.0 license. Print versions of the book are available on Amazon.com.
The version found here has been updated with corrections and additions from hundreds of contributors. If you see an error or have a suggestion, patches and issues are welcome in its GitHub repository.
1. Введение
- 1.1 О системе контроля версий
- 1.2 Краткая история Git
- 1.3 Что такое Git?
- 1.4 Командная строка
- 1.5 Установка Git
- 1.6 Первоначальная настройка Git
- 1.7 Как получить помощь?
- 1.8 Заключение
2. Основы Git
- 2.1 Создание Git-репозитория
- 2.2 Запись изменений в репозиторий
- 2.3 Просмотр истории коммитов
- 2.4 Операции отмены
- 2.5 Работа с удалёнными репозиториями
- 2.6 Работа с тегами
- 2.7 Псевдонимы в Git
- 2.8 Заключение
3. Ветвление в Git
- 3.1 О ветвлении в двух словах
- 3.2 Основы ветвления и слияния
- 3.3 Управление ветками
- 3.4 Работа с ветками
- 3.5 Удалённые ветки
- 3.6 Перебазирование
- 3.7 Заключение
4. Git на сервере
- 4.1 Протоколы
- 4.2 Установка Git на сервер
- 4.3 Генерация открытого SSH ключа
- 4.4 Настраиваем сервер
- 4.5 Git-демон
- 4.6 Умный HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Git-хостинг
- 4.10 Заключение
5. Распределённый Git
- 5.1 Распределённый рабочий процесс
- 5.2 Участие в проекте
- 5.3 Сопровождение проекта
- 5.4 Заключение
6. GitHub
- 6.1 Настройка и конфигурация учетной записи
- 6.2 Внесение собственного вклада в проекты
- 6.3 Сопровождение проекта
- 6.4 Управление организацией
- 6.5 Создание сценариев GitHub
- 6.6 Заключение
7. Инструменты Git
- 7.1 Выбор ревизии
- 7.2 Интерактивное индексирование
- 7.3 Припрятывание и очистка
- 7.4 Подпись
- 7.5 Поиск
- 7.6 Перезапись истории
- 7.7 Раскрытие тайн reset
- 7.8 Продвинутое слияние
- 7.9 Rerere
- 7.10 Обнаружение ошибок с помощью Git
- 7.11 Подмодули
- 7.12 Создание пакетов
- 7.13 Замена
- 7.14 Хранилище учётных данных
- 7.15 Заключение
8. Настройка Git
- 8.1 Конфигурация Git
- 8.2 Атрибуты Git
- 8.3 Хуки в Git
- 8.4 Пример принудительной политики Git
- 8.5 Заключение
9. Git и другие системы контроля версий
- 9.1 Git как клиент
- 9.2 Переход на Git
- 9.3 Заключение
10. Git изнутри
- 10.1 Сантехника и Фарфор
- 10.2 Объекты Git
- 10.3 Ссылки в Git
- 10.4 Pack-файлы
- 10.5 Спецификации ссылок
- 10.6 Протоколы передачи данных
- 10.7 Обслуживание репозитория и восстановление данных
- 10.8 Переменные окружения
- 10.9 Заключение
A1. Приложение A: Git в других окружениях
- A1.1 Графические интерфейсы
- A1.2 Git в Visual Studio
- A1.3 Git в Visual Studio Code
- A1.4 Git в Eclipse
- A1.5 Git в IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.6 Git в Sublime Text
- A1.7 Git в Bash
- A1.8 Git в Zsh
- A1.9 Git в PowerShell
- A1.10 Заключение
A2. Приложение B: Встраивание Git в ваши приложения
- A2.1 Git из командной строки
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
A3. Приложение C: Команды Git
- A3.1 Настройка и конфигурация
- A3.2 Клонирование и создание репозиториев
- A3.3 Основные команды
- A3.4 Ветвление и слияния
- A3.5 Совместная работа и обновление проектов
- A3.6 Осмотр и сравнение
- A3.7 Отладка
- A3.8 Внесение исправлений
- A3.9 Работа с помощью электронной почты
- A3.10 Внешние системы
- A3.11 Администрирование
- A3.12 Низкоуровневые команды
About this site
Patches, suggestions, and comments are welcome.
Git is a member of Software Freedom Conservancy
Источник: git-scm.com
Git — что это простыми словами
Git относится к третьему поколению систем контроля версий (СКВ). Они называются распределенными СКВ, поскольку имеют хранилище данных (репозиторий) не только на сервере, но и локально на тех машинах, которыми пользуются разработчики. От других СКВ Git отличается особым подходом к обработке информации: он не записывает отдельно внесенные правки, а делает подробный снимок проекта в момент сохранения, то есть фиксирует состояние каждого файла, и создает ссылку на эту версию.
Для чего нужен Git
В основном Git применяют при работе с исходным кодом, но его можно использовать для любых файлов на усмотрение пользователя. К помощи Git часто прибегают при переводе книг, когда нужно сопоставить выполненную работу с оригиналом, дизайнеры тоже нередко пользуются его возможностями. Он позволяет анализировать изменения, просматривать их историю, сравнивать разные версии одних и тех же файлов.
Что касается создания приложений и сайтов, то здесь Git — обязательный и незаменимый инструмент. Часто бывает так, что внесенное в код исправление рушит работающие части проекта, и даже после отмены этого исправления ситуация не улучшается. Решение — Git. Он защищает ваш проект от подобных неожиданностей и исключает возможность случайного удаления правок или файлов.
Благодаря уникальному подходу к хранению данных, Git может быстро откатить проект до рабочего состояния при возникновении ошибок. Вам не потребуется выискивать проблемы, которые повлекло за собой добавление изменений, ведь в любой момент можно вернуться к одной из старых версий. Такая система нужна, чтобы люди, участвующие в разработке, могли беспрепятственно «копаться» в коде, не боясь навредить чужим правкам или работе проекта в целом. С помощью Git можно поддерживать рабочую версию и параллельно создавать новые, одной командой сливать их воедино или разделять. Этот инструмент ускоряет процесс разработки и делает его более эффективным.
Что входит в Git
Распределенная система контроля версий подразумевает под собой сразу три сервиса:
- Хранение, обработка и передача данных. Сама возможность работы с «контентом».
- Контроль за всеми вариациями проекта. То, о чем мы говорили выше: в любой момент времени вы можете восстановить предыдущие версии, буквально вернуться в прошлое до «поломки» кода.
- Параллельная разработка. Удаленное файловое хранилище делает доступной одновременную редакцию одних и тех же объектов разными людьми и при этом гарантирует отсутствие конфликтов в коде. Это достигается благодаря тому, что каждый участник проекта хранит свои правки в локальном репозитории на своем устройстве, и они не вступят в силу, пока он не выгрузит их на сервер и не сольет с рабочей версией.
Строение Git
Если при работе над проектом используется Git, все принадлежащие ему файлы проходят через несколько секций хранилища: рабочий каталог (Working directory), область подготовленных файлов или индекс (Staging area) и каталог Git (Git directory).
Последнее — самая важная часть системы, поскольку именно здесь хранятся все объекты и метаданные вашего проекта. Git-каталог — это и есть локальный репозиторий, который был клонирован с сервера. В нем содержится не только код, но и изображения, файлы конфигурации, скрипты, стили — эти и другие компоненты представлены здесь во всех вариациях, когда-либо сохраненных в удаленном репозитории.
Из сжатой базы данных каталога Git извлекается копия определенной версии проекта и помещается на жесткий диск компьютера для внесения изменений. Рабочий каталог или директория представляет собой как раз одну такую копию. Другими словами, в этой секции производятся все действия по редактированию файлов: переписывается код, меняются шрифты, цвета, добавляются новые блоки и функции или удаляются старые и так далее. Файл получает статус «изменен» (modified) и, если нужно, может быть перемещен в индекс — промежуточную зону между двумя каталогами.
В области подготовленных файлов он переходит в статус «индексирован» (staged), что означает готовность объекта к коммиту — отправке в репозиторий, где он станет «зафиксированным» (committed). Файл будет находиться в стейджинг-зоне до тех пор, пока пользователь не сохранит его в локальное хранилище и не отправит на сервер.
Каждую из этих секций можно представить как отдельную миниатюрную файловую систему, которая сообщается и взаимодействует с остальными при помощи определенных команд. Работа в Git строится простым и понятным образом, благодаря чему возрастает и ее эффективность.
Как начать работу в Git
Чтобы включить Git в процесс разработки, для начала его нужно установить на компьютер. Если вы используете операционную систему из семейства Linux или Unix, достаточно произвести установку пакета при помощи пакетного менеджера. Либо вы можете скачать набор утилит последней версии с официального сайта Git, что также актуально для Windows и macOS.
Конфигурационный файл
Первым делом лучше настроить параметры для идентификации: имя пользователя и электронную почту. Для большинства операций они не потребуются, но без них у вас не будет возможности сделать коммит. Настройка производится при помощи утилиты git config. Она позволяет устанавливать и просматривать параметры, контролирующие всю работу Git и его внешний вид.
Они могут храниться в трех файлах: на уровне системы (/etc/gitconfig), на уровне пользователя (~/.gitconfig) и на уровне проекта (.git/config). Для того чтобы данные читались и сохранялись в одном из первых двух файлов, при запуске git config укажите параметр —system или —global соответственно. Если для конкретного проекта вам необходимо установить отдельные имя и email, то в его каталоге выполните команды без указания параметра: git config user.name «значение» и git config user.email «значение». Помните, что значения нижнего уровня перекрывают значения верхнего.
Создание репозитория
Существует два способа создать Git-репозиторий: инициализировать новый или клонировать уже существующий.
В первом случае достаточно создать папку будущего проекта, перейти в нее и ввести команду git init. Репозиторий готов к работе: можете добавлять в него свои файлы. После этого нужно сделать коммит изменений (git commit -m “название версии”). Таким образом, новые файлы будут готовы к отправке в удаленный репозиторий.
Для связи локального и удаленного репозиториев требуется выполнить команду git remote add origin . Теперь Git знает, где находится удаленный сервер (куда отправлять файлы). Для отправки данных в репозиторий используется команда git push.
Чтобы начать использовать Git для имеющегося у вас проекта, сделайте все то же самое, открыв проектный каталог.
Если же вы хотите скопировать репозиторий из удаленного хранилища (например, GitHub), выполните команду git clone .
Заключение
Теперь вы знаете, почему Git является популярнейшей из распределенных систем контроля версий. Мы познакомили вас с принципом его работы и показали, насколько эффективно она организована. Это надежный инструмент для совместной разработки проектов и отслеживания истории их развития.
Источник: eurobyte.ru