Git - это очень популярная система контроля версий и совместной разработки проектов с открытым исходным кодом. С помощью Git вы можете отслеживать изменения в исходном коде своих проектов, возвращать предыдущие версии в случае критических ошибок, а также делиться своим кодом со всеми желающими и принимать от них исправления.
Это мощная система, которая позволяет оптимизировать работу над вашими проектами. Здесь нет каких-либо требований к языку или структуре файлов, поэтому у разработчиков полная свобода действий. В этой статье мы рассмотрим как пользоваться git для начинающих пользователей. Рассмотрим все очень подробно, начиная от настройки, и до ветвей проектов.
Содержание статьи
Команда git
Уже по традиции, перед тем, как перейти к примерам и работе с командой давайте рассмотрим ее основные опции и параметры. Синтаксис git очень прост:
$ git опции команда аргументы
Сначала рассмотрим опции, они влияют на работу всей утилиты:
- -C - использовать указанную папку репозитория вместо текущей папки;
- -c параметр=значение - использовать указанное значение параметра конфигурации;
- -p - прокручивать весь вывод с помощью less;
Теперь рассмотрим команды git, их немного больше и именно с помощью них вы будете выполнять все основные действия:
- add - добавить файл или папку в репозиторий git;
- am - применить все патчи из email;
- archive - создать архив файлов;
- bisect - использовать бинарный поиск для поиска нужного коммита;
- branch - управление ветками проекта;
- bundle - перемещение объектов и ссылок в архиве;
- checkout - переключение между ветками;
- cherry-pick - внести изменения в уже существующие коммиты;
- clean - удалить все неотслеживаемые файлы и папки проекта;
- clone - создать копию удаленного репозитория в папку;
- commit - сохранить изменения в репозиторий;
- diff - посмотреть изменения между коммитами;
- fetch - скачать удаленный репозиторий;
- init - создать репозиторий;
- merge - объединить две ветви;
- pull - интегрировать удаленный репозиторий с локальным;
- push - отправить изменения в удаленный репозиторий;
- tag - управление тегами;
- worktree - управление деревями разработки.
Аргументы зависят от используемой команды, поэтому более подробно мы будем разбирать их в примерах.
Как работает git?
Перед тем как идти дальше и рассматривать использование git для управления своими проектами, я бы хотел сказать несколько слов о том, как же работает эта технология, так сказать, основы работы git.
Итак, из всего выше перечисленного, вы, наверное, уже поняли, что контроль версий позволяет вам посмотреть изменения на любом этапе разработки, а также вернуться к любому моменту. Но это не совсем так. Изменения сохраняются в виде коммитов. По-русски - фиксация. Вы делаете начальный коммит, чтобы сохранить начальное состояние проекта, а затем для каждого изменения. Это работает как снимки состояния.
Кроме того, git позволяет отправлять данные на удаленный сервер. Отправляются не только готовая версия, но и все снимки, таким образом, любой человек из команды может посмотреть историю изменений. К каждому снимку нужно делать комментарий, так работа с git будет проще и понятнее.
Как пользоваться Git?
Дальше я буду предполагать, что вы выполнили установку и базовую настройку git. Кроме установки, вам нужно указать правильный адрес электронной почты и имя пользователя для доступа к серверу Git, например, на GitHub. Если вы этого еще не сделали смотрите инструкцию установка Git в Ubuntu 16.04.
Обычно, структура проекта в Git будет зависеть от масштаба и сложности вашей программы. Но для начала мы будем использовать проект, состоящий только из одной ветви. Каждый проект содержит одну ветку по умолчанию, она называется master. Наш первый проект будет называться test.
Создание проекта
Когда настройка git завершена перейдем к вашему проекту. В самом начале вам достаточно создать папку для файлов проекта. Если вы собираетесь работать над несколькими проектами, создайте папку git в вашем домашнем каталоге, а уже туда поместите папки ваших проектов:
mkdir -p ~/git/testing ; cd ~/git/testing
Эта команда создаст нужную структуру папок и переводит текущий каталог в только что созданный. Теперь создадим первый файл нашего проекта:
touch file
Проект готов, но система контроля версий git еще не знает об этом.
Настройка проекта в git
Перед тем как git начнет отслеживать изменения, нужно подготовить все необходимые конфигурационные файлы. Сначала инициализируем пустой репозиторий в нашей папке:
git init
После того как репозиторий будет создан, вам нужно добавить свои файлы в него. Каждый файл нужно добавлять отдельно или сказать утилите, что необходимо добавить все файлы явно. Пока вы не добавите файл сам он не будет отслеживаться. Новые файлы в будущем тоже нужно добавлять, они не добавляются автоматически. Сначала добавим текущую папку:
git add .
Если все прошло хорошо, то команда ничего не выведет.
Фиксация изменений
Изменения тоже автоматически не отслеживаются. Фиксация изменений выполняется с помощью команды commit. Вам нужно указать что было изменено с помощью небольшого комментария, буквально в несколько предложений. Хорошая практика выполнять фиксацию перед каждым серьезным изменением.
Таким образом, вы будете хранить все версии проекта, от самой первой и до текущей, а также сможете знать что, когда и где было изменено. Чтобы создать свой первый коммит выполните:
git commit -m "Initial Commit" -a
Команде необходимо передать два параметра, первый - это -m, ваш комментарий, второй -a, означает, что нужно применить действие ко всем измененным файлам. Для первого раза используется этот параметр, но обычно вам нужно указать измененные файлы или каталоги. Например, можно делать так:
git commit -m "Changed file" file
Отправка изменений
До этого момента мы делали все в локальном репозитории. Вы можете использовать git локально, если нужен только контроль версий, но иногда нужно обменяться информацией с другими разработчиками и отправить данные в удаленный репозиторий.
Сначала нужно добавить удаленный репозиторий с помощью команды remote. Для этого нужно передать ей URL:
git remote add origin https://github.com/Seriyyy95/testing.git
Затем можно посмотреть список удаленных репозиториев:
git remote -v
Вы можете использовать не только github сервера, но и любые другие. Теперь для отправки ваших изменений используйте такую команду:
git push origin master
Команда push указывает, что нужно отправить данные в удаленный репозиторий, origin - наш настроенный репозиторий, а master - ветвь.
Управление ветвями
Для простых проектов достаточно одной ветви. Но если проект большой и он имеет несколько версий, в том числе тестовую, то может понадобиться создать для каждой из них отдельную ветвь. Сначала смотрим доступные ветви:
Опция -a указывает что нужно вывести все ветви, даже не синхронизированные. Звездочка указывает на активную ветвь. Теперь создадим ветвь для разработки с помощью команды checkout:
git checkout -b develop
Переключаться между ветвями можно тоже с помощью той же команды:
git checkout master
$ git checkout develop
Теперь создадим еще один файл:
touch develop
И добавим его в нашу новую ветвь develop:
git add develop
Сделаем коммит для внесенных изменений:
git commit -m "develop file" develop
Дальше проверим существует ли этот файл в основной ветке master или только в дополнительной. Смотрим текущую ветку:
git branch
$ ls
Затем переключаемся на ветку master и снова смотрим:
git checkout master
$ git branch
$ ls
Здесь файла нет, так и должно быть. В git есть такая полезная вещь, как слияние. С помощью нее вы можете объединить две ветви. Например, переместить код из рабочей ветки в стабильную. Для этого достаточно выполнить команду merge:
git merge develop --no-ff
Перед тем как будет выполнено слияние вам нужно ввести комментарий, зачем это нужно. Затем если вы еще раз выполните ls, то увидите, что здесь уже есть нужный файл. Наши примеры git подошли к концу.
Выводы
В этой статье мы рассмотрели как пользоваться git для управления версиями своих проектов. Это только самая основная информация, и система контроля версий git может еще очень многое, но рассмотрение его дополнительных возможностей выходит за рамки данной статьи. Надеюсь, эта статья была вам полезной.
Спасибо за статью, подумываю перенести кое что в ГИТ, но точно в терминале работать не буду, как на счет обзора программы GitEye или GitKraken?
Это было бы бомбой для меня, очень интересно.
Тоже GitKraken использую. По сути всё есть на оф.сайте, но было бы круто почитать переводы))
Думаю актуальнее GitEye, она и мощная и бесплатная
git gui тоже неплох
первая статья которая понравилась, спасибо.
от себя добавлю:
для удобства работы в консоле есть вот такая штука git-aware-prompt
еще очень удобно в башрс добавлять чет на подобии
example () {
cd ~/gitlab/example
}
Спасибо тебе, Ты крут, без подхалимажа. Твоя мысль четкая и структуриализированная.
Тема не такая уж заоблачной сложности, но подавляющее большинство несут полный сумбур, концами своей мысли утопая в болоте.
Легкого тебе дня!
worktree — управление !!деревнями! разработки.
worktree - управление деревнями разработки. я думаю имелись в виду деревья все таки)
Хочу купить