Вкратце: лучшая практика - это разветвление, частое слияние и постоянная синхронизация .
Есть довольно четкие соглашения о хранении вашего кода в отдельной ветке от основной ветки:
- Вы собираетесь осуществить серьезные или разрушительные изменения
- Вы собираетесь внести некоторые изменения, которые могут быть не использованы
- Вы хотите поэкспериментировать на чем-то, что вы не уверены, что это сработает
- Когда вам говорят разветвиться, другие могут что-то сделать в мастере
Основное правило: после ветвления вы должны синхронизироваться с основной ветвью. Потому что в конце концов вам нужно объединить его обратно с мастером. Чтобы избежать огромного запутанного конфликта конфликтов при слиянии назад, вы должны часто совершать коммиты, слияния часто.
Хорошая практика для подражания
Успешное Гит ветвление модель от Vincent Driessen имеет хорошие предложения. Если вам подходит эта модель ветвления, рассмотрите расширение потока для git . Другие прокомментировали поток .
Метки маркировки
Как вы уже знаете, Git предоставляет вам идентификаторы коммитов, такие как 1.0-2-g1ab3183, но это не теги! Маркировка выполняется с помощью тега git, а теги, созданные с помощью тега git, являются основой для идентификаторов фиксации, которые создает git-описание. Другими словами, в Git вы не помечаете ветки. Вы помечаете коммиты. Правильно сказать, что тег - это просто аннотированный указатель на коммит.
Давайте посмотрим на практический пример, который продемонстрировал это,
/ - [v1.0]
v
---. ---. --- .--- S ---.--- A <- master
\
\ -.--- B <- тест
Давайте сделаем коммит 'S', указанный тегом v1.0. Этот коммит как на ветке 'master', так и на ветке 'test'. Если вы запустите « git description » поверх коммита «A» (верх ветки «master»), вы получите что-то вроде v1.0-2-g9c116e9
. Если вы запустите "git description" поверх коммита 'A' (он же ветвь 'test'), вы получите что-то похожее v1.0-2-g3f55e41
, как в случае с конфигурацией git-description по умолчанию. Обратите внимание, что этот результат немного отличается. v1.0-2-g9c116e9
означает, что мы находимся в коммите с отсортированным идентификатором SHA-1 9c116e9
, 2 коммитов после тега v1.0
. Там нет тега v1.0-2
!
Если вы хотите, чтобы ваш тег появлялся только в ветке 'master', вы можете создать новый коммит (например, только обновить информацию о версии по умолчанию / резервной версии в GIT-VERSION-FILE) после точки ветвления ветки 'test'. Если вы пометите коммит в ветке 'test', например, 'v1.0.3`, это будет видно только из' test '.
Рекомендации
Я нашел много, много полезных блогов и постов для изучения. Однако, те, которые профессионально иллюстрированы, редки. Таким образом, я хотел бы рекомендовать пост - успешную модель ветвления Git от @nvie. Я позаимствовал его иллюстрацию :)