±à¼ÍƼö: |
±¾ÎÄÀ´×Ô΢ÐźÅCodePush£¬Git
FlowÊǹ¹½¨ÔÚGitÖ®ÉϵÄÒ»¸ö×éÖ¯Èí¼þ¿ª·¢»î¶¯µÄÄ£ÐÍ,ÊÇÔÚGitÖ®ÉϹ¹½¨µÄÒ»ÏîÈí¼þ¿ª·¢×î¼Ñʵ¼ù¡£ |
|
git-flow µÄ¹¤×÷Á÷³Ì
µ±ÔÚÍŶӿª·¢ÖÐʹÓð汾¿ØÖÆÏµÍ³Ê±£¬É̶¨Ò»¸öͳһµÄ¹¤×÷Á÷³ÌÊÇÖÁ¹ØÖØÒªµÄ¡£ Git µÄÈ·¿ÉÒÔÔÚ¸÷¸ö·½Ãæ×öºÜ¶àÊÂÇ飬Ȼ¶ø£¬Èç¹ûÔÚÄãµÄÍŶÓÖл¹Ã»ÓÐÄÜÐγÉÒ»¸öÌØ¶¨ÓÐЧµÄ¹¤×÷Á÷³Ì£¬ÄÇô»ìÂҾͽ«ÊDz»¿É±ÜÃâµÄ¡£
»ù±¾ÉÏÄã¿ÉÒÔ¶¨ÒåÒ»¸öÍêÈ«ÊʺÏÄã×Ô¼ºÏîÄ¿µÄ¹¤×÷Á÷³Ì£¬»òÕßʹÓÃÒ»¸ö±ðÈ˶¨ÒåºÃµÄ¡£
ÔÚÕâÕ½ÚÖÐÎÒÃǽ«Ò»Æðѧϰһ¸öµ±Ç°·Ç³£Á÷ÐеŤ×÷Á÷³Ì git-flow ¡£
ʲôÊÇ git-flow £¿
Ò»µ©°²×°°²×° git-flow £¬Ä㽫»áÓµÓÐһЩÀ©Õ¹ÃüÁî¡£ÕâЩÃüÁî»áÔÚÒ»¸öÔ¤¶¨ÒåµÄ˳ÐòÏÂ×Ô¶¯Ö´Ðжà¸ö²Ù×÷¡£Êǵģ¬Õâ¾ÍÊÇÎÒÃǵŤ×÷Á÷³Ì£¡
git-flow ²¢²»ÊÇÒªÌæ´ú Git £¬Ëü½ö½öÊǷdz£´ÏÃ÷ÓÐЧµØ°Ñ±ê×¼µÄ Git ÃüÁîÓýű¾×éºÏÁËÆðÀ´¡£
ÑϸñÀ´½²£¬Äã²¢²»ÐèÒª°²×°Ê²Ã´ÌرðµÄ¶«Î÷¾Í¿ÉÒÔʹÓà git-flow ¹¤×÷Á÷³Ì¡£ÄãÖ»ÐèÒªÁ˽⣬ÄÄЩ¹¤×÷Á÷³ÌÊÇÓÉÄÄЩµ¥¶ÀµÄÈÎÎñËù×é³ÉµÄ£¬²¢ÇÒ¸½´øÉÏÕýÈ·µÄ²ÎÊý£¬ÒÔ¼°ÔÚÒ»¸öÕýÈ·µÄ˳Ðòϼòµ¥Ö´ÐÐÄÇЩ¶ÔÓ¦µÄ
Git ÃüÁî¾Í¿ÉÒÔÁË¡£µ±È»£¬Èç¹ûÄãʹÓà git-flow ½Å±¾¾Í»á¸ü¼Ó·½±ãÁË£¬Äã¾Í²»ÐèÒª°ÑÕâЩÃüÁîºÍ˳Ðò¶¼¼ÇÔÚÄÔ×ÓÀï¡£
°²×° git-flow
½üЩÄêÀ´³öÏÖÁ˺ܶ಻ͬµÄ°²×°·½·¨¡£ÔÚ±¾Õ½ÚÖÐÎÒÃÇ»áʹÓõ±Ç°×îÁ÷ÐеÄÒ»ÖÖ£º AVH Edition¡£
ÒªÁ˽ⰲװ git-flow ϸ½Ú£¬ÇëÔĶÁÏÂÃæÕâ¸öÎĵµ official documentation¡£
ÔÚÏîÄ¿ÖÐÉèÖà git-flow
µ±ÄãÏë°ÑÄãµÄÏîÄ¿ "Çл»" µ½ git-flow ÉÏºó£¬ Git »¹ÊÇ¿ÉÒÔÏñÍù³£Ò»Ñù¹¤×÷µÄ¡£ÕâÍêÈ«ÊÇÈ¡¾öÓÚÄãÔÚ²Ö¿âÉÏʹÓÃÌØÊâµÄ
git-flow ÃüÁî»òÊÇÆÕͨµÄ Git ÃüÁî¡£»»¾ä»°Ëµ£¬ git-flow Ëü²»»áÒÔÈκÎÒ»ÖÖÏ·¾çÐԵķ½Ê½À´¸Ä±äÄãµÄ²Ö¿â¡£
»°ËäÈç´Ë£¬ git-flow È´´æÔÚһЩÏÞÖÆ¡£ÈÃÎÒÃÇ¿ªÊ¼ÔÚÒ»¸öеÄÏîÄ¿Éϳõʼ»¯Ëü°É£¬Ö®ºóÎÒÃǾͻáÓÐËù·¢ÏÖ£º
$ git flow
init
Initialized empty Git repository in/Users/tobi/acme-website/.git/
Branch name for production releases:
[master]
Branch name for "next release" development:
[develop]
How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/] |
µ±ÔÚÏîÄ¿µÄ¸ùĿ¼ִÐÐ " git flow init " ÃüÁîʱ£¨ËüÊÇ·ñÒѾ°üÀ¨ÁËÒ»¸ö
Git ²Ö¿â²¢²»ÖØÒª£©£¬Ò»¸ö½»»¥Ê½°²×°ÖúÊÖ½«Òýµ¼ÄúÍê³ÉÕâ¸ö³õʼ»¯²Ù×÷¡£ÌýÆðÀ´ÊDz»ÊÇÓеãìÅ£¬µ«Êµ¼ÊÉÏËüÖ»ÊÇÔÚÄãµÄ·ÖÖ§ÉÏÅäÖÃÁËһЩÃüÃû¹æÔò¡£¾¡¹ÜÈç´Ë£¬Õâ¸ö°²×°ÖúÊÖ»¹ÊÇÔÊÐíÄãʹÓÃ×Ô¼ºÏ²»¶µÄÃû×Ö¡£ÎÒÇ¿ÁÒ½¨ÒéÄãʹÓÃĬÈϵÄÃüÃû»úÖÆ£¬²¢ÇÒÒ»²½Ò»²½µØÈ·¶¨ÏÂÈ¥¡£
·ÖÖ§µÄģʽ
git-flow ģʽ»áÔ¤ÉèÁ½¸öÖ÷·ÖÖ§ÔÚ²Ö¿âÖУº
masterÖ»ÄÜÓÃÀ´°üÀ¨²úÆ·´úÂë¡£Äã²»ÄÜÖ±½Ó¹¤×÷ÔÚÕâ¸ö master ·ÖÖ§ÉÏ£¬¶øÊÇÔÚÆäËûÖ¸¶¨µÄ£¬¶ÀÁ¢µÄÌØÐÔ·ÖÖ§ÖУ¨Õâ·½ÃæÎÒÃÇ»áÂíÉÏ̸µ½£©¡£²»Ö±½ÓÌá½»¸Ä¶¯µ½
master ·ÖÖ§ÉÏÒ²ÊǺܶ๤×÷Á÷³ÌµÄÒ»¸ö¹²Í¬µÄ¹æÔò¡£
developÊÇÄã½øÐÐÈκÎеĿª·¢µÄ»ù´¡·ÖÖ§¡£µ±Ä㿪ʼһ¸öÐµĹ¦ÄÜ·Ö֧ʱ£¬Ëü½«ÊÇ¿ª·¢µÄ»ù´¡¡£ÁíÍ⣬¸Ã·ÖÖ§Ò²»ã¼¯ËùÓÐÒѾÍê³ÉµÄ¹¦ÄÜ£¬²¢µÈ´ý±»ÕûºÏµ½
master ·ÖÖ§ÖС£

