ƯÁÁÂèÂè°®ÉÏÁËÎÒ(ÌìÌìÏòÉÏ)С˵ȫÎÄ×îÐÂÔÚÏßÔĶÁ..."/> ǰÁ½ÌìÎÒÒ²ÏÈÈݹýÎҼҵĿյ÷£¬ÏÖÔÚ²»½éÒâÔÙÏÈÈÝÒ»±é£ºÎÒ¼ÒÓÐËĄ̈¿Õµ÷£¬ÆäÖÐ×îã«ÒâµÄÄÇ̨±»×°ÔÚÁ˶ùͯ·¿À¾ÍÊÇÎÞ·ç¸Ð¿Õµ÷ ¡£"/>

ÌÚ²©tengbo9885¹ÙÍø

ƯÁÁÂèÂè°®ÉÏÁËÎÒ(ÌìÌìÏòÉÏ)С˵ȫÎÄ×îÐÂÔÚÏßÔĶÁ...

ƯÁÁÂèÂè°®ÉÏÁËÎÒ(ÌìÌìÏòÉÏ)С˵ȫÎÄ×îÐÂÔÚÏßÔĶÁ...

¡¶Æ¯ÁÁÂèÂè°®ÉÏÁËÎÒ(ÌìÌìÏòÉÏ)С˵ȫÎÄ×îÐÂÔÚÏßÔĶÁ...¡·¾çÇé¼ò½é£ºÇ°Á½ÌìÎÒÒ²ÏÈÈݹýÎҼҵĿյ÷ÏÖÔÚ²»½éÒâÔÙÏÈÈÝÒ»±é£ºÎÒ¼ÒÓÐËĄ̈¿Õµ÷ÆäÖÐ×îã«ÒâµÄÄÇ̨±»×°ÔÚÁ˶ùͯ·¿Àï¾ÍÊÇÎÞ·ç¸Ð¿Õµ÷ĽÈݸ´ÖªµÀ½ñÈÕ֮ʲ»¸ø¸öÚ¹ÊÍÕâЩÈË»ØÈ¥Ò»ÕÅÑï×Ô¼ºÔÚ·´ÇåͬÃËÊÇûʲôְλÁ˲¢ÇÒ½­ºþÉϺýûÖ¹Ò×½¨ÉèÆðÀ´µÄÉùÍûÒ²»á±ùÏûÍß½âÉõÖÁ»¹ÂäµÃÒ»¸öÀDZ·ÃûÉùƯÁÁÂèÂè°®ÉÏÁËÎÒ(ÌìÌìÏòÉÏ)С˵ȫÎÄ×îÐÂÔÚÏßÔĶÁ...ºßÄã¾ÈÁËËýÓÖÔõôÑùËý³ÔÁËÀϺºµÄºÚòÚò¼ÈýÈÕÖ®ºóÒ»ÑùÒª³¦´©¶ÇÀöøËÀ¶¡ÄêÁäÀäÀä˵µÀÐÄÖÐÒ²ÊÇÇÄÇÄÇìÐÒ»¹ºÃÏÈǰ¼á¾ö½«ºÚòÚò¼Î¹¸ø°¢×ϳÔϲ»È»Õâ»á¶ùÕæÊÇÈ˱¦Á½¿ÕÁËÉîÈë̽ÌÖʹÊÔðÈλ®·Ö

