Проект

Общее

Профиль

GIT WorkFlow » История » Версия 1

Владимир Ипатов, 04.03.2014 19:58

1 1 Владимир Ипатов
h1. GIT WorkFlow
2 1 Владимир Ипатов
3 1 Владимир Ипатов
В ветку develop должны попадать уже проверенные изменения. Поэтому кидать в нее не утвержденные пулл реквесты смысла нет.
4 1 Владимир Ипатов
5 1 Владимир Ипатов
Поэтому предлагается для согласования создавать *в основном репозитории* новые feature-веткии и в них совместно работать.
6 1 Владимир Ипатов
Когда feature-ветка будет одобрена, она вливается в develop и удаляется.
7 1 Владимир Ипатов
8 1 Владимир Ипатов
Сценарий такой:
9 1 Владимир Ипатов
10 1 Владимир Ипатов
h2. Автор изменения
11 1 Владимир Ипатов
12 1 Владимир Ипатов
Создает в своем локальном репе ветку FEATURE на основе develop
13 1 Владимир Ипатов
Когда ветка готова к публикации:
14 1 Владимир Ипатов
15 1 Владимир Ипатов
<pre>
16 1 Владимир Ипатов
git checkout develop
17 1 Владимир Ипатов
git pull upstream develop
18 1 Владимир Ипатов
git checkout FEATURE
19 1 Владимир Ипатов
git rebase -i develop # объединять коммиты не обязательно
20 1 Владимир Ипатов
git push upstream FEATURE
21 1 Владимир Ипатов
</pre>
22 1 Владимир Ипатов
23 1 Владимир Ипатов
Сообщает участникам, что ветка FEATURE готова для тестирования
24 1 Владимир Ипатов
25 1 Владимир Ипатов
h2. Участник
26 1 Владимир Ипатов
27 1 Владимир Ипатов
Получив сообщение о необходимости обработки FEATURE
28 1 Владимир Ипатов
29 1 Владимир Ипатов
<pre>
30 1 Владимир Ипатов
git fetch upstream
31 1 Владимир Ипатов
git checkout -t upstream/FEATURE
32 1 Владимир Ипатов
</pre>
33 1 Владимир Ипатов
34 1 Владимир Ипатов
Получает ветку FEATURE, привязанную к upstream/FEATURE.
35 1 Владимир Ипатов
Из этой ветки, git push будет по умолчанию проталкивать в upstream/FEATURE.
36 1 Владимир Ипатов
37 1 Владимир Ипатов
Далее участник исследует/тестирует изменения.
38 1 Владимир Ипатов
и т.д.
39 1 Владимир Ипатов
40 1 Владимир Ипатов
Если участник исправляет код, то он сохраняет изменения в ветке FEATURE и делает
41 1 Владимир Ипатов
42 1 Владимир Ипатов
<pre>
43 1 Владимир Ипатов
git push
44 1 Владимир Ипатов
</pre>
45 1 Владимир Ипатов
46 1 Владимир Ипатов
h2. Завершение FEATURE
47 1 Владимир Ипатов
48 1 Владимир Ипатов
Когда будет принято решение влить изменения в develop, автор или кто-то еще с доступом к upstream:
49 1 Владимир Ипатов
50 1 Владимир Ипатов
<pre>
51 1 Владимир Ипатов
git checkout develop
52 1 Владимир Ипатов
git pull upstream develop
53 1 Владимир Ипатов
git checkout FEATURE
54 1 Владимир Ипатов
git rebase -i develop # объединяет коммиты, пишет анотацию
55 1 Владимир Ипатов
git checkout develop
56 1 Владимир Ипатов
git merge --no-ff FEATURE
57 1 Владимир Ипатов
git branch -d FEATURE
58 1 Владимир Ипатов
git push upstream develop
59 1 Владимир Ипатов
git push upstream --delete FEATURE
60 1 Владимир Ипатов
</pre>
61 1 Владимир Ипатов
62 1 Владимир Ипатов
h2. Полезные команды
63 1 Владимир Ипатов
64 1 Владимир Ипатов
Просмотр, какие коммиты еще не вошли в develop (или другую ветку относительно текущей)
65 1 Владимир Ипатов
66 1 Владимир Ипатов
<pre>
67 1 Владимир Ипатов
git cherry -v develop
68 1 Владимир Ипатов
</pre>
69 1 Владимир Ипатов
70 1 Владимир Ипатов
Подгрузка диапазона коммитов из другой ветки
71 1 Владимир Ипатов
72 1 Владимир Ипатов
<pre>
73 1 Владимир Ипатов
git checkout OTHER_BRANCH
74 1 Владимир Ипатов
git cherry-pick HASH..HASH
75 1 Владимир Ипатов
</pre>