-
Notifications
You must be signed in to change notification settings - Fork 41
Git для новичка
- Git Book - Полезная книга для прочтения, в ней описаны возможности 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
Development ветка, в нее сливаются все новые изменения.
- Содержать только стабильные изменения для разработки
- Мержить с feature/*-* ветками
- Мержить с bugfix/*-* ветками
- Откатывать на удаленном репозитории с помощью
reset
Ветка для конкретного таска. Перед мержем в master для нее [необходимо сделать rebase](#Как делать rebase относительно ветки master).
- Начинаться от ветки master
- Откатывать на удаленном репозитории с помощью
reset
- Мержить с веткой master
- Мержить с feature/*-* ветками
- Мержить с bugfix/*-* ветками
- Использовать, если она уже смержена с веткой master
Исправление багов для конкретного feature/*-*, если тот уже был смержен с веткой master. Перед мержем в master для нее [необходимо сделать rebase](#Как делать rebase относительно ветки master).
- Начинаться от ветки master
- Откатывать на удаленном репозитории с помощью
reset
- Мержить с веткой master
- Мержить с feature/*-* ветками
- Мержить с bugfix/*-* ветками
- Использовать, если она уже смержена с веткой master
Базовый шаблон TYPE/ISSUE_ID-DESCRIPTION
Может принимать следующие значения в зависимости от типа задачи:
-
feature
- реализация новой фичи -
bugfix
- исправление ошибок во feature/*-* ветке, если та уже была смержена с веткойmaster
Номер таска.
Краткое описание изменений.
- feature/104-dashboard
- bugfix/104-dashboard
Для работы с удаленным репозиторием необходимо добавить его к себе, выполняем:
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
как в основном репозитории.
Для начала локальная ветка 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 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