¡¶Æ¯ÁÁÂèÂè°®ÉÏÁËÎÒ(ÌìÌìÏòÉÏ)С˵ȫÎÄ×îÐÂÔÚÏßÔĶÁ...¡·ÊÓÆµËµÃ÷£º»¨ÏëÈÝ»¨ÈïÏÉ×ÓÒ»Íû¼û·û¹‚Éñ¹âÁ¬Ã¦½ÐµÀ£ºÕâÊÇ׿ÏÉÁ¶ÖƳɵÄÎÞÉÏÁé·ûÖ»Äܹ»Ê¹ÓÃÒ»´Î¿ÉÊÇÿһ´Î¹¥»÷¶¼Ï൱ÓÚ׿ÏÉÈý³ÉµÄÁ¦Á¿¹¥»÷½ðÏÉÍòÍò²»¿É¹»¶Ô¿¹ÖÁÓÚÕ¿½­iOS ¹¤³Ì×Ô¶¯»¯-˼Ð÷ÕûÀí2017-08-21 15:52¡¤CocoaChina4 Ô·ݼÓÈë 2017@Swift ´ó»áµÄʱ¼äÓÐÐÒÌýµ½ÁË @zesming ´óÀйØÓÚÃÀÍÅ×é¼þ»¯µÄ TopicÓÐÒ»ÕÅͼӡÏóÌØÊâÉî¿ÌÀ´×Ô @zesming ´óÀÐØÊºó¸ú @zesming ´óÀÐÏàͬÔõôȥÕûÀí×é¼þ×Ô¶¯¹¹½¨Ðû²¼Ë¼Ð÷µÄʱ¼äËûÒ²¸úÎÒÌáµ½ÁËÕâÕÅͼÒÔÊÇÎÒ×¼±¸Î§ÈÆÕâÕÅͼÀ´ÕûÀíһϠiOS ¹¤³Ì×Ô¶¯»¯µÄ˼Ð÷»ù´¡ÖªÊ¶Ê×ÏÈÎÒÃÇÐèÒªÕÆÎÕһЩ×Ô¶¯¹¹½¨Ðû²¼µÄ»ù´¡ÖªÊ¶Ö÷Òª°üÀ¨Èçϼ¸¸ö·½ÃæGitFlow - ¹æ·¶ git ²Ù×÷Á÷³ÌGitFlow ÊÇÓÉ Vincent Driessen Ìá³öµÄÒ»¸ö Git ²Ù×÷Á÷³Ì±ê×¼°üÀ¨Èçϼ¸¸öÒªº¦·ÖÖ§£ºÃû³Æ ˵Ã÷master Ö÷·ÖÖ§develop Ö÷¿ª·¢·ÖÖ§°üÀ¨È·¶¨¼´½«Ðû²¼µÄ´úÂëfeature й¦Ð§·ÖÖ§Ò»Ñùƽ³£Ò»¸öй¦Ð§¶ÔÓ¦Ò»¸ö·ÖÖ§¹ØÓÚ¹¦Ð§µÄ²ð·ÖÐèÒª½ÏÁ¿ºÏÀíÒÔ×èֹһЩºóÃæ²»ÐëÒªµÄ´úÂë³åÍ»release Ðû²¼·ÖÖ§Ðû²¼Ê±¼äÓõķÖÖ§Ò»Ñùƽ³£²âÊÔʱ¼ä·¢Ã÷µÄ bug ÔÚÕâ¸ö·ÖÖ§¾ÙÐÐÐÞ¸´hotfix ÈÈÐÞ¸´·ÖÖ§½ôÆÈÐÞ bug µÄʱ¼äÓÃGitFlow µÄÓÅÊÆÓÐÈçϼ¸µã£º²¢Ðпª·¢£ºGitFlow ¿ÉÒÔºÜÀû±ãµÄʵÏÖ²¢Ðпª·¢£ºÃ¿¸öй¦Ð§¶¼»á½¨ÉèÒ»¸öÐ嵀 feature ·ÖÖ§´Ó¶øºÍÒѾ­Íê³ÉµÄ¹¦Ð§¸ôÍÑÀëÀ´²¢ÇÒÖ»ÓÐÔÚй¦Ð§Íê³É¿ª·¢µÄÇéÐÎÏÂÆä¶ÔÓ¦µÄ feature ·ÖÖ§²Å»ãºÏ²¢µ½Ö÷¿ª·¢·ÖÖ§ÉÏ£¨Ò²¾ÍÊÇÎÒÃǾ­³£ËµµÄ develop ·ÖÖ§£©ÁíÍâÈôÊÇÄãÕýÔÚ¿ª·¢Ä³¸ö¹¦Ð§ͬʱÓÖÓÐÒ»¸öÐµĹ¦Ð§ÐèÒª¿ª·¢ÄãÖ»ÐèÒªÌύĿ½ñ feature µÄ´úÂëÈ»ºó½¨ÉèÁíÍâÒ»¸ö feature ·ÖÖ§²¢Íê³Éй¦Ð§¿ª·¢È»ºóÔÙÇлØÖ®Ç°µÄ feature ·ÖÖ§¼´¿É¼ÌÐøÍê³É֮ǰ¹¦Ð§µÄ¿ª·¢Э×÷¿ª·¢£ºGitFlow »¹Ö§³Ö¶àÈËЭͬ¿ª·¢ÓÉÓÚÿ¸ö feature ·ÖÖ§Éϸ͝µÄ´úÂë¶¼Ö»ÊÇΪÁËÈÃij¸öÐ嵀 feature ¿ÉÒÔ×ÔÁ¦ÔËÐÐͬʱÎÒÃÇÒ²ºÜÈÝÒ×ÖªµÀÿСÎÒ˽¼Ò¶¼ÔÚ¸ÉɶÐû²¼½×¶Î£ºµ±Ò»¸öРfeature ¿ª·¢Íê³ÉµÄʱ¼äËü»á±»ºÏ²¢µ½ develop ·ÖÖ§Õâ¸ö·ÖÖ§Ö÷ÒªÓÃÀ´ÔÝʱÉúÑÄÄÇЩ»¹Ã»ÓÐÐû²¼µÄÄÚÈÝÒÔÊÇÈôÊÇÐèÒªÔÙ¿ª·¢Ð嵀 featureÎÒÃÇÖ»ÐèÒª´Ó develop ·ÖÖ§½¨ÉèзÖÖ§¼´¿É°üÀ¨ËùÓÐÒѾ­Íê³ÉµÄ feature Ö§³Ö½ôÆÈÐÞ¸´£ºGitFlow »¹°üÀ¨ÁË hotfix ·ÖÖ§ÕâÖÖÀàÐ͵ķÖÖ§ÊÇ´Óij¸öÒѾ­Ðû²¼µÄ tag ÉϽ¨Éè³öÀ´²¢×öÒ»¸ö½ôÆÈµÄÐÞ¸´²¢ÇÒÕâ¸ö½ôÆÈÐÞ¸´Ö»Ó°ÏìÕâ¸öÒѾ­Ðû²¼µÄ tag¶ø²»»áÓ°Ïìµ½ÄãÕýÔÚ¿ª·¢µÄРfeatureGlow flow ÊÇÔõÑùÊÂÇéµÄй¦Ð§¶¼ÊÇÔÚ feature ·ÖÖ§ÉϾÙÐпª·¢feature ·ÖÖ§¶¼ÊÇ´Ó develop ·ÖÖ§½¨ÉèÍê³ÉºóÔٺϲ¢µ½ develop ·ÖÖ§ÉÏÆÚ´ýÐû²¼µ±ÐèÒªÐû²¼Ê±ÎÒÃÇ´Ó develop ·ÖÖ§½¨ÉèÒ»¸ö release ·ÖÖ§È»ºóÕâ¸ö release ·ÖÖ§»áÐû²¼µ½²âÊÔÇéÐξÙÐвâÊÔÈôÊÇ·¢Ã÷ÎÊÌâ¾ÍÔÚÕâ¸ö·ÖÖ§Ö±½Ó¾ÙÐÐÐÞ¸´ÔÚËùÓÐÎÊÌâÐÞ¸´Ö®Ç°ÎÒÃÇ»áÒ»Ö±µÄÖØ¸´Ðû²¼->²âÊÔ->ÐÞ¸´->ÖØÐÂÐû²¼->ÖØÐ²âÊÔÕâ¸öÁ÷³ÌÐû²¼¿¢ÊºóÕâ¸ö release ·ÖÖ§»ãºÏ²¢µ½ develop ºÍ master ·ÖÖ§´Ó¶ø°ü¹Ü²»»áÓдúÂëɥʧmaster ·ÖÖ§Ö»¸ú×ÙÒѾ­Ðû²¼µÄ´úÂëºÏ²¢µ½ master É쵀 commit Ö»ÄÜÀ´×Ô release ·ÖÖ§ºÍ hotfix ·ÖÖ§hotfix ·ÖÖ§µÄ×÷ÓÃÊǽôÆÈÐÞ¸´Ò»Ð© BugËüÃǶ¼ÊÇ´Ó master ·ÖÖ§ÉϵÄij¸ö tag ½¨ÉèÐÞ¸´¿¢ÊºóÔٺϲ¢µ½ develop ºÍ master ·ÖÖ§ÉÏGitFlow ¹¤¾ßÈôÊÇÒªÔÚÏîÄ¿ÖÐÒýÈë GitFlowÍÆ¼öʹÓà SourceTree À´×ö¿Í»§¶Ë¹¤¾ßËü°üÀ¨ÁËËùÓÐ GitFlow µÄÁ÷³Ì¿ÉÊÓ»¯²Ù×÷ºÜÀû±ãgitignore - ¸ÉµôÄÇЩ×ÌÈÅ´úÂëΪʲôÌáµ½ gitignoreÉó¹ý PR£¨Pull request£© »òÕß MR£¨Merge request£©µÄͬÑâÓ¦¸ÃÉîÓÐÌå»áµ±Ò»¸ö´ø×ÅÒ»´ó¶Ñ Pods ¿â´úÂëµÄ PR/MR Ï®À´µÄʱ¼äÄãµÄÐÄÌïÓ¦¸ÃÊǾøÍûµÄ¡­¡­ÒÔÊÇÎÒÃÇÒªÏàʶÏÂÔõô°ÑһЩ·ÇÄ£¿éÏà¹ØµÄ´úÂë ignore µô½¨ÉèÏîÄ¿¿ÍÕ»ÖÐµÄ .gitignoreÈôÊÇÄãÔÚÏîÄ¿¿ÍÕ»ÄÚ½¨ÉèÒ»¸ö .gitignore ÎļþGit »áƾ֤Õâ¸öÎļþÀ´¾öÒéÄÄЩÎļþºÍĿ¼ÊÇÐèÒªºöÂÔµÄ×¢ÖØ£ºÈôÊÇÄãÏë°ÑÒ»¸öÒѾ­±»¸ú×ÙµÄÎļþ ignore µôÕâÊÇʱ¼äÐÂÔöµÄ¹æÔò²¢²»»á¶ÔÕâ¸öÎļþ±¬·¢×÷ÓÃÄãÐèÒªÏÈÓÃÏÂÃæµÄÖ¸Áî°ÑÕâ¸öÎļþÉèÖÃΪ²»¸ú×Ù£º1git rm --cached FILENAME½¨ÉèÈ«¾ÖµÄ .gitignoreÕâ¸ö×ÅʵûɶÒâ˼²»¹ýÕվɿ´Ò»ÏÂÔõôÉèÖðɣº1git config --global core.excludesfile ~/.gitignore_globaliOSer ÐèÒªµÄ .gitignoreGithub ¹Ù·½Ä£°æ¸ø³öµÄ½¨ÒéÈçÏ£º# Xcode## gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore## Build generatedbuild/DerivedData/## Various settings*.pbxuser!default.pbxuser*.mode1v3!default.mode1v3*.mode2v3!default.mode2v3*.perspectivev3!default.perspectivev3xcuserdata/## Other*.moved-aside*.xccheckout*.xcscmblueprint## Obj-C/Swift specific*.hmap*.ipa*.dSYM.zip*.dSYM# CocoaPods## We recommend against adding the Pods directory to your .gitignore. However# you should judge for yourself, the pros and cons are mentioned at:# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control## Pods/# Carthage## Add this line if you want to avoid checking in source code from Carthage dependencies.# Carthage/CheckoutsCarthage/Build# fastlane## It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the# screenshots whenever they are needed.# For more information about the recommended setup visit:# https://docs.fastlane.tools/best-practices/source-control/#source-controlfastlane/report.xmlfastlane/Preview.htmlfastlane/screenshotsfastlane/test_output# Code Injection## After new code Injection tools there's a generated folder /iOSInjectionProject# https://github.com/johnno1962/injectionforxcodeiOSInjectionProject/ͨ¹ýÕâ¸öÎļþÎÒÃÇ¿ÉÒÔ¿´µ½ºöÂÔµÄÄÚÈÝÖ÷Òª°üÀ¨ÏÂÃæ¼¸ÖÖ£º¹¹½¨±¬·¢µÄĿ¼ºÍÎļþ£»ÖÖÖÖÔÝʱÉèÖÃÎļþ£»Obj-C / Swift Ïà¹ØµÄÌØ¶¨Îļþ£»CocoaPods µÚÈý·½ Pods ¿âĿ¼£»Carthage ¹¹½¨Ä¿Â¼£»fastlane ¹¹½¨±¬·¢µÄÎļþ£»´úÂë×¢È빤¾ß±¬·¢µÄĿ¼¼°ÎļþÎÒÃÇ¿ÉÒÔÆ¾Ö¤×ÔÉíÏîÄ¿µÄÇéÐÎÀ´¶ÔÕâЩÉèÖþÙÐÐÏìÓ¦µÄµ÷½âºÍ¶¨ÖÆgithooks - ±³ºóµÄÄÐ×Ó×¢£º±¾¶ÎÖ÷Òª·­Òë×Ô githooks ¹Ù·½Îĵµgithooks ¼ò½égithooks ÊÇÖ¸ git ÔÚÖ´ÐÐÄ³Ð©ÌØ¶¨²Ù×÷ʱ»á´¥·¢µÄһϵÁгÌÐòÓеãÀàËÆÊý¾Ý¿âÖеĴ¥·¢Æ÷ÓÉÓû§±àдĬÈÏÇéÐÎÏÂÕâЩ³ÌÐò¶¼±»°²ÅÅÔÚ $GIT_DIR/hooks Ŀ¼ÏÂËäÈ»ÎÒÃÇÒ²¿ÉÒÔͨ¹ý git µÄÇéÐÎÉèÖñäÁ¿ core.hooksPath À´¸Ä±äÕâ¸öĿ¼githooks µÄÀàÐÍÓÐÐí¶àÖÐÕâЩ hook »áÔÚ¸÷¸öÌØ¶¨²Ù×÷ʱ°ïÄã×Ô¶¯Íê³ÉһЩÄãÏëÒª×öµÄ²Ù×÷ºÃ±È£ºÔÚÌá½»½ÓÂëµ½ develop ·ÖÖ§µÄʱ¼ä×Ô¶¯´ò°üÏÖÔÚÖ§³ÖµÄ githooksgit commit Á÷³Ìpre-commitÓÉ git commit ´¥·¢¿ÉÒÔͨ¹ý --no-verify Ñ¡ÏîÀ´Ìø¹ýÕâ¸ö hook ²»ÐèÒª²ÎÊýÔÚ»ñµÃÌá½»ÐÂÎŲ¢×îÏÈÌá½»(commit)ǰ±»Å²ÓÃÈôÊÇ·µ»Ø·Ç 0Ôò»áµ¼Ö git commit ʧ°Üµ±Ä¬È쵀 pre-commit ¹³×Ó±»ÆôÓÃʱÈôÊÇËü·¢Ã÷Îļþβ²¿ÓпÕȱÐд˴ÎÌá½»¾Í»á±»ÖÕÖ¹ÈôÊǾÙÐÐ git commit µÄÏÂÁîûÓÐÖ¸¶¨Ò»¸ö±à¼­Æ÷À´ÐÞ¸ÄÌá½»ÐÅÏ¢(commit message)ÈÎºÎµÄ git commit hook ±»Å²ÓÃʱ¶¼»á´øÉÏÇéÐαäÁ¿ GIT_EDITOR=:prepare-commit-msgÖ´ÐÐ git commit ÏÂÁîºóÔÚĬÈÏÌá½»ÐÂÎÅ×¼±¸ºÃºóµ«±à¼­Æ÷Æô¶¯Ç°Õâ¸ö hook ¾Í»á±»Å²ÓÃËü½ÓÊÜ 1 µ½ 3 ¸ö²ÎÊýµÚ 1 ¸öÊǰüÀ¨ÁËÌá½»ÐÂÎŵÄÎļþµÄÃû×ÖµÚ 2 ¸öÊÇÌá½»ÐÂÎŵÄȪԴËü¿ÉÒÔÊÇ£ºmessage£¨ÈôÊÇÖ¸¶¨ÁË -m »òÕß -F Ñ¡Ïtemplate£¨ÈôÊÇÖ¸¶¨ÁË -t Ñ¡Ïî»òÕßÔÚ git configÖпªÆôÁË commit.template Ñ¡Ïmerge£¨ÈôÊDZ¾´ÎÌá½»ÊÇÒ»´ÎºÏ²¢»òÕß±£´æÎļþ .git/MERGE_MSG£©squash£¨ÈôÊDZ£´æÎļþ .git/SQUASH_MSG £©commit ²¢ÇÒµÚ 3 ¸ö²ÎÊýÊÇÒ»¸öÌá½»µÄ SHA1 Öµ£¨ÈôÊÇÖ¸¶¨ÁË -c,-C »òÕß --amend Ñ¡ÏÈôÊÇ·µ»ØÖµ²»ÊÇ 0ÄÇô git commit ÏÂÁî¾Í»á±»ÖÐÖ¹Õâ¸ö hook µÄÄ¿µÄÊÇÓÃÀ´ÔÚÊÂÇéʱ±à¼­ÐÅÏ¢Îļþ²¢ÇÒ²»»á±» --no-verify Ñ¡ÏîÌø¹ýÒ»¸ö·Ç 0 ÖµÒâζ×Å hook ÊÂÇéʧ°Ü»áÖÕÖ¹Ìá½»Ëü²»Ó¦¸ÃÓÃÀ´×÷Ϊ pre-commit ¹³×ÓµÄÌæ»»commit-msgÓÉ git commit ´¥·¢¿ÉÒÔͨ¹ý --no-verify Ñ¡ÏîÀ´Ìø¹ý½ÓÊÜ 1 ¸ö²ÎÊýÕâ¸ö²ÎÊý°üÀ¨ÁËÌá½»ÐÂÎŵÄÎļþµÄÃû×ÖÈôÊÇ·µ»Ø·Ç 0Ôò»áÖÐÖ¹ git commit ÏÂÁîÕâ¸ö hook ¿ÉÒÔÓÃÀ´¹æ·¶Ìá½»ÐÅÏ¢ºÃ±È°ÑÐÅÏ¢ÃûÌû¯³ÉÏîÄ¿¶¨ÖƵıê×¼ÃûÌûòÕß·¢Ã÷Ìá½»ÐÅÏ¢²»Çм°ÃûÌÃʱ¾Ü¾øÕâ´ÎÌá½»post-commitÓÉ git commit ´¥·¢ÔÚÌá½»ºó±»Å²Óò»¿ÉÓ°Ïì git commit µÄЧ¹ûgit push Á÷³Ìpre-pushÔÚ git push ÔËÐÐʱ´ú¸üÐÂÁËÔ¶³ÌÒýÓõ«ÉÐδ´«Ë͹¤¾ßʱִÐÐÈôÊÇ·µ»Ø·Ç 0½«ÖÐÖ¹ÍÆËÍÀú³ÌËü½ÓÊÜÔ¶³Ì·ÖÖ§µÄÃû×ÖºÍλÖÃ×÷Ϊ²ÎÊýͬʱ´Ó±ê×¼ÊäÈëÖжÁȡһϵÁдý¸üеÄÒýÓà Äã¿ÉÒÔÔÚÍÆËÍ×îÏÈ֮ǰÓÃËüÑéÖ¤¶ÔÒýÓõĸüвÙ×÷pre-receive·þÎñ¶Ë´¦Öóͷ£À´×Ô¿Í»§¶ËµÄÍÆËͲÙ×÷ʱ×îÏȱ»Å²ÓÃµÄ hookËü´Ó±ê×¼ÊäÈë»ñȡһϵÁб»ÍÆË͵ÄÒýÓÃÈôÊÇËüÒÔ·Ç 0 ÖµÍ˳öËùÓеÄÍÆËÍÄÚÈݶ¼²»»á±»½ÓÊÜÄã¿ÉÒÔÓÃÕâ¸ö hook ×èÖ¹¶Ô non-fast-forward µÄ¸üлòÕß¶Ô¸ÃÍÆËÍËùÐ޸ĵÄËùÓÐÒýÓúÍÎļþ¾ÙÐлá¼û¿ØÖÆupdateºÍ pre-receive hook Ê®·ÖÀàËÆ²î±ðÖ®´¦ÔÚÓÚËü»áΪÿһ¸ö×¼±¸¸üеķÖÖ§¸÷ÔËÐÐÒ»´ÎÈôÊÇÍÆËÍÕßͬʱÏò¶à¸ö·ÖÖ§ÍÆËÍÄÚÈÝpre-receive Ö»ÔËÐÐÒ»´ÎÏà±È֮Ϡupdate Ôò»áΪÿһ¸ö±»ÍÆË͵ķÖÖ§¸÷ÔËÐÐÒ»´ÎËü²»»á´Ó±ê×¼ÊäÈë¶ÁÈ¡ÄÚÈݶøÊǽÓÊÜÈý¸ö²ÎÊý£ºÒýÓõķÖÖ§Ãû£»ÍÆËÍǰÒýÓÃËùÖ¸ÏòÄÚÈÝµÄ SHA-1 Öµ£»ÒÔ¼°Óû§×¼±¸ÍÆËÍÄÚÈÝµÄ SHA-1 ÖµÈôÊÇÕâ¸ö hook ÒÔ·Ç 0 ÖµÍ˳öÖ»ÓÐÏìÓ¦µÄÄÇÒ»¸öÒýÓûᱻ¾Ü¾ø£»ÆäÓàµÄÒÀÈ»»á±»¸üÐÂpost-receiveÔÚÕû¸öÀú³ÌÍê½áÒÔºóÔËÐпÉÒÔÓÃÀ´¸üÐÂÆäËûϵͳ·þÎñ»òÕß֪ͨÓû§Ëü½ÓÊÜÓë pre-receive ÏàͬµÄ±ê×¼ÊäÈëÊý¾ÝËüµÄÓÃ;°üÀ¨¸øÄ³¸öÓʼþÁÐ±í·¢ÐÅ֪ͨһÁ¬¼¯³É·þÎñÆ÷»òÕ߸üÐÂȱÏÝ×·×Ùϵͳ ¡ª¡ª ÉõÖÁ¿ÉÒÔ̫ͨ¹ýÎöÌá½»ÐÅÏ¢À´¾öÒéij¸öÎÊÌâÊÇ·ñÓ¦¸Ã±»¿ªÆô¡¢Ð޸ĻòÕ߹رոþ籾ÎÞ·¨ÖÐÖ¹ push Àú³Ì²»¹ý¿Í»§¶ËÔÚËü¿¢ÊÂÔËÐÐ֮ǰ½«¼á³ÖÅþÁ¬×´Ì¬ÒÔÊÇÈôÊÇÄãÏë×öÆäËû²Ù×÷ÐèÉóÉ÷ʹÓÃËüÓÉÓÚËü½«ãýÃðÄãºÜ³¤µÄÒ»¶Îʱ¼äpost-updateÓÉÔ¶³Ì¿ÍÕ»µÄ git-receive-pack ŲÓÃÒ²ÊǾÍÊÇÍâµØ¿ÍÕ»Íê³É git push ʱÕâ¸öÖ¸ÁîÖ»ÄÜÓÃÀ´×ö֪ͨ²»¿É¸Ä±ä git-receive-pack µÄЧ¹ûpush-to-checkoutÓÉÔ¶³Ì¿ÍÕ»µÄ git-receive-pack ŲÓÃÒ²ÊǾÍÊÇÍâµØ¿ÍÕ»Íê³É git push ʱÈôÊÇÕâ¸ö hook ·µ»Ø·Ç 0 ÖµÔò»áÖÐÖ¹ git push ²Ù×÷applypatch-msg & pre-applypatch & post-applypatchÓÉ git am ´¥·¢Ö÷ÒªÓÃÓÚÒýÈëµÚÈý·½ patch µÄʱ¼äÓÃÓÉÓÚÏîÄ¿ÖÐÔÝʱûÓÐÕâÑùµÄʹÓó¡¾°ÒÔÊDz»×öÏêϸÑо¿pre-rebaseÓÉ git rebase ´¥·¢¿ÉÒÔÓÃÀ´±ÜÃâij¸ö·ÖÖ§±» rebaseÕâ¸ö hook ½ÓÊÜ 1 µ½ 2 ¸ö²ÎÊýµÚ 1 ¸ö²ÎÊýÊÇÉÏÓηÖÖ§µÚ 2 ¸ö²ÎÊýÊǽ«ÒªÖ´ÐÐ rebase µÄ·ÖÖ§post-checkoutÔÚ git checkout ÀÖ³ÉÔËÐкóÖ´ÐÐÄã¿ÉÒÔÆ¾Ö¤ÄãµÄÏîÄ¿ÇéÐÎÓÃËüµ÷½âÄãµÄÊÂÇéĿ¼°üÀ¨·ÅÈë´óµÄ¶þ½øÖÆÎļþ¡¢×Ô¶¯ÌìÉúÎĵµ»ò¾ÙÐÐÆäËûÀàËÆÕâÑùµÄ²Ù×÷post-mergeÔÚ git merge ÀÖ³ÉÔËÐкóÖ´ÐÐÄã¿ÉÒÔÓÃËü»Ö¸´ Git ÎÞ·¨¸ú×ÙµÄÊÂÇéÇøÊý¾ÝºÃ±ÈȨÏÞÊý¾ÝÕâ¸ö hook Ò²¿ÉÒÔÓÃÀ´Ñé֤ijЩÔÚ Git ¿ØÖÆÖ®ÍâµÄÎļþÊÇ·ñ±£´æÕâÑùÄã¾ÍÄÜÔÚÊÂÇéÇø¸Ä±äʱ°ÑÕâЩÎļþ¸´ÖƽøÀ´post-rewriteÕâ¸ö hook ±»ÄÇЩ»áÌæ»»Ìá½»¼Í¼µÄÏÂÁîŲÓÃºÃ±È git commit --amend ºÍ git rebase£¨²»¹ý²»°üÀ¨ git filter-branch£© ËüΨһµÄ²ÎÊýÊÇ´¥·¢ÖØÐ´µÄÏÂÁîÃûͬʱ´Ó±ê×¼ÊäÈëÖнÓÊÜһϵÁÐÖØÐ´µÄÌá½»¼Í¼ Õâ¸ö hook µÄÓÃ;ºÜºéÁ÷ƽÉϸú post-checkout ºÍ post-merge ²îδ¼¸sendemail-validateÕâ¸ö hook ÓÉ git send-email ´¥·¢Ëü½ÓÊÜÒ»¸ö²ÎÊý£º°üÀ¨ e-mail ½ÓÊÜÕßÓÊÏäµÄÎļþÃûÈôÊÇÕâ¸ö hook ·µ»Ø·Ç 0 Öµgit send-email ¾Í»á±»ÖÐÖ¹pre-auto-gcGit µÄһЩһÑùƽ³£²Ù×÷ÔÚÔËÐÐʱÎÞÒâ»áŲÓà git gc --auto ¾ÙÐÐÀ¬»ø½ÓÄÉÕâ¸ö hook »áÔÚÀ¬»ø½ÓÄÉ×îÏÈ֮ǰ±»Å²ÓÿÉÒÔÓÃËüÀ´ÌáÐÑÄãÏÖÔÚÒª½ÓÄÉÀ¬»øÁË»òÕßÒÀÇéÐÎÅжÏÊÇ·ñÒªÖÐÖ¹½ÓÄÉCocoapods - ´ó¹Ü¼Ò×öΪһ¸öµÚÈý·½¿âÒÀÀµ¹ÜÀí¹¤¾ßCocoapods ÔÚÄ£¿é»¯¿ª·¢ÖÐÊÎÑÝÁ˺ÜÊǽ¹µãµÄ½ÇÉ«¹ØÓÚ Cocoapods µÄ¹¦Ð§ºÍÏÈÈÝÕâÀï¾Í·×ÆçÒ»³ÂÊöÁËÖ÷Òª¿´Ò»ÏºÍÄ£¿é»¯¿ª·¢Àú³ÌÖÐÏà¹ØµÄһЩ¹¤¾ß×Ô½ç˵ Cocoapods Ä£°åÎÒÃÇÒ»Ñùƽ³£Óà pod lib create Õâ¸öÖ¸ÁîÀ´½¨ÉèÒ»¸öÄ£¿é×ÅʵÕâ¸öÖ¸ÁîÉÐÓÐÒ»¸öÑ¡Ï--template-url=URLÓÃÀ´Ö¸¶¨ÌìÉú¿âµÄÄ£°å¹Ù·½Ä£°åµØÖ·ÊÇ£ºhttps://github.com/CocoaPods/pod-templateƾ֤Õâ¸öÄ£°åÌìÉúµÄ¹¤³ÌĿ¼½á¹¹ÈçÏ£ºMyLib©À©¤©¤ .travis.yml©À©¤©¤ _Pods.xcproject©À©¤©¤ Example©¦ ©À©¤©¤ MyLib©¦ ©À©¤©¤ MyLib.xcodeproj©¦ ©À©¤©¤ MyLib.xcworkspace©¦ ©À©¤©¤ Podfile©¦ ©À©¤©¤ Podfile.lock©¦ ©À©¤©¤ Pods©¦ ©¸©¤©¤ Tests©À©¤©¤ LICENSE©À©¤©¤ MyLib.podspec©À©¤©¤ Pod©¦ ©À©¤©¤ Assets©¦ ©¸©¤©¤ Classes©¦ ©¸©¤©¤ RemoveMe.[swift/m]©¸©¤©¤ README.mdÒ²¾ÍÊÇ˵ÎÒÃÇ¿ÉÒÔ fork Õâ·Ý¹Ù·½Ä£°æµØÖ·È»ºó¶¨ÖÆÎÒÃÇ×Ô¼ºµÄÄ£°å£¨°üÀ¨Ö÷¹¤³ÌºÍӪҵģ¿é£©ÔöÌí×Ô½ç˵µÄ¹¦Ð§ºÃ±È£ºÌí¼ÓËùÓлù´¡¿âÒÀÀµÌí¼Ó˽ÓÐ Cocoapods ¿ÍÕ»Ìí¼Ó .gitignore ÎļþÌí¼Ó×Ô½ç˵¾ç±¾˽ÓÐ Cocoapods ¿ÍÕ»ºÍÖ÷¹¤³ÌÒ»ÑùÄ£¿éÒ²ÊÇÐèÒª×ö°æ±¾¹ÜÀíµÄÏÖÔÚÀ´¿´½ÏÁ¿ºÃµÄ·½·¨¾ÍÊÇͨ¹ý Cocoapods À´Ðû²¼°æ±¾ÒÔÊÇÎÒÃÇÐèҪ׼±¸Ò»¸ö×Ô¼ºµÄ˽ÓÐ Cocoapods ¿ÍÕ»×ÅʵºÜ¼òÆÓÊ×ÏÈÔÚÄÚÍø git ÉϽ¨ÉèÒ»¸ö¿Õ¿ÍջȻºóÔÚÍâµØÖ´ÐÐÒ»ÏÂÏÂÃæµÄÖ¸Áî¼´¿É£º1pod repo add [Spec name] [Git url]È»ºó¾ÍÊÇÔÚÐû²¼¿âµÄʱ¼ä×¢ÖØÒ»ÏÂÓÃÈçÏÂÖ¸Áî¼´¿ÉÐû²¼µ½Ë½ÓпÍÕ»ÄÚ£º1pod repo push [Spec name] [Lib name].podspecCocoapods ÒýÓõÚÈý·½¿âµÄ¼¸ÖÖ·½·¨Ê¹Óùý Cocoapods µÄͯЬӦ¸Ã¶¼ÖªµÀCocoapods µÄÒýÓ÷½·¨ÓÐÈýÖÖ£º·½·¨ Àý×Ó ËµÃ÷°æ±¾ºÅÒýÓà pod 'Alamofire', '~> 3.0' ÕâÖÖ·½·¨ÒýÓõÄÊÇÒѾ­Ðû²¼µÄ°æ±¾°üÀ¨ÁË >``>=``<``<=``~> ¼¸ÖÖ°æ±¾ÏÞÖÆ·ûºÅÆäÖÐ~>·ûºÅ´ú±íÖ»¸üÐÂ×îеÄС°æ±¾ºÅºÃ±È ~> 1.0.0 ÔòÖ»»á¸üе½ 1.0.x µÄ×îа汾¶ø²»»á¸üР1.x.0 ÒÔÉϵİ汾ÍâµØÂ·¾¶ÒýÓà pod 'Alamofire', :path => '~/Documents/Alamofire' ÕâÖÖ·½·¨Ö±½ÓÒýÓÃÍâµØµÄ´úÂëÕâÖÖ·½·¨Ï¶ÔÒýÓÿâµÄÐÞ¸ÄÈÔÈ»»áÌá½»µ½ÒýÓÿâµÄ git É϶ø²»»áÌá½»µ½Ö÷¹¤³ÌÔ¶³Ì git ·¾¶ÒýÓà pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git' ÕâÖÖ·½·¨Ö±½ÓÒýÓÃÔ¶³Ì git ´úÂë²»ÐèÒªÒýÓõĿâ¾ÙÐÐÐû²¼²¢ÇÒ»¹Ö§³Ö :branch =>¡¢:tag => ºÍ :commit => ÈýÖÖÑ¡ÏîÁ÷³ÌÆÊÎöÏÂÃæ¾ÍÊÇÎÒ¶Ô @zesming ´óÀзÖÏíµÄÁ÷³ÌͼÖи÷¸öÀú³ÌµÄһЩ˼Ë÷ÓªÒµ·½ÐèÇ󵽿ª·¢Æ¾Ö¤ GitFlow µÄ¹æ·¶еÄÐèÇó×ßµÄÊÇ feature µÄÁ÷³ÌÕâÀïÎÒÃÇÓ¦¸Ã¿ÉÒÔ¿ª·¢Ò»Ð©¸¨Öú¿ª·¢µÄ¾ç±¾Ò»¼üн¨ÓªÒµÄ£¿éºÍÖ÷¹¤³Ì feature ·ÖÖ§×é¼þ»¯µ½ÁËÒ»¸öÍêÕû½×¶ÎµÄʱ¼äÖ÷¹¤³ÌÓ¦¸ÃÊÇûÓдúÂëµÄÖ»ÊÇÒ»¸ö¿Ç¿ÉÊÇÔÚÉú³¤½×¶ÎµÄʱ¼äÖ÷¹¤³Ì»¹»á°üÀ¨Ò»Ð©ÓªÒµ´úÂëÒÔÊÇÎÒÃÇÔÚ¿ª·¢Ä³¸ö feature µÄʱ¼äÍùÍùÊÇÄ£¿éÄÚÓÐһЩÏêϸӪҵ´úÂëÖ÷¹¤³ÌÉÐÓÐһЩŲÓôúÂëÕâ¸öʱ¼ä¾ÍÐèÒªÔÚÖ÷¹¤³ÌºÍӪҵģ¿é¶¼Ð½¨Í¬ÑùµÄ feature ·ÖÖ§ÒÔÊÇÎÒÃÇÔÚÖ÷¹¤³ÌÔöÌíÒ»¸ö¾ç±¾Õâ¸ö¾ç±¾µÄ²ÎÊý°üÀ¨£ºÓªÒµÄ£¿éÃû£»ÓªÒµÄ£¿éÍâµØÂ·¾¶£»feature ·ÖÖ§ÃûÖ´ÐÐÀú³ÌÈçÏ£ºÎªÖ÷¹¤³Ì½¨Éè feature ·ÖÖ§£»½øÈëӪҵģ¿éËùÔÚĿ¼ΪӪҵÄ£¿é½¨Éè feature ·ÖÖ§£»ÉèÖÃÖ÷¹¤³Ì Podfile ÖÐӪҵģ¿éÒýÓ÷½·¨ÎªÍâµØÂ·¾¶ÒýÓã»·­¿ªÖ÷¹¤³ÌºÍӪҵģ¿é Example ¹¤³ÌÒ»¼üÇл»Ö÷¹¤³Ì¿ª·¢µ÷ÊÔ״̬һ¼üÇл»Ö÷¹¤³Ì¿ª·¢×´Ì¬ÊÇָijЩӪҵÄ£¿éÐèÒªÒÀÀµÖ÷¹¤³ÌÀ´¾ÙÐе÷ÊÔµÄʱ¼ä£¨PS£ºËäÈ»½ÏÁ¿ÀíÏëµÄ״̬ÊÇӪҵģ¿é¿ÉÒÔ×ÔÁ¦ÔËÐв»¹ýÒ»Ñùƽ³£ÇéÐÎÏÂÀíÏëºÜÓÅÃÀÏÖʵºÜ²Ð¿á????£©ÐèÒª½« Podfile ÖÐÕâ¸öÄ£¿éµÄÒýÓ÷½·¨ÐÞ¸ÄΪÍâµØÂ·¾¶µÄÒýÓ÷½·¨ÕâÑùÖ÷¹¤³Ì´úÂëµÄÐ޸ĺÍӪҵģ¿é´úÂëµÄÐ޸ĻỮ·ÖÌá½»µ½¸÷×﵀ git ¿ÍÕ»´Ó¶øÊµÏֱߵ÷ÊԱ߿ª·¢±ßÌá½»½ÓÂëÕâ¸ö¹¦Ð§Ë¼Á¿Óþ籾µÄ·½·¨À´ÊµÏÖ°²ÅÅÔÚÖ÷¹¤³ÌµÄ³£Óþ籾Ŀ¼Ï²ÎÊýÓ¦¸Ã°üÀ¨£ºÓªÒµÄ£¿éÃû£»ÓªÒµÄ£¿éÍâµØÂ·¾¶£»ÓªÒµÄ£¿é feature ·ÖÖ§Ãû [¿ÉÑ¡]Ö´ÐеIJÙ×÷Ó¦¸Ã°üÀ¨£ºÈôÊÇÖ¸¶¨ÁËӪҵģ¿é feature ·ÖÖ§ÃûÔòÐèÒªÏȸøÓªÒµÄ£¿éн¨·ÖÖ§²»È»Ö±½ÓÖ´ÐÐµÚ 2 ²½£»ÐÞ¸ÄÖ÷¹¤³Ì Podfile ÖÐӪҵģ¿éµÄÒýÓ÷½·¨ÎªÍâµØÂ·¾¶ÒýÓã»pod install£»¹Ø±ÕÖ÷¹¤³Ì²¢ÖØÐ·­¿ªÒ»¼üÇл»Ö÷¹¤³ÌÌύ״̬ӪҵÄ£¿é¿ª·¢µ÷ÊÔÍê³ÉÖ®ºóÐèÒª½«Ö÷¹¤³Ì»Ö¸´µ½Õý³£µÄ״̬²¢Ìá½»Õâ¸ö¹¦Ð§ÕÕ¾ÉÓþ籾µÄ·½·¨ÊµÏÖ°²ÅÅÔÚÖ÷¹¤³ÌµÄ³£Óþ籾Ŀ¼Ï²ÎÊýÓ¦¸Ã°üÀ¨£ºÓªÒµÄ£¿éÃû£»ÓªÒµÄ£¿éÔ¶³Ì git µØÖ·;Ӫҵģ¿é feature ·ÖÖ§ÃûÖ´ÐеIJÙ×÷Ó¦¸Ã°üÀ¨£ºÆ¾Ö¤Ä¿½ñӪҵģ¿éÍâµØÂ·¾¶ÌύӪҵģ¿é´úÂ룻ÐÞ¸ÄÖ÷¹¤³Ì Podfile ÖÐӪҵģ¿éµÄÒýÓ÷½·¨ÎªÔ¶³Ì git ÒýÓã»pod install£»¹Ø±ÕÖ÷¹¤³Ì²¢ÖØÐ·­¿ªÌá½»½ÓÂëµ½ÓªÒµ´úÂë¿ÍÕ»Õâ¸öÀú³ÌÎÒÃÇÖ÷Ҫͨ¹ý githooks À´×öһЩһЩ×Ô¶¯¼ì²â°üÀ¨£ºOCLintµ¥Î»²âÊÔÐû²¼×é¼þµ½ÄÚÍø Pods×¼±¸½×¶ÎÕâ¸ö½×¶Î×öµÄÊÂÇéÖ÷ÒªÊǼì²âÄ¿½ñÐèÒªÐû²¼µÄËùÓзÖÖ§ÊÇ·ñ¶¼ÒѾ­Ìá½» PR / MR ²¢ºÏ²¢µ½ÁË develop ·ÖÖ§×¢£ºÕâÀï¶Ô·ÖÖ§µÄÃüÃû»áÓÐһЩ¹æÔòÉϵÄÒªÇó±ÈÈçÔÚ·ÖÖ§ÃûÄÚÐèÒª´øÊÜÆ­Ç°ÐèÒªÐû²¼µÄ°æ±¾ºÅ´Ó¶ø¿ÉÒÔͨ¹ýÕâ¸ö°æ±¾ºÅÆ¥Å䵽Ŀ½ñÐèÒªÐû²¼µÄËùÓзÖÖ§Ðû²¼ -> ²âÊÔ -> bug fix -> ÔÙ´ÎÐû²¼½×¶ÎÕâÀïÐèÒª°Ñ GitFlow ºÍ Cocoapods µÄÐû²¼Á÷³ÌÍŽáÆðÀ´˼Á¿µ½Ò»Ñùƽ³£ÐèÒªÒÀÀµÖ÷¹¤³ÌÀ´¾ÙÐвâÊÔÎÒÃÇÐèÒªÔÚÖ÷¹¤³ÌÔöÌíÒ»¸öÍâµØ½ÅÔ­À´¸¨ÖúÐû²¼°üÀ¨µÄ²ÎÊýÈçÏ£ºÄ¿½ñ°æ±¾ºÅ£»ÓªÒµÄ£¿éÍâµØÂ·¾¶£»Ö÷¹¤³Ì feature ·ÖÖ§Ãû[¿ÉÑ¡]ʵÏֵĹ¦Ð§ÈçÏ£ºÈôÊÇÌṩÁËÖ÷¹¤³Ì feature ·ÖÖ§ÃûÐèÒªÏÈÇл»Ö÷¹¤³Ì·ÖÖ§£»²»È»Ìø¹ýÕâÒ»²½£»Æ¾Ö¤´«ÈëµÄÄ¿½ñ°æ±¾ºÅ´Ó develop ·ÖÖ§½¨Éè release ·ÖÖ§ÈôÊÇÒѾ­±£´æÔòÌø¹ýÕâÒ»²½£»½«Ö÷¹¤³Ì git ¿ÍÕ»ÖÐ Podfile ÒýÓøÃÄ£¿éµÄ·½·¨Ì滻ΪÒýÓÃÔ¶³Ì git ¿ÍÕ»µÄ release ·ÖÖ§£»È»ºóÔÚÖ÷¹¤³ÌÖ´ÐÐ pod update [Ä£¿éÃû] ¸üдúÂë£»ÍÆËÍÖ÷¹¤³Ì´úÂëµ½Ô¶³Ì git ¿ÍÕ»ͨ¹ý githooks µÄ·½·¨´ò°üÖ÷¹¤³Ì²¢Ìá½»²âÊÔ£»²âÊÔÀú³ÌÖÐÈôÊDZ£´æÎÊÌâÔòͨ¹ýÒ»¼üÇл»Ö÷¹¤³Ì¿ª·¢µ÷ÊÔ״̬¾ç±¾Ö±½ÓÇл»¿ª·¢×´Ì¬²¢¾ÙÐÐ bug fix£»bug fix Ö®ºóÖØÐÂÖ´ÐÐµÚ 1 ²½²âÊÔÍê³ÉÐû²¼µ½ÄÚÍø Pods ½×¶Î²âÊÔÍê³Éºó¾Í¿ÉÒÔÐû²¼ÓªÒµÄ£¿éµ½ÄÚÍø Pods ÁËÕâÀïÎÒÃÇÔÚӪҵģ¿é¹¤³ÌÄÚ×¼±¸Ò»¸ö¾ç±¾²ÎÊýÈçÏ£ºÄ¿½ñ°æ±¾ºÅÖ÷¹¤³ÌÍâµØÂ·¾¶ʵÏֵĹ¦Ð§ÈçÏ£ºÊ×ÏÈÎÒÃÇÒªÐÞ¸Ä .podspec ÎļþÖеİ汾ºÅΪ´«ÈëµÄÄ¿½ñ°æ±¾ºÅ²¢Ìá½» push µ½ release ·ÖÖ§È»ºóƾ֤ GitFlow µÄ release Á÷³ÌºÏ²¢ release ·ÖÖ§µ½ develop ·ÖÖ§ºÍ master ·ÖÖ§È»ºóÔÚ master ·ÖÖ§½¨Éè¶ÔÓ¦°æ±¾ºÅµÄ tag ²¢ push µ½Ô¶³Ì git ¿ÍջȻºó¾Í¿ÉÒÔÐû²¼ÓªÒµÄ£¿éÁËÐû²¼Íê³ÉÖ®ºóÇл»µ½Ö÷¹¤³Ì·¾¶½«Ö÷¹¤³Ì Podfile ÖжԸÃÄ£¿éµÄÒýÓ÷½·¨ÐÞ¸ÄΪ°æ±¾ºÅÒýÓü¯³É×é¼þµ½Ö÷¹¤³ÌÓÉÓÚ֮ǰÐû²¼×é¼þµÄʱ¼äÒѾ­½«Ö÷¹¤³Ì¶Ô¸÷Ӫҵģ¿éµÄÒýÓ÷½·¨ÐÞ¸ÄΪ°æ±¾ºÅÒýÓÃÒÔÊÇÕâ¸ö½×¶ÎÎÒÃÇÖ»ÐèÒªÑéÖ¤Ò»ÏÂÄ¿½ñÖ÷¹¤³ÌÒýÓõÄÊÇ·ñÊǸ÷Ӫҵģ¿éµÄ×îÐÂÐû²¼°æ±¾¼´¿É²ÎÊýÈçÏ£ºÖ÷¹¤³ÌÒÀÀµµÄËùÓÐӪҵģ¿éÁбíÍê³ÉµÄ¹¦Ð§ÈçÏ£º¼ì²âÖ÷¹¤³ÌÒÀÀµÄ£¿éµÄËùÓÐӪҵģ¿éµÄ×îа汾ÊÇ·ñºÍ Podfile ÖÐÖ¸¶¨µÄÒ»ÖÂÈôÊÇ·×ÆçÖ±¨´íÐû²¼Ö÷¹¤³Ì×¼±¸½×¶ÎÕâ¸ö½×¶Î×öµÄÊÂÇéÓÐÁ½µã£º¼ì²âÖ÷¹¤³ÌÄ¿½ñÐèÒªÐû²¼µÄËùÓзÖÖ§ÊÇ·ñ¶¼ÒѾ­Ìá½» PR / MR ²¢ºÏ²¢µ½ÁË develop ·ÖÖ§¼ì²âÖ÷¹¤³ÌÄ¿½ñÒýÓõÄËùÓÐӪҵģ¿éÊÇ·ñ¶¼Îª°æ±¾ºÅÒýÓÃÐû²¼ -> ²âÊÔ -> bug fix -> ÔÙ´ÎÐû²¼½×¶ÎÕâ¸ö½×¶Î¿ÉÒÔÃ÷ȷΪ¼¯³É²âÊÔ½×¶ÎͬÑùÊÇÖ÷¹¤³ÌÖеÄÒ»¸ö¾ç±¾²ÎÊýÈçÏ£ºÄ¿½ñ°æ±¾ºÅƾ֤´«ÈëµÄÄ¿½ñ°æ±¾ºÅ´Ó develop ·ÖÖ§½¨Éè release ·ÖÖ§ÈôÊÇÒѾ­±£´æÔòÌø¹ýÕâÒ»²½£»ÍÆËÍÖ÷¹¤³Ì´úÂëµ½Ô¶³Ì git ¿ÍÕ»£»Í¨¹ý githooks µÄ·½·¨´ò°üÖ÷¹¤³Ì²¢Ìá½»²âÊÔ£»²âÊÔÀú³ÌÖÐÈôÊDZ£´æÎÊÌâÔòͨ¹ýÒ»¼üÇл»Ö÷¹¤³Ì¿ª·¢µ÷ÊÔ״̬¾ç±¾Ö±½ÓÇл»¿ª·¢×´Ì¬²¢¾ÙÐÐ bug fix£»bug fix Ö®ºóÖØÐÂÖ´ÐÐµÚ 1 ²½²âÊÔÍê³ÉÐû²¼Æ¾Ö¤ GitFlow µÄ release Á÷³ÌºÏ²¢ release ·ÖÖ§µ½ develop ·ÖÖ§ºÍ master ·ÖÖ§È»ºóÔÚ master ·ÖÖ§½¨Éè¶ÔÓ¦°æ±¾ºÅµÄ tag ²¢ push µ½Ô¶³Ì git ¿ÍÕ»£»Í¨¹ý githooks µÄ·½·¨´ò°üÖ÷¹¤³Ì²¢Ðû²¼×ܽ᱾ÎÄÖ»ÊÇÒ»¸ö²»¿ÉÊìµÄ˼Ë÷ºóÐøÊµÑéµÄÀú³ÌÖпÉÄÜ»á¶ÔһЩϸ½Ú¾ÙÐиÄÉÆÒ²»¶Ó­¸÷È˶ÔÎÒ˼Ð÷Öв»¶ÔÀíµÄµØ·½¾ÙÐÐÖ¸ÕýÎÒ»áºÜÊÇллÏÂһƪµÄÄÚÈÝÓ¦¸ÃÊÇÓªÒµ·½ÐèÇ󵽿ª·¢Õâ¸öÀú³ÌÖеÄһЩÏêϸµÄʵ¼ù¼Í¼¾´ÇëÆÚ´ý²Î¿¼×ÊÁÏIntroducing GitFlow£ºhttps://datasift.github.io/gitflow/IntroducingGitFlow.htmlUsing Git / Ignoring files£ºhttps://help.github.com/articles/ignoring-files/githooks£ºhttps://git-scm.com/docs/githooks×Ô½ç˵ Git - Git ¹³×Ó£ºhttps://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git-%E9%92%A9%E5%AD%90Öø×÷Ȩ¹é×÷ÕßËùÓÐÉÌÒµ×ªÔØÇëÁªÏµ×÷Õß»ñµÃÊÚȨ·ÇÉÌÒµ×ªÔØÇë×¢Ã÷À´ÓÉ

ìÇÁº×ðÕß˵µÀɱ¾øÖ®Á¦ÖÕ½á´óµÀµÄ¹æÔòÒªÔ¼¼ÛǮΪ26.93Ôª/¹ÉÒªÔ¼ÊÕ¹ºÓÐÓÃÆÚΪ30¸ö×ÔÈ»ÈÕ×Ô2025Äê6ÔÂ18ÈÕÆðÖÁ2025Äê7ÔÂ17ÈÕÖ¹×èÖ¹6ÔÂ15Èռô¨Ò©ÒµµÄÊÕÅ̼ÛΪ27.51Ôª/¹ÉÂÔ¸ßÓÚ´Ë´ÎÒªÔ¼ÊÕ¹ºµÄ¼ÛÇ®

ËûÓÐÒ¹ÀÇ»ÊÒ¹ÀÇȺ¼«Ò×Ôö²¹Ч¹ûºÚÂ¥À¼È´ÉáÆúÕâÑùµÄÅÚ»Ò²»±ØËäÈ»ÓÐÕë¶Ô¶«·½ÓàÁÁµÄÒòËØµ«¸ü¶àµÄÊÇÔÚ´òѹËûÀÇÍõ³£É½ÒõÄØÑüΧ̫´ó¡¢ÌåÖØ³¬ÖØ¡­¡­

¸üУº

2025-09-13 21:11:43

±¸×¢£º
¹úÓï
ÆÀ¼Û£º
ƯÁÁÂèÂè°®ÉÏÁËÎÒ(ÌìÌìÏòÉÏ)С˵ȫÎÄ×îÐÂÔÚÏßÔĶÁ...
Ê×Ò³
Ó°Ï·
Ò»Á¬¾ç
×ÛÒÕ
¶¯Âþ
APP
ÍøÕ¾µØÍ¼