Основные Git команды: шпаргалка

В программировании серьёзных автоматизированных комплексов, как правило, задействованы несколько разработчиков, которые работают над одним проектом. При этом нужно как-то реализовать возможность параллельного ведения задачи без ущерба для неё. Каждый участник команды должен знать, что он пишет код, который не сможет удалить или изменить впоследствии другой программист.

При этом очень важно иметь возможность просмотреть историю изменений в разработке, тем самым быстро и надёжно локализуя проблемные места и ошибки.

С этими задачами призваны справляться системы контроля версий. И одной из них является продукт под названием Git.

Системы контроля версий: немного теории

Если вкратце — любая система контроля версий позволяет сохранять все внесённые в файл проекта изменения. Это дает возможность осуществлять контроль за ошибками в коде и быстрое их устранение.

Условно системы контроля версий можно разделить на три типа:

  • локальные;
  • централизованные;
  • распределенные.

Виды систем контроля версий

Локальный вариант позволяет вести базу данных со всеми изменениями в файле разрабатываемого проекта. Этот вид является наиболее простым и доступным и способен работать на компьютере программиста или участника.

Централизованные системы контроля версий решили такую актуальную проблему, как работа над проектом силами нескольких разработчиков. Ее суть заключается в том, что файлы хранятся не на локальном компьютере, а на определённом сервере, к которому он подключён. Таким образом, участники проекта могут получать доступ к различным версиям файлов, и становится легче контролировать, кто и чем занят при разработке. Однако если по какой-то причине сервер окажется недоступен или выйдет из строя, то возникнут серьёзные проблемы. Это может усугубится ещё и тем, что не всегда получается восстановить все данные обратно.

Распределенные системы контроля версий каждый раз при обращении к централизованному серверу создают полную копию всех файлов проекта на локальном компьютере пользователя. То есть в любой момент времени могут существовать множество копий одного проекта — на машинах участников и на сервере. Учитывая гибкие механизмы ветвления при таком подходе, можно и вовсе вести параллельную разработку в разных направлениях, при это оставаясь в рамках одного проекта. Git относится к распределенным системам управления версиями.

Git: описание и особенности системы

Система контроля версий Git обладает своими особенностями. Большинство систем хранит файлы, изменяя их в соответствии с инструкциями в проекте. То есть, к примеру, версия текущей разработки под номером 3 может содержать данные об изменениях в файле А и Б. А уже версия 4 будет иметь в себе А, Б и В. Таким образом, файлы меняются по необходимости.

Git работает немного по-другому. Каждая версия проекта будет содержать в себе варианты всех файлов А, Б и В. Вне зависимости от того, в скольких из них будут проведены изменения. Конечно, Git не хранит каждый экземпляр файла, а использует всего лишь ссылку на него.

Ещё одной важной особенностью является возможность непосредственной работы с локальным хранилищем. То есть если требуется делать правки, то их реализуют прямо на компьютере участника проекта. Это очень удобно, когда разработчик находится вдали от сети Интернет. Затем, при получении доступа к серверу, появится возможность отправить все данные в общее хранилище.

Для сохранения целостности данных применяется метод хеширования каждого изменённого файла методом SHA-1. Это позволяет системе контроля версий точно знать, где, кто и когда изменил файл.

Git: установка

Для того чтобы начать работать с Git, нужно его установить. Система контроля версий доступна для использования в Windows, Mac OS, Linux.

Версию для Windows можно скачать по адресу: git-for-windows.github.io. После загрузки программу нужно установить. Инсталлятор простой, так что эта процедура не должна вызвать проблем.

Очень часто пользователи сталкиваются с такой проблемой, при которой консоль пишет, что Git не является внутренней или внешней командой при попытке ввести данные. Решением может послужить добавление полного пути к каталогу в переменную окружения PATH.

Первые команды

После установки системы контроля версий на компьютер, ее необходимо настроить. Стоит отметить, что к этому моменту на сайте Github должен быть зарегистрирован свой аккаунт. Для того чтобы выполнить первоначальную настройку, нужно вызвать консольный клиент, так как придётся вводить команды. Сделать это можно, нажав правую кнопку мыши и выбрав пункт Git Bash. Должно открыться окно консольного клиента, которое пригласит ввести данные. В нем нужно выполнить последовательно Git Bash команды:

  • git config --global user.name ''Имя'';
  • git config --global user.mail ''Адрес электронной почты''.

На этом же этапе необходимо настроить метод окончания строк с помощью двух команд:

  • git config --global core.autocrlf true;
  • git config --global core.safecrlf false.

Для первичной настройки Git этого достаточно. Далее будут использоваться только команды для управления проектами.

Основные команды Git

  • Init: данная команда создаёт новый репозиторий.

Пример использования: init имя проекта.

  • Clone. Производит копирование существующего репозитория с удалённого источника.

Вот так используется команда git clone: clone git://github.com/путь к репозиторию.

  • Add. Наиболее часто используемая команда в системе контроля версий Git. Она выполняет простую задачу — добавляет указанные файлы в особую область, именуемую индексом или сценой. В неё можно перенести несколько файлов или папок, которые необходимо будет впоследствии добавить в репозиторий или, выражаясь на языке Git, «закоммитить».

Пример использования этой Git команды выглядит так: add некий_файл.txt.

  • Status. Позволяет просмотреть список файлов, которые присутствуют в индексе и рабочей папке. Служит для контроля и просмотра готовых к коммиту данных или их изменённых, но не внесённых версий в сцену.

  • Diff. Показывает разницу состояний. Например, с помощью этой Git команды можно определить, есть ли изменения между папкой с проектом и индексом.
  • Commit. Выполняет сохранение слепка всего того, что находилось в индексе непосредственно в базу данных. В результате работы Git команды на экране отобразится текстовый файл, в котором можно указать, какие именно изменения были произведены. А также будет выведена информация о том, сколько файлов подверглись коммиту, и его контрольная сумма. Главное - не забывать о том, что после изменения в базу попадут только те данные, которые были занесены в индекс командой git add.

Дополнительные команды Git

  • Reset. О функциях этой команды говорит ее название. Она просто выбрасывает из специальной промежуточной области — индекса, указанный файл, помещённый туда по случайности. Стоит осторожно обращаться с reset при использовании команды с ключом - - hard, так как это затронет и файлы в рабочей папке, что может привести к непредвиденным последствиям.
  • Rm. Наиболее точно эту команду можно описать как обратную git add, так как она удаляет файлы из индекса. Правда, при этом ещё и из рабочей папки.

Пример использования: git rm некий_файл.txt.

  • Mv. Служит для перемещения файла.
  • Clean. Предназначена для очистки папки проекта от ненужных файлов.

Представленные команды используются для общих нужд проекта.

Работа с ветками репозиториев в Git

Для управления ветками в Git имеется специальный набор команд. Они способны соединять, удалять, создавать ветвления в Git. Список команд представлен ниже.

  • Branch. У этой команды имеется в наличии несколько ключей, используя которые можно гибко управлять ветками в проекте. Branch представляет собой некий многопрофильный инструмент для полноценного контроля за состоянием репозитория. Простой вызов git branch выдаст перечень всех имеющихся веток хранилища. Ключ -v добавленный к команде отобразит какие коммиты были зафиксированы за последнее время. А использование -d приведёт к удалению указанной ветки. Branch умеет не только удалять, но и создавать. Выполнение git branch имя_ветки приведёт к организации новой ветки в проекте. Стоит учесть, что при этом указатель текущего рабочего положения бывает иным. К примеру, создав имя_ветки, можно на самом деле находится в ветке master.
  • Чтобы переместиться в нужный пункт, существует команда Git checkout нужная_ветка, которая переставит указатель в необходимую ветку.
  • Checkout. Как уже говорилось выше, выполняет переключение.
  • Merge. Данная команда позволяет производить слияние нескольких веток воедино.
  • Log. Функция отображает все изменения от начала проекта и до последнего коммита. Использование разнообразных ключей совместно с вызовом команды позволяет расширить ее функционал. Например, вызов git log -p -2 позволит просмотреть подробную информацию об изменениях в каждом коммите. Второй ключ -2 говорит о том, что нужно показать лишь 2 последних изменения. Аргумент --stat, добавленный к вызову git log, выполнит практически то же самое, что и -р, но в более подробной и при этом компактной форме. Также с помощью git log можно выводить информацию об изменениях, создав собственный формат отображения, используя опции format ключа pretty. Для придания особого вида нужно использовать некое подобие регулярных выражений. Например, такая запись get log --pretty=format ''%h, %an, %ar, %s'' выведет краткий хэш коммита, затем его автора, дату и комментарий изменения. Это очень удобно использовать при просмотре большого количества коммитов.

Команды для распределенной работы в системе

  • Fetch. При вводе данной команды git консоль выполнит перенос всех изменений с удалённого хранилища в локальное.
  • Pull. Команда git pull представляет собой симбиоз двух перечисленных выше — git fetch и git merge. То есть она сначала получает сведения из удалённого репозитория, а затем выполняет слияние с использующейся в данный момент веткой.
  • Push. Именно от названия этой команды в среде пользователей появилось выражение «запушить», что означает соединение с удаленным репозиторием и передачу туда изменений из локального.

Команды удаленного управления

  • Remote. Представляет собой мощный инструмент для управления удалёнными репозиториями. С помощью remote их можно удалять, просматривать, перемещать или же создавать новые.
  • Archive. Название говорит само за себя. Команда позволяет создавать архив с нужными изменениями, например, для подготовки к передаче его по Сети.

Как использовать данную шпаргалку

Представленные в статье материалы не отражают все Git команды. Шпаргалка скорее призвана помочь новичкам, желающим освоить этот довольно сложный продукт для контроля версий. Людям, уже некоторое время активно использующим Git, она поможет вспомнить внезапно забытый ключ команды или ее написание.

На самом деле система контроля версий Git обладает огромным потенциалом в плане настройки и управления. Обилие команд и несколько ключей, использующихся в них — лучшее тому подтверждение. Для тех, кто желает подробно изучить все свойства и настройки Git, существует масса мануалов, в том числе и официальный от Github, в котором подробно описывается система в целом и все тонкости использования команд.

Комментарии