Для того чтобы история веток не переплеталась причудливым образом - умные люди придумали
Таким образом, процесс разработки в вашей ветке происходит так:
1. Почкуемся от мастера
2. Разрабатываем, коммитим.
3. Когда все готово и можно мержить в мастер выясняется что в мастере появились новые коммиты.
4. Конечно, можно наплевать на всё и сделать мерж, попутно разобравшись с конфликтами и увидеть в графе невероятные узоры).
Но можно сделать по-другому: оставаясь в ветке разработки, можно поребейзить на нее мастер и получить свои коммиты последними в истории ветки. После этого можно мержить и любоваться менее запутанным графом. Чтобы не мотаться туда-сюда по веткам и не набирать одно и то же миллионы раз - небольшой bash-скрипт:
Этот же скрипт на гисте.
Применяемые гит-алиасы (
git rebase
.Таким образом, процесс разработки в вашей ветке происходит так:
1. Почкуемся от мастера
2. Разрабатываем, коммитим.
3. Когда все готово и можно мержить в мастер выясняется что в мастере появились новые коммиты.
4. Конечно, можно наплевать на всё и сделать мерж, попутно разобравшись с конфликтами и увидеть в графе невероятные узоры).
Но можно сделать по-другому: оставаясь в ветке разработки, можно поребейзить на нее мастер и получить свои коммиты последними в истории ветки. После этого можно мержить и любоваться менее запутанным графом. Чтобы не мотаться туда-сюда по веткам и не набирать одно и то же миллионы раз - небольшой bash-скрипт:
#!/bin/bash
# Перемещаемся в каталог проекта
cd /path/to/project
# Основная ветка разработки, обычно "master"
baseBranch="base_branch"
# Выцепляем текущую ветку
curBranch=`git status |head -n 1| grep "branch" | cut -d ' ' -f 4`
# Если мы не на основной ветке - делаем ребейз, предварительно обновив основную ветку
if [ "$curBranch" != "$baseBranch" ];
then
echo "Updating $baseBranch"
git co "$baseBranch" && \
git plo "$baseBranch" &&
echo "$baseBranch updated"
echo "Moving to $curBranch and start rebasing"
git co "$curBranch" && \
git rebase "$baseBranch"
else
# иначе просто обновим основную ветку, так как мы уже в ней
git plo "$baseBranch"
fi
exit 0
Этот же скрипт на гисте.
Применяемые гит-алиасы (
plo - pull origin, co - checkout
) - в моей репе.
Комментариев нет:
Отправить комментарий