Git — система контроля версий (version control system, VCS), созданная программистом Линусом Торвальдсом для управления разработкой ядра Linux в 2005 году. Хорошо, а что это всё-таки значит?
Представьте, что вы с коллегами вместе пишете ядро Linuxнаучную статью. У вас на компьютере есть папка, где лежат текстовые документы, картинки, графики и прочие нужные файлы; то же самое есть и у ваших коллег. Когда кто-то из вас изменяет, добавляет или удаляет файлы, остальные этих изменений не видят.
Вы пишете друг другу об изменениях, пересылаете обновленные версии файлов, но в процессе работы непременно возникает путаница: какая версия текста — последняя? Куда и когда исчезла пара абзацев? Кто внес те или иные правки? Избежать таких проблем и помогают системы контроля версий. Устроено это так:
- Ваша папка на компьютере — это не просто папка, а локальный репозиторий.
- Она является копией удалённого репозитория, который лежит на веб-хостинге (например, GitHub или BitBucket).
- Eсли вы работаете над проектом с коллегами, то своя локальная копия есть у каждого.
- Kогда вы внесли некоторое количество изменений, вы можете их сохранить, и это действие запишется в журнал; это называется commit (коммит).
- После этого можно отправить изменения в удалённый репозиторий; это называется push (пуш, пу́шить, запу́шу, пуши́ от души).
- Актуальная версия проекта, учитывающая последние изменения всех участников, будет храниться в удалённом репозитории.
- Если вы увидели, что ваши коллеги запушили в удалённый репозиторий что-то новенькое, то можно (и нужно!) “скопировать” это себе на компьютер (в локальный репозиторий); это называется pull (пулл).
Чем-то похоже на Dropbox, Google Drive и прочие облачные хранилища, правда? Только в данном случае ваши файлы синхронизируются не автоматически, а по команде, и возможностей управления ими гораздо больше.
Что такое Git? ДЛЯ НОВИЧКОВ / Про IT / Geekbrains
Понятно, что для совместной работы над текстом научной статьи вполне хватит и Google Docs, но вот если, например, вы хотите опубликовать результаты исследования в интернете и сделать для этого собственный сайт, то без VCS обойтись сложно. И ещё раз, системы контроля версий хороши тем, что:
- они позволяют работать над проектом в команде;
- вы видите, кем и когда были внесены те или иные изменения;
- их всегда можно откатить назад;
- вы не потеряете проделанную работу, даже если что-то удалите на своем компьютере;
- ваши наработки могут быть полностью открыты для других (а это доступность знаний и ускорение развития технологий, ура!);
- GitHub и GitLab позволяют не только хранить и просматривать файлы проекта, но и публиковать веб-сайты, документацию и т.п.
Существует много систем управления версиями, но мы будем пользоваться самой распространенной — git. Также нам нужно как-то отдавать гиту команды, и делать это можно двумя способами: с помощью командной строки и через графический интерфейс (graphical user interface, GUI). Графический интерфейс программы — это все те окошки с кнопочками, которые мы привыкли видеть. Существует много графических интерфейсов для Git, например:
Что такое Git?
Git: простое руководство о том, как стать мастером контроля версий
Git — это мощная система контроля версий, которая помогает управлять проектами и сотрудничать с другими разработчиками. Без хорошего руководства ее довольно сложно освоить. Этот гайд поможет разобраться в том, как используется Git, и предоставит инструменты, с помощью которых вы станете мастером контроля версий.
Основы контроля версий
После установки Git важно понять основы контроля версий. Контроль версий позволяет отслеживать изменения в коде с течением времени и при необходимости возвращаться к предыдущим версиям. Вы также можете использовать ветви, чтобы создавать отдельные версии проекта для различных целей, например для разработки и производства.
Для получения полного списка команд Git используйте команду git -help в командной строке (Windows), терминале (Mac OS X) или оболочке (Linux).
Вот некоторые из основных команд Git.
- git clone загружает копию репозитория Git с удаленного сервера на локальный компьютер.
- git add добавляет файлы в область хранения, где они могут быть подготовлены для коммитинга.
- git commit сохраняет изменения, внесенные в файлы в локальном репозитории.
- git push загружает локальные коммиты в удаленный репозиторий.
- git pull выполняет выгрузку изменений из удаленного репозитория и их слияние с локальным репозиторием.
- git branch используется для создания и просмотра ветвей в репозитории Git. Ветви позволяют нескольким специалистам одновременно работать над различными аспектами проекта, не затрагивая основную кодовую базу.
- git merge объединяет в одну ветку изменения, внесенные в разных ветках.
Кроме этого, в вашем распоряжении есть множество более продвинутых команд, которые можно использовать для решения специфических задач.
Продвинутые технологии Git
После освоения основ контроля версий, приступим к изучению более продвинутых технологий, таких как ветвление и слияние. Ветвление позволяет создавать отдельные версии проекта для разных целей, а слияние — объединять несколько ветвей в одну единую версию. Можно также использовать теги, чтобы отмечать определенные моменты в истории проекта, что в дальнейшем облегчит поиск нужных версий.
Ниже представлены продвинутые команды Git.
- git stash сохраняет изменения, которые еще не были закоммичены, и возвращает репозиторий к его предыдущему состоянию. Это полезно, когда нужно перейти на другую ветку, но при этом не коммитить изменения.
- git rebase интегрирует изменения из одной ветки в другую, что позволяет переписать историю коммитов ветки, создавая впечатление, что изменения произошли одновременно, а не как серия отдельных коммитов.
- git bisect выполняет двоичный поиск в истории коммитов, чтобы определить, в каком коммите была обнаружена ошибка. Эта команда может быть использована для быстрого поиска источника проблемы в большой базе данных.
- git cherry-pick позволяет выбрать определенные коммиты из одной ветки и применить их к другой ветке. Это полезно, когда нужно включить изменения из одной ветки в другую, но при этом не выполнять слияние всей ветки.
Совместная работа с помощью Git
Git значительно упрощает совместную работу, позволяя нескольким разработчикам одновременно трудиться над одним проектом. Вы можете использовать ветви и теги для отслеживания различных версий и убедиться, что все работают над одной и той же версией проекта. Можно также применять запросы на включение изменений (пул-реквесты) для проверки изменений до их слияния с основной веткой. Это гарантирует, что все будут на одной волне, когда дело дойдет до изменений кода.
Как видите, не стоит пугаться Git — откройте его возможности и начните использовать их уже сегодня!
- Руководство для начинающих по Git: что такое журнал изменений и как его создать
- 3 основных закона разработки ПО
- Продвинутый CLI: команды, которые должен знать каждый разработчик
Читайте нас в Telegram, VK и Дзен
Источник: medium.com
Git для новичков (часть 1)
Git — это консольная утилита, для отслеживания и ведения истории изменения файлов, в вашем проекте. Чаще всего его используют для кода, но можно и для других файлов. Например, для картинок — полезно для дизайнеров.
С помощью Git-a вы можете откатить свой проект до более старой версии, сравнивать, анализировать или сливать свои изменения в репозиторий.
Репозиторием называют хранилище вашего кода и историю его изменений. Git работает локально и все ваши репозитории хранятся в определенных папках на жестком диске.
Так же ваши репозитории можно хранить и в интернете. Обычно для этого используют три сервиса:
Каждая точка сохранения вашего проекта носит название коммит (commit). У каждого commit-a есть hash (уникальный id) и комментарий. Из таких commit-ов собирается ветка. Ветка — это история изменений. У каждой ветки есть свое название.
Репозиторий может содержать в себе несколько веток, которые создаются из других веток или вливаются в них.
Как работает
Если посмотреть на картинку, то становиться чуть проще с пониманием. Каждый кружок, это commit. Стрелочки показывают направление, из какого commit сделан следующий. Например C3 сделан из С2 и т. д. Все эти commit находятся в ветке под названием main . Это основная ветка, чаще всего ее называют master . Прямоугольник main* показывает в каком commit мы сейчас находимся, проще говоря указатель.
В итоге получается очень простой граф, состоящий из одной ветки ( main ) и четырех commit. Все это может превратиться в более сложный граф, состоящий из нескольких веток, которые сливаются в одну.
Об этом мы поговорим в следующих статьях. Для начала разберем работу с одной веткой.
Установка
Основой интерфейс для работы с Git-ом является консоль/терминал. Это не совсем удобно, тем более для новичков, поэтому предлагаю поставить дополнительную программу с графическим интерфейсом (кнопками, графиками и т.д.). О них я расскажу чуть позже.
Но для начала, все же установим сам Git.
- Windows. Проходим по этой ссылке, выбираем под вашу ОС (32 или 64 битную), скачиваем и устанавливаем.
- Для Mac OS. Открываем терминал и пишем:
#Если установлен Homebrew brew install git #Если нет, то вводим эту команду. git —version #После этого появится окно, где предложит установить Command Line Tools (CLT). #Соглашаемся и ждем установки. Вместе с CLT установиться и git
- Linux. Открываем терминал и вводим следующую команду.
# Debian или Ubuntu sudo apt install git # CentOS sudo yum install git
Настройка
Вы установили себе Git и можете им пользоваться. Давайте теперь его настроим, чтобы когда вы создавали commit, указывался автор, кто его создал.
Открываем терминал (Linux и MacOS) или консоль (Windows) и вводим следующие команды.
#Установим имя для вашего пользователя #Вместо можно ввести, например, Grisha_Popov #Кавычки оставляем git config —global user.name «» #Теперь установим email. Принцип тот же. git config —global user.email «»
Создание репозитория
Теперь вы готовы к работе с Git локально на компьютере.
Создадим наш первый репозиторий. Для этого пройдите в папку вашего проекта.
#Для Linux и MacOS путь может выглядеть так /Users/UserName/Desktop/MyProject #Для Windows например С://MyProject cd #Инициализация/создание репозитория git init
Теперь Git отслеживает изменения файлов вашего проекта. Но, так как вы только создали репозиторий в нем нет вашего кода. Для этого необходимо создать commit.
#Добавим все файлы проекта в нам будующий commit git add . #Или так git add —all #Если хотим добавить конкретный файл то можно так git add #Теперь создаем commit. Обязательно указываем комментарий. #И не забываем про кавычки git commit -m «»
Отлично. Вы создали свой первый репозиторий и заполнили его первым commit.
Процесс работы с Git
Не стоит после каждого изменения файла делать commit. Чаще всего их создают, когда:
- Создан новый функционал
- Добавлен новый блок на верстке
- Исправлены ошибки по коду
- Вы завершили рабочий день и хотите сохранить код
Это поможет держать вашу ветки в чистоте и порядке. Тем самым, вы будете видеть историю изменений по каждому нововведению в вашем проекте, а не по каждому файлу.
Визуальный интерфейс
Как я и говорил ранее, существуют дополнительные программы для облегчения использования Git. Некоторые текстовые редакторы или полноценные среды разработки уже включают в себя вспомогательный интерфейс для работы с ним.
Но существуют и отдельные программы по работе с Git. Могу посоветовать эти:
Я не буду рассказывать как они работают. Предлагаю разобраться с этим самостоятельно.
Создаем свой первый проект и выкладываем на GitHub
Давайте разберемся как это сделать, с помощью среды разработки Visual Studio Code (VS Code).
Перед началом предлагаю зарегистрироваться на GitHub.
Создайте папку, где будет храниться ваш проект. Если такая папка уже есть, то создавать новую не надо.
После открываем VS Code .
- Установите себе дополнительно анализаторы кода для JavaScript и PHP
- Откройте вашу папку, которую создали ранее
После этого у вас появится вот такой интерфейс
- Здесь будут располагаться все файлы вашего проекта
- Здесь можно работать с Git-ом
- Кнопка для создания нового файла
- Кнопка для создания новой папки
Если ваш проект пустой, как у меня, то создайте новый файл и назовите его index.html . После этого откроется окно редактирование этого файла. Напишите в нем ! и нажмите кнопку Tab . Автоматически должен сгенерироваться скелет пустой HTML страницы. Не забудьте нажать ctrl+s чтобы файл сохранился.
Давайте теперь перейдем во вкладу для работы с Git-ом.
Откроется вот такое окно:
- Кнопка для публикации нашего проекта на GitHub
- После нажатия на кнопку 1 , появится всплывающее окно. Нужно выбрать второй вариант или там где присутствует фраза . public repository
Если вы хотите создать локальный репозиторий и опубликовать код в другой сервис, то необходимо нажать на кнопку Initialize Repository . После этого, вручную выбрать сервис куда публиковать.
После того, как выбрали «Опубликовать на GitHub публичный репозиторий» (пункт 2), программа предложит вам выбрать файлы, которые будут входить в первый commit. Проставляем галочки у всех файлов, если не проставлены и жмем ОК . Вас перекинет на сайт GitHub, где нужно будет подтвердить вход в аккаунт.
Вы создали и опубликовали репозиторий на GitHub.
Теперь сделаем изменения в коде и попробуем их снова опубликовать. Перейдите во вкладку с файлами, отредактируйте какой-нибудь файл, не забудьте нажать crtl+s (Windows) или cmd+s (MacOS), чтобы сохранить файл. Вернитесь обратно во вкладу управления Git.
Если посмотреть на значок вкладки Git, то можно увидеть цифру 1 в синем кружке. Она означает, сколько файлов у нас изменено и незакоммичено. Давайте его закоммитим и опубликуем:
- Кнопка для просмотра изменений в файле. Необязательно нажимать, указал для справки
- Добавляем наш файл для будущего commit
- Пишем комментарий
- Создаем commit
- Отправляем наш commit в GitHub
Поздравляю, вы научились создавать commit и отправлять его в GitHub!
Итог
Это первая вводная статья по утилите Git. Здесь мы рассмотрели:
- Как его устанавливать
- Как его настраивать
- Как инициализировать репозиторий и создать commit через консоль
- Как на примере VS Code, опубликовать свой код на GitHub
Забегая вперед, советую вам погуглить, как работают следующие команды:
git help # справка по всем командам git clone git status git branch git checkout git merge git remote git fetch git push git pull
P.S. Для облегчения обучения, оставлю вам ссылку на бесплатный тренажер по Git.
В телеграмм канале Step by Step , я публикую еще больше материала и провожу обучающие стримы, для всех желающих.
Источник: habr.com