You are here

Работа с GIT для начинающих. Инструкция и краткий набор команд

Git - это распределенная система контроля версий. Используется для отслеживания изменений в файлах (исходные коды, документы и т.п.) и сохранения их версий с возможностью возврата к любому сохраненному состоянию файлов. Наиболее часто используется для исходных кодов, отслеживания "кто", "когда", "что" и "зачем" изменил, а также с возможностью отменять неудачные изменения. Система полностью локальная, поэтому, для того чтобы пользоваться всеми возможностями системы контроля версий, удаленный репозиторий не обязателен. Удаленный репозиторий используется для совместного доступа к изменениям кода всей команды разработчиков.

Базовые команды git

git add .
Добавляет в индекс все файлы. используется только когда в проекте появились новые файлы.

git commit -am "[действие] описание"
Сохраняем изменения в локальном репозитории с указанием комментария.
Параметр "-a" означает добавить в индекс измененные файлы (кроме новых, которые добавляются через git add .).
Параметр -m говорит что еще будет указан комментарий (message)

git checkout -b new_branch
Создать ветку (отпочковать от текущей) и сразу переключиться на нее

git push
Залить изменения на удаленный сервер. Возможно запросит пароль от удаленного сервера

git pull
Скачать изменения из репозитория в локальную ветку (когда кто то другой запушил туда свои изменения) и выполнить слияние со своими локальными изменениям.

git status
Показывает текущее состояние репозитория. Используется чтобы проверить в каком состоянии находятся файлы: надо ли закоммитить что-то или добавить в индекс или выполнить pull или push.
Фактически git status показывает состояние по файлам которые были изменены со времени последнего коммита.

Основная тактика работы с git

Используем модель ветвления, когда есть ветки:

  1. master - это "продакшн". Основная ветка, которая содержит последнюю версию рабочего проекта. Все изменения которые сливаются в master - проходят проверку и тестирование.
  2. develop - это рабочая ветка, где правятся небольшие фиксы и куда сливаются (объединяются изменения) все остальные ветки. Если надо создать новую ветку, то почкуемся от этой ветки.
  3. другие ветки - это ветки, которые создаются под задачи, которые требуют более одного или нескольких коммитов. Например нам необходимо разработать какой то дополнительный функционал, то мы создаем под него отдельную ветку.

Это идеальная схема. К ней мы стремимся. На практике обычно получается что ветка develop - основная ветка, а в master периодически сливаются контрольные точки. Связано с тем что бывает  надо срочно поправить ошибку и быстрее сделать изменения и залить файл на production, чем сливать ветки и коммитить в master.

Далее. Желательно чтобы под каждое логическое изменения создавать коммит. Фактически - чем больше коммитов - тем лучше.

  • Поправили где то стили - создали коммит.
  • Исправили ошибку - создали коммит.
  • Реализовали часть логики нового модуля - создали коммит.
  • Оттестировали логику нового модуля и внесли исправления - создали коммит.
  • По окончании рабочего дня или по просьбе коллеги - запушили проект на сервер.

Правило комментирования для коммитов git

Это внутрение правила для компании.

  1. Стараемся следовать атомарному правилу, когда на один коммит приходится какое то одно действие. пушить можно не каждый коммит, но желательно каждый раз в конце рабочего дня (можно и чаще)
  2. Комментарии к коммиту на англ. языке в формате "[действие] description". Действие может быть:
    fix - исправление ошибки
    new - реализация чего то нового
    mod - изменение чего-то существующего
    Например, коммент к текущему коммиту может выглядеть как "[new] add field repurchase to orders table"
  3. Комментарии должны быть короткие, желательно умещаться в 50 символов. Если необходимо более развернутое сообщение, то пишем обобщение коммита в 50 символов, дальше пустая строка и детальное описание.
  4. Комментарий пишется на англ. языке (не русскоязычные фразы и англицизмы, а полноценный английский). Можно на ломанном и корявом - лишь бы основной смысл был понятен (можно пользоваться переводчиком). Не длинное, несколько фраз чтобы было понятно что именно в этом коммите без просмотров дифов.

Дебаг в коммиты желательно чтобы не попадал (dd, dpm, ...) Если с этим проблема, то вот чтобы дебаг не попадал в коммиты: http://dropbucket.org/node/655

Полезные ссылки по git

Уровень: 

Comments

Добрый день! Подскажите как быть, хочу использовать Git для совместных разработок в Delphi7, но боюсь что часто будут возникать конфликты из-за того что двое разработчиков чуть форму сдвинут и поменяется Top, Left в файле описания формы. Можно ли как-то игнорировать изменения в определенных строчках?

Конфликтов не будет, если будете работать в рамках маленьких коммитов и почаще подливать себе последние изменения.

Add new comment