Git поток - как приостановить разработку по одной функции для работы с другим
Я новичок в потоках git и git. Я прочитал на нем все различные страницы, блоги и вопросы, связанные с stackoverflow, и использовал его в своей повседневной разработке.
Но одна проблема беспокоила меня, я просто не могу обнять вокруг нее голову. Я знаю, что ветки функций должны быть маленькими, вы запускаете функцию, кодируете ее часть, а затем завершаете функцию. Это ежедневное явление, я понимаю. Мы просто следим за тем, чтобы наша ветка разработки всегда была работоспособной.
Но что происходит, когда я нахожусь в середине функции, она не готова к завершению, но меняются приоритеты работы? Я хотел бы иметь возможность переключиться на другую функцию.
Например, я запускаю новую функцию.
$ 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 список функций потока" подразумевает, что я могу иметь несколько функций одновременно. Но я не вижу, как создавать или переключаться между функциями. Действительно, я начинаю думать, что это вообще не проблема потока git, а проблема git.
Я ценю любую помощь. Спасибо!
Ответы
Ответ 1
Вам не нужна команда 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>]
Ответ 2
Поздно к вечеринке, но мой опыт в этом. Я использую git в сочетании с потоком git.
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 и использую только разработку. Я также могу выполнить любое слияние, если в то время были совершены и другие функции.
Ответ 3
То, что вы хотите, действительно является ветвями:
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 и нажмите.
Ответ 4
Используйте более явную модель. Это git поток улучшен без дополнительных команд:
https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR
Важно то, что вы не запустили функцию2 из функции1.
Надеюсь, что это поможет.
UPDATE
Я написал об этом в блоге. Надеюсь, это немного яснее:
http://dymitruk.com/blog/2012/02/05/branch-per-feature/