git flow - как приостановить разработку одной функции для работы над другой - PullRequest
47 голосов
/ 21 декабря 2011

Я новичок в Git и Git Flow. Я прочитал на нем все страницы, блоги и вопросы о стеке и использовал его в своей повседневной работе.

Но одна проблема беспокоила меня, я просто не могу обернуть голову вокруг этого. Я знаю, что ветви функций должны быть небольшими, вы запускаете функцию, кодируете ее часть, а затем заканчиваете функцию. Это ежедневный случай, я понимаю. Мы просто следим за тем, чтобы наша ветка разработки всегда была встраиваемой.

Но что происходит, когда я нахожусь в середине функции, она не готова к завершению, но рабочие приоритеты меняются? Я хотел бы иметь возможность переключиться на другую функцию.

Например, я запускаю новую функцию.

$ git flow feature start yak-Speedup

Я пишу код, фиксирую файлы и т. Д. И делаю успехи в этом. Но теперь мне нужно изменить то, над чем я работаю, в основном потому, что мне нужен ресурс, который недоступен, а серверный кодер не будет готов к нему день или два. Я не могу завершить эту функцию, потому что она сломает ветку разработки.

Я бы хотел сделать что-то вроде этого:

$ git flow feature pause yak-Speedup
$ git flow feature start alpaca-Sheering
#write code
$ git flow feature finish alpaca-Sheering
$ git flow feature resume yak-Speedup

Действительно, наличие команды «git flow feature list» подразумевает, что у меня может быть несколько функций, работающих одновременно. Но я не вижу, как создавать или переключаться между функциями. Действительно, я начинаю думать, что это вообще не проблема с git-потоком, а проблема с git.

Я ценю любую помощь. Спасибо!

Ответы [ 4 ]

47 голосов
/ 21 декабря 2011

Вам не нужна команда git flow feature pause yak-Speedup (feature pause в любом случае не существует).Команда, которую вы хотите использовать вместо git flow feature resume yak-Speedup, равна git flow feature checkout yak-Speedup;это вернет вас в ветку функций yak-Speedup для продолжения разработки.

Выполнение git flow отображает:

Try 'git flow <subcommand> help' for details.

И выполнение git flow feature help отображает:

usage: git flow feature [list] [-v]
       git flow feature start [-F] <name> [<base>]
       git flow feature finish [-rFk] <name|nameprefix>
       git flow feature publish <name>
       git flow feature track <name>
       git flow feature diff [<name|nameprefix>]
       git flow feature rebase [-i] [<name|nameprefix>]
       git flow feature checkout [<name|nameprefix>]
       git flow feature pull <remote> [<name>]
4 голосов
/ 13 августа 2016

Опоздал на вечеринку, но мой опыт такой ... Я использую git в сочетании с git flow ..

git flow feature start foo  <<== start
#code, hack and COMMIT
git checkout develop        <<== go back to develop branch.. 
git flow feature start foo2 <<== start a new feature
#code, hack and COMMIT
git checkout feature/foo    <<== go back to foo. NB: using full branch name

Возвращаясь к разработке, я гарантирую, что я разветвляюсь независимо от foo и использую только разработку. Я также могу сделать любое слияние с разработкой, если в то время были также коммиты из других функций ....

0 голосов
/ 21 декабря 2011

Используйте более явную модель.Это поток мерзавцев, улучшенный без дополнительных команд:

https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

Здесь важно то, что вы не стали бы запускать Feature2 с Feature1.

Надеюсь, это поможет.

ОБНОВЛЕНИЕ

Я писал об этом в блоге.Надеюсь, это немного яснее:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

0 голосов
/ 21 декабря 2011

То, что вы хотите, действительно ветви:

git branch feature1 <startingpoint>
git checkout feature1
# hack hack hack, commit commit commit
git branch feature2 <startingpoint>
git checkout feature2
# hack hack hack, commit commit commit
# Oops, urgent request comming in, must switch to stable and patch
git stash
git checkout stable
# patch, commit, push
# back to feature2
git checkout feature2
git stash pop

и т. Д. Для этого созданы ветки.

И когда вы узнаете, что ваша функция хороша, объединитесь с dev и нажмите.

...