Skip to content
This repository has been archived by the owner on Nov 24, 2020. It is now read-only.

Git для новичка

Andrew Grekov edited this page Sep 14, 2016 · 3 revisions

Литература

  • Git Book - Полезная книга для прочтения, в ней описаны возможности git.

Настройки GIT

Сразу после установки GIT в Windows необходимо в консоли задать правильные значения переменных:

 git config --global user.name "John Doe"
 git config --global user.email [email protected]

И в консоли, запущенной с правами администратора, выполнить команды:

 git config --system core.autocrlf false &
 git config --system core.ignorecase true &
 git config --system core.longpaths true &
 git config --system core.ignorecase true

Git flow

Структура и описание веток

master

Development ветка, в нее сливаются все новые изменения.

Данная ветка должна:

  • Содержать только стабильные изменения для разработки

Данную ветку можно:

Данную ветку нельзя:

  • Откатывать на удаленном репозитории с помощью reset

feature/*-*

Ветка для конкретного таска. Перед мержем в master для нее [необходимо сделать rebase](#Как делать rebase относительно ветки master).

Данная ветка должна:

  • Начинаться от ветки master

Данную ветку можно:

  • Откатывать на удаленном репозитории с помощью reset
  • Мержить с веткой master

Данную ветку нельзя:

  • Мержить с feature/*-* ветками
  • Мержить с bugfix/*-* ветками
  • Использовать, если она уже смержена с веткой master

bugfix/*-*

Исправление багов для конкретного feature/*-*, если тот уже был смержен с веткой master. Перед мержем в master для нее [необходимо сделать rebase](#Как делать rebase относительно ветки master).

Данная ветка должна:

  • Начинаться от ветки master

Данную ветку можно:

  • Откатывать на удаленном репозитории с помощью reset
  • Мержить с веткой master

Данную ветку нельзя:

  • Мержить с feature/*-* ветками
  • Мержить с bugfix/*-* ветками
  • Использовать, если она уже смержена с веткой master

Ведение веток

Name convention

Базовый шаблон TYPE/ISSUE_ID-DESCRIPTION

TYPE

Может принимать следующие значения в зависимости от типа задачи:

  • feature - реализация новой фичи
  • bugfix - исправление ошибок во feature/*-* ветке, если та уже была смержена с веткой master

ISSUE_ID

Номер таска.

DESCRIPTION

Краткое описание изменений.

Примеры

  • feature/104-dashboard
  • bugfix/104-dashboard

Работа с Git во время выполнения таска

Добавление удаленного репозитория

Для работы с удаленным репозиторием необходимо добавить его к себе, выполняем:

git remote add upstream [email protected]:yegorf1/RogueBot.git

Получение свежей ветки с мастера

Для таких вещей конечно же можно использовать git pull, но этот способ не очень хорош, потому что если локальная ветка отличается от ветки на удаленном репозитории, то git сделает автоматический merge и создаст commit. В итоге мы получим примерно следующую картину в репозитории.

Поэтому лучше всего получать изменения ветки master вручную.

Фетчим все удаленные репозитории:

 git fetch --all

Находясь в ветке master выполняем следующее:

 git reset --hard upstream/master

Это сделает локальный master как в основном репозитории.

Как делать rebase относительно ветки master

Для начала локальная ветка master должна быть [актуальной](#Получение свежей ветки с мастера).

Далее находясь в рабочей ветке выполняем:

 git rebase origin/master

Если эта ветка уже есть на удаленном репозитории, то необходимо выполнить:

 git push origin HEAD --force

Данная команда полностью перезапишет ветку.

Работа с веткой для таска

Название ветки согласовано в [Name convention](#Name convention). На данный момент мы не используем какой-либо git-flow, поэтому все действия описываются относительно ветки master.

Прежде чем мержить данную ветку в master, [необходимо сделать rebase](#Как делать rebase относительно ветки master).

Как только rebaseпроведен ветку можно мержить с веткойmaster. Единственно что стоит добавить параметр --no-ff`:

 git merge foo/000-bar --no-ff

Этот параметр упрощает в дальнейшем просмотр изменений сделанных по данному таску.

Замечания

  • Нельзя откатывать удаленный master.
  • Нельзя продолжать работать с веткой feature/*-* или bugfix/*-*, если она уже была смержена с веткой master.

Полезные команды GIT

Чистка локального репозитория от удаленных удаленных бранчей:

 git fetch origin --prune

Красивый лог в консоли:

 git log --oneline --decorate --graph

Имена файлов в логе:

 git log --name-status

Забавная статья о работе с гит

http://web.archive.org/web/20160119193123/http://rsdn.ru/article/tools/Git.xml