ÕâÁ½¸ö·ÖÖ§±»³Æ×÷Ϊ ³¤ÆÚ·ÖÖ§¡£ËüÃÇ»á´æ»îÔÚÏîÄ¿µÄÕû¸öÉúÃüÖÜÆÚÖС£¶øÆäËûµÄ·ÖÖ§£¬ÀýÈçÕë¶Ô¹¦ÄܵķÖÖ§£¬Õë¶Ô·¢ÐеķÖÖ§£¬½ö½öÖ»ÊÇÁÙʱ´æÔڵġ£ËüÃÇÊǸù¾ÝÐèÒªÀ´´´½¨µÄ£¬µ±ËüÃÇÍê³ÉÁË×Ô¼ºµÄÈÎÎñÖ®ºó¾Í»á±»É¾³ýµô¡£

ÈÃÎÒÃÇ¿ªÊ¼Ì½Ë÷һЩÔÚÏÖʵӦÓÃÖпÉÄÜÓöµ½µÄ°¸Àý°É£¡
¹¦ÄÜ¿ª·¢
¶ÔÓÚÒ»¸ö¿ª·¢ÈËÔ±À´Ëµ£¬×îÆ½³£µÄ¹¤×÷¿ÉÄܾÍÊǹ¦ÄܵĿª·¢¡£Õâ¾ÍÊÇΪʲô git-flow ¶¨ÒåÁ˺ܶà¶ÔÓÚ¹¦ÄÜ¿ª·¢µÄ¹¤×÷Á÷³Ì£¬´Ó¶øÀ´°ïÖúÄãÓÐ×éÖ¯µØÍê³ÉËü¡£
¿ªÊ¼Ð¹¦ÄÜ
ÈÃÎÒÃÇ¿ªÊ¼¿ª·¢Ò»¸öй¦ÄÜ " rss-feed "£º
$ git flow
feature start rss-feed
Switched to a new branch 'feature/rss-feed'
Summary of actions:
- A new branch 'feature/rss-feed' was created,
based on 'develop'
- You are now on branch 'feature/rss-feed' |
¸ÅÄî
ÔÚÕâЩÃüÁîµÄÊä³öÎı¾ÖУ¬ git-flow »á¶Ô¸Õ¸ÕÍê³ÉµÄ²Ù×÷´òÓ¡³öÒ»¸öºÜÓаïÖúµÄ¸ÅÊö¡£µ±ÄãÐèÒª°ïÖúµÄʱºò£¬Äã¿ÉÒÔËæÊ±ÇëÇó°ïÖú¡£ÀýÈ磺
ÕýÈçÉÏÃæÕâ¸öй¦ÄÜÒ»Ñù£¬git-flow »á´´½¨Ò»¸öÃûΪ "feature/rss-feed"
µÄ·ÖÖ§£¨Õâ¸ö "feature/" ǰ׺ÊÇÒ»¸ö¿ÉÅäÖõÄÑ¡ÏîÉèÖã©¡£ÄãÒѾ֪µÀÁË£¬ÔÚÄã×öй¦ÄÜ¿ª·¢Ê±Ê¹ÓÃÒ»¸ö¶ÀÁ¢µÄ·ÖÖ§Êǰ汾¿ØÖÆÖÐ×îÖØÒªµÄ¹æÔòÖ®Ò»¡£
git-flow Ò²»áÖ±½ÓÇ©³öÕâ¸öеķÖÖ§£¬ÕâÑùÄã¾Í¿ÉÒÔÖ±½Ó½øÐй¤×÷ÁË¡£
Íê³ÉÒ»¸ö¹¦ÄÜ
¾¹ýÒ»¶Îʱ¼ä¼è¿àµØ¹¤×÷ºÍһϵÁеĴÏÃ÷Ìá½»£¬ÎÒÃǵÄй¦ÄÜÖÕÓÚÍê³ÉÁË£º
$ git flow feature finish
rss-feed
Switched to branch 'develop'
Updating 6bcf266..41748ad
Fast-forward
feed.xml | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 feed.xml
Deleted branch feature/rss-feed(was 41748ad). |
×îÖØÒªµÄÊÇ£¬Õâ¸ö " feature finish " ÃüÁî»á°ÑÎÒÃǵŤ×÷ÕûºÏµ½Ö÷
" develop " ·ÖÖ§ÖÐÈ¥¡£ÔÚÕâÀïËüÐèÒªµÈ´ý£º
Ò»¸öÔÚ¸ü¹ã·ºµÄ "¿ª·¢" ±³¾°ÏµÄÈ«Ãæ²âÊÔ¡£
ÉÔºóºÍËùÓлýÔÜÔÚ " develop " ·ÖÖ§ÖÐµÄÆäËü¹¦ÄÜÒ»Æð½øÐз¢²¼¡£
Ö®ºó£¬git-flow Ò²»á½øÐÐÇåÀí²Ù×÷¡£Ëü»áɾ³ýÕâ¸öµ±ÏÂÒѾÍê³ÉµÄ¹¦ÄÜ·ÖÖ§£¬²¢ÇÒ»»µ½ "
develop " ·ÖÖ§¡£
¹ÜÀí releases
Release ¹ÜÀíÊǰ汾¿ØÖÆ´¦ÀíÖеÄÁíÍâÒ»¸ö·Ç³£ÖØÒªµÄ»°Ìâ¡£ÈÃÎÒÃÇÀ´¿´¿´ÈçºÎÀûÓà git-flow
´´½¨ºÍ·¢²¼ release ¡£
´´½¨ release
µ±ÄãÈÏΪÏÖÔÚÔÚ " develop " ·ÖÖ§µÄ´úÂëÒѾÊÇÒ»¸ö³ÉÊìµÄ release
°æ±¾Ê±£¬ÕâÒâζ×Å£ºµÚÒ»£¬Ëü°üÀ¨ËùÓÐÐµĹ¦ÄܺͱØÒªµÄÐÞ¸´£»µÚ¶þ£¬ËüÒѾ±»³¹µ×µÄ²âÊÔ¹ýÁË¡£Èç¹ûÉÏÊöÁ½µã¶¼Âú×㣬ÄǾÍÊÇʱºò¿ªÊ¼Éú³ÉÒ»¸öеÄ
release ÁË£º
$ git flow release start
1.1.5
Switched to a new branch 'release/1.1.5' |
Çë×¢Ò⣬ release ·ÖÖ§ÊÇʹÓð汾ºÅÃüÃûµÄ¡£ÕâÊÇÒ»¸öÃ÷ÖǵÄÑ¡Ôñ£¬Õâ¸öÃüÃû·½°¸»¹ÓÐÒ»¸öºÜºÃµÄ¸½´ø¹¦ÄÜ£¬ÄǾÍÊǵ±ÎÒÃÇÍê³ÉÁË
release ºó£¬ git-flow »áÊʵ±µØ×Ô¶¯È¥±ê¼ÇÄÇЩ release Ìá½»¡£
ÓÐÁËÒ»¸ö release ·ÖÖ§£¬ÔÙÍê³ÉÕë¶Ô release °æ±¾ºÅµÄ×îºó×¼±¸¹¤×÷£¨Èç¹ûÏîÄ¿ÀïµÄijЩÎļþÐèÒª¼Ç¼°æ±¾ºÅ£©£¬²¢ÇÒ½øÐÐ×îºóµÄ±à¼¡£
Íê³É release
ÏÖÔÚÊÇʱºò°´ÏÂÄǸöΣÏյĺìÉ«°´Å¥À´Íê³ÉÎÒÃÇµÄ release ÁË£º
git flow release finish
1.1.5 |
Õâ¸öÃüÁî»áÍê³ÉÈçÏÂһϵÁеIJÙ×÷£º
Ê×ÏÈ£¬ git-flow »áÀȡԶ³Ì²Ö¿â£¬ÒÔÈ·±£Ä¿Ç°ÊÇ×îеİ汾¡£
È»ºó£¬ release µÄÄÚÈݻᱻºÏ²¢µ½ " master " ºÍ "
develop " Á½¸ö·ÖÖ§ÖÐÈ¥£¬ÕâÑù²»½ö²úÆ·´úÂëΪ×îеİ汾£¬¶øÇÒÐµĹ¦ÄÜ·ÖÖ§Ò²½«»ùÓÚ×îдúÂë¡£
Ϊ±ãÓÚʶ±ðºÍ×öÀúÊ·²Î¿¼£¬ release Ìá½»»á±»±ê¼ÇÉÏÕâ¸ö release µÄÃû×Ö£¨ÔÚÎÒÃǵÄÀý×ÓÀïÊÇ
"1.1.5"£©¡£
ÇåÀí²Ù×÷£¬°æ±¾·ÖÖ§»á±»É¾³ý£¬²¢Çһص½ " develop "¡£
´Ó Git µÄ½Ç¶ÈÀ´¿´£¬ release °æ±¾ÏÖÔÚÒѾÍê³É¡£ÒÀ¾ÝÄãµÄÉèÖã¬¶Ô " master
" µÄÌá½»¿ÉÄÜÒѾ´¥·¢ÁËÄãËù¶¨ÒåµÄ²¿ÊðÁ÷³Ì£¬»òÕßÄã¿ÉÒÔͨ¹ýÊÖ¶¯²¿Êð£¬À´ÈÃÄãµÄÈí¼þ²úÆ·½øÈëÄãµÄÓû§ÊÖÖС£
hotfix
ºÜ¶àʱºò£¬½ö½öÔÚ¼¸¸öСʱ»ò¼¸ÌìÖ®ºó£¬µ±¶Ô release °æ±¾×÷×öÈ«Ãæ²âÊÔʱ£¬¿ÉÄܾͻᷢÏÖһЩС´íÎó¡£
ÔÚÕâÖÖÇé¿öÏ£¬ git-flow Ìṩһ¸öÌØ¶¨µÄ " hotfix " ¹¤×÷Á÷³Ì£¨ÒòΪÔÚÕâÀï²»¹ÜʹÓÃ
"¹¦ÄÜ" ·ÖÖ§Á÷³Ì£¬»¹ÊÇ " release " ·ÖÖ§Á÷³Ì¶¼ÊDz»Ç¡µ±µÄ£©¡£
´´½¨ Hotfixes
$ git flow hotfix start
missing-link |
Õâ¸öÃüÁî»á´´½¨Ò»¸öÃûΪ "hotfix/missing-link" µÄ·ÖÖ§¡£ÒòΪÕâÊǶԲúÆ·´úÂë½øÐÐÐÞ¸´£¬ËùÒÔÕâ¸ö
hotfix ·ÖÖ§ÊÇ»ùÓÚ "master" ·ÖÖ§¡£ÕâÒ²ÊÇºÍ release ·ÖÖ§×îÃ÷ÏÔµÄÇø±ð£¬
release ·ÖÖ§¶¼ÊÇ»ùÓÚ "develop" ·ÖÖ§µÄ¡£ÒòΪÄã²»Ó¦¸ÃÔÚÒ»¸ö»¹²»ÍêÈ«Îȶ¨µÄ¿ª·¢·ÖÖ§É϶ԲúÆ·´úÂë½øÐеØÐÞ¸´¡£
¾ÍÏñ release Ò»Ñù£¬ÐÞ¸´Õâ¸ö´íÎóµ±È»Ò²»áÖ±½ÓÓ°Ïìµ½ÏîÄ¿µÄ°æ±¾ºÅ£¡
Íê³É Hotfixes
ÔÚ°ÑÎÒÃǵÄÐÞ¸´Ìá½»µ½ hotfix ·ÖÖ§Ö®ºó£¬¾Í¸ÃÈ¥Íê³ÉËüÁË£º
$ git flow hotfix finish
missing-link |
Õâ¸ö¹ý³Ì·Ç³£ÀàËÆÓÚ·¢²¼Ò»¸ö release °æ±¾£º
Íê³ÉµÄ¸Ä¶¯»á±»ºÏ²¢µ½ " master " ÖУ¬Í¬ÑùÒ²»áºÏ²¢µ½ "
develop " ·ÖÖ§ÖУ¬ÕâÑù¾Í¿ÉÒÔÈ·±£Õâ¸ö´íÎó²»»áÔٴγöÏÖÔÚÏÂÒ»¸ö release ÖС£
Õâ¸ö hotfix ³ÌÐò½«±»±ê¼ÇÆðÀ´ÒÔ±ãÓڲο¼¡£
Õâ¸ö hotfix ·ÖÖ§½«±»É¾³ý£¬È»ºóÇл»µ½ " develop " ·ÖÖ§ÉÏÈ¥¡£
»¹ÊǺͲúÉú release µÄÁ÷³ÌÒ»Ñù£¬ÏÖÔÚÐèÒª±àÒëºÍ²¿ÊðÄãµÄ²úÆ·£¨Èç¹ûÕâЩ²Ù×÷²»ÊÇ×Ô¶¯±»´¥·¢µÄ»°£©¡£
»Ø¹ËÒ»ÏÂ
×îºó£¬ÔÚ½áÊøÕâ¸öÕ½Ú֮ǰ£¬ÎÒÒªÔÙ´ÎÇ¿µ÷¼¸¸öÖØµã¡£
Ê×ÏÈ£¬ git-flow ²¢²»»áΪ Git À©Õ¹ÈκÎÐµĹ¦ÄÜ£¬Ëü½ö½öʹÓÃÁ˽ű¾À´À¦°óÁËһϵÁÐ Git
ÃüÁîÀ´Íê³ÉÒ»Ð©ÌØ¶¨µÄ¹¤×÷Á÷³Ì¡£
Æä´Î£¬¶¨ÒåÒ»¸ö¹Ì¶¨µÄ¹¤×÷Á÷³Ì»áʹµÃÍŶÓÐ×÷¸ü¼Ó¼òµ¥ÈÝÒס£ÎÞÂÛÊÇÒ»¸ö "°æ±¾¿ØÖƵÄÐÂÊÖ"
»¹ÊÇ " Git ר¼Ò"£¬Ã¿Ò»¸öÈ˶¼ÖªµÀÈçºÎÀ´ÕýÈ·µØÍê³Éij¸öÈÎÎñ¡£
¼Çס£¬Ê¹Óà git-flow ²¢²»ÊDZØÐëµÄ¡£µ±»ýÔÜÁËÒ»¶¨µÄʹÓþÑéºó£¬ºÜ¶àÍŶӻ᲻ÔÙÐèÒªËüÁË¡£µ±ÄãÄÜÕýÈ·µØÀí½â¹¤×÷Á÷³ÌµÄ»ù±¾×é³É²¿·ÖºÍÄ¿±êµÄÖ®ºó£¬ÄãÍêÈ«¿ÉÒÔ¶¨ÒåÒ»¸öÊôÓÚÄã×Ô¼ºµÄ¹¤×÷Á÷³Ì¡£ |