вторник, 8 ноября 2016 г.

git-rebase скрипт

Для того чтобы история веток не переплеталась причудливым образом - умные люди придумали 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) - в моей репе.

Комментариев нет:

Отправить комментарий