ÎÒÃÇÒѾ´ÓSVN Çл»µ½GitºÜ¶àÄêÁË£¬ÏÖÔÚ¼¸ºõËùÓеÄÏîÄ¿¶¼ÔÚʹÓÃGithub¹ÜÀí, ±¾ÆªÎÄÕ½²Ò»ÏÂΪʲôʹÓÃGit,
ÒÔ¼°ÈçºÎÔÚÍŶÓÖÐÕýȷʹÓá£
GitµÄÓŵã
GitµÄÓŵãºÜ¶à£¬µ«ÊÇÕâÀïÖ»ÁгöÎÒÈÏΪ·Ç³£Í»³öµÄ¼¸µã¡£
1.ÓÉÓÚÊÇ·Ö²¼Ê½£¬ËùÓб¾µØ¿â°üº¬ÁËÔ¶³Ì¿âµÄËùÓÐÄÚÈÝ¡£
2.ÓÅÐãµÄ·ÖÖ§Ä£ÐÍ£¬´ò·ÖÖ§ÒÔ¼°ºÏ²¢·ÖÖ§£¬»úÆ÷·½±ã¡£
3.¿ìËÙ£¬ÔÚÕâ¸öʱ¼ä¾ÍÊǽðÇ®µÄʱ´ú£¬GitÓÉÓÚ´úÂë¶¼ÔÚ±¾µØ£¬´ò·ÖÖ§ºÍºÏ²¢·ÖÖ§»úÆ÷¿ìËÙ£¬Ê¹ÓøöSVNµÄÄÜÉî¿ÌÌå»áµ½ÕâÖÖÓÅÊÆ¡£
¸ÐÐËȤµÄ£¬¿ÉÒÔÈ¥¿´Ò»ÏÂGit±¾ÉíµÄÉè¼Æ£¬ÄÚÔڵļܹ¹ÌåÏÖÁ˺ܶàµÄÓÅÊÆ£¬²»À¢Êdzö×ÊÌì²Å³ÌÐòÔ±Linus
(LinuxÖ®¸¸) Ö®ÊÖ
°æ±¾¹ÜÀíµÄÌôÕ½
ËäÈ»ÓÐÕâôÓÅÐãµÄ°æ±¾¹ÜÀí¹¤¾ß£¬µ«ÊÇÎÒÃÇÃæ¶Ô°æ±¾¹ÜÀíµÄʱºò£¬ÒÀÈ»Óзdz£´óµÃÌôÕ½£¬ÎÒÃǶ¼ÖªµÀ´ó¼Ò¹¤×÷ÔÚͬһ¸ö²Ö¿âÉÏ£¬ÄÇô±Ë´ËµÄ´úÂëÐ×÷±ØÈ»´øÀ´ºÜ¶àÎÊÌâºÍÌôÕ½£¬ÈçÏ£º
1.ÈçºÎ¿ªÊ¼Ò»¸öFeatureµÄ¿ª·¢£¬¶ø²»Ó°Ïì±ðµÄFeature£¿
2.ÓÉÓÚºÜÈÝÒ×´´½¨Ð·ÖÖ§£¬·ÖÖ§¶àÁËÈçºÎ¹ÜÀí£¬Ê±¼ä¾ÃÁË£¬ÈçºÎÖªµÀÿ¸ö·ÖÖ§ÊǸÉʲôµÄ£¿
3.ÄÄЩ·ÖÖ§ÒѾºÏ²¢»ØÁËÖ÷¸É£¿
4.ÈçºÎ½øÐÐReleaseµÄ¹ÜÀí£¿¿ªÊ¼Ò»¸öReleaseµÄʱºòÈçºÎ¶³½áFeature,
ÈçºÎÔÚPrepare ReleaseµÄʱºò£¬¿ª·¢ÈËÔ±¿ÉÒÔ¼ÌÐø¿ª·¢ÐµĹ¦ÄÜ£¿
5.ÏßÉÏ´úÂë³öBugÁË£¬ÈçºÎ¿ìËÙÐÞ¸´£¿¶øÇÒÐÞ¸´µÄ´úÂëÒª°üº¬µ½¿ª·¢ÈËÔ±µÄ·ÖÖ§ÒÔ¼°ÏÂÒ»¸öRelease
´ó²¿·Ö¿ª·¢ÈËÔ±ÏÖÔÚʹÓÃGit¾ÍÖ»ÊÇÓÃÈý¸öÉõÖÁÁ½¸ö·ÖÖ§£¬Ò»¸öÊÇMaster,
Ò»¸öÊÇDevelop, »¹ÓÐÒ»¸öÊÇ»ùÓÚDevelop´òµÃ¸÷ÖÖ·ÖÖ§¡£Õâ¸öÔÚСÏîÄ¿¹æÄ£µÄʱºò»¹ÃãÇ¿¿ÉÒÔÖ§³Å£¬ÒòΪºÜ¶àÈË×öÏîÄ¿¾ÍÖ»ÓÐÒ»¸öRelease,
µ«ÊÇÈËÔ±Ò»¶à£¬¶øÇÒÏîÄ¿ÖÜÆÚÒ»³¤¾Í»á³öÏÖ¸÷ÖÖÎÊÌâ¡£
Git Flow
¾ÍÏñ´úÂëÐèÒª´úÂë¹æ·¶Ò»Ñù£¬´úÂë¹ÜÀíͬÑùÐèÒªÒ»¸öÇåÎúµÄÁ÷³ÌºÍ¹æ·¶
Vincent Driessen ͬѧΪÁ˽â¾öÕâ¸öÎÊÌâÌá³öÁË A Successful
Git Branching Model
ÏÂÃæÊÇGit FlowµÄÁ÷³Ìͼ

ÉÏÃæµÄͼÄãÀí½â²»ÁË£¿ û¹ØÏµ£¬Õâ²»ÊÇÄãµÄ´í£¬ÎÒ¾õµÃÕâÕÅͼ±¾ÉíÓеãÎÊÌ⣬ÕâÕÅͼӦ¸Ã×óת90¶È£¬´ó¼ÒÓ¦¸Ã¾ÍºÜÓÃÒÔÀí½âÁË¡£
Git Flow³£ÓõķÖÖ§
Production ·ÖÖ§
Ò²¾ÍÊÇÎÒÃǾ³£Ê¹ÓõÄMaster·ÖÖ§£¬Õâ¸ö·ÖÖ§×î½ü·¢²¼µ½Éú²ú»·¾³µÄ´úÂ룬×î½ü·¢²¼µÄRelease£¬
Õâ¸ö·ÖÖ§Ö»ÄÜ´ÓÆäËû·ÖÖ§ºÏ²¢£¬²»ÄÜÔÚÕâ¸ö·ÖÖ§Ö±½ÓÐÞ¸Ä
Develop ·ÖÖ§
Õâ¸ö·ÖÖ§ÊÇÎÒÃÇÊÇÎÒÃǵÄÖ÷¿ª·¢·ÖÖ§£¬°üº¬ËùÓÐÒª·¢²¼µ½ÏÂÒ»¸öReleaseµÄ´úÂ룬Õâ¸öÖ÷ÒªºÏ²¢ÓëÆäËû·ÖÖ§£¬±ÈÈçFeature·ÖÖ§
Feature ·ÖÖ§
Õâ¸ö·ÖÖ§Ö÷ÒªÊÇÓÃÀ´¿ª·¢Ò»¸öÐµĹ¦ÄÜ£¬Ò»µ©¿ª·¢Íê³É£¬ÎÒÃǺϲ¢»ØDevelop·ÖÖ§½øÈëÏÂÒ»¸öRelease
Release·ÖÖ§
µ±ÄãÐèÒªÒ»¸ö·¢²¼Ò»¸öÐÂReleaseµÄʱºò£¬ÎÒÃÇ»ùÓÚDevelop·ÖÖ§´´½¨Ò»¸öRelease·ÖÖ§£¬Íê³ÉReleaseºó£¬ÎÒÃǺϲ¢µ½MasterºÍDevelop·ÖÖ§
Hotfix·ÖÖ§
µ±ÎÒÃÇÔÚProduction·¢ÏÖеÄBugʱºò£¬ÎÒÃÇÐèÒª´´½¨Ò»¸öHotfix,
Íê³ÉHotfixºó£¬ÎÒÃǺϲ¢»ØMasterºÍDevelop·ÖÖ§£¬ËùÒÔHotfixµÄ¸Ä¶¯»á½øÈëÏÂÒ»¸öRelease
Git FlowÈçºÎ¹¤×÷
³õʼ·ÖÖ§
ËùÓÐÔÚMaster·ÖÖ§ÉϵÄCommitÓ¦¸ÃTag

Feature ·ÖÖ§
·ÖÖ§Ãû feature/*
Feature·ÖÖ§×öÍêºó£¬±ØÐëºÏ²¢»ØDevelop·ÖÖ§, ºÏ²¢Íê·ÖÖ§ºóÒ»°ã»áɾµãÕâ¸öFeature·ÖÖ§£¬µ«ÊÇÎÒÃÇÒ²¿ÉÒÔ±£Áô

Release·ÖÖ§
·ÖÖ§Ãû release/*
Release·ÖÖ§»ùÓÚDevelop·ÖÖ§´´½¨£¬´òÍêRelease·ÖÖ®ºó£¬ÎÒÃÇ¿ÉÒÔÔÚÕâ¸öRelease·ÖÖ§ÉϲâÊÔ£¬ÐÞ¸ÄBugµÈ¡£Í¬Ê±£¬ÆäËü¿ª·¢ÈËÔ±¿ÉÒÔ»ùÓÚ¿ª·¢ÐµÄFeature
(¼Çס£ºÒ»µ©´òÁËRelease·ÖÖ§Ö®ºó²»Òª´ÓDevelop·ÖÖ§ÉϺϲ¢Ðµĸ͝µ½Release·ÖÖ§)
·¢²¼Release·Ö֧ʱ£¬ºÏ²¢Releaseµ½MasterºÍDevelop£¬
ͬʱÔÚMaster·ÖÖ§ÉÏ´ò¸öTag¼ÇסRelease°æ±¾ºÅ£¬È»ºó¿ÉÒÔɾ³ýRelease·ÖÖ§ÁË¡£

ά»¤·ÖÖ§ Hotfix
·ÖÖ§Ãû hotfix/*
hotfix·ÖÖ§»ùÓÚMaster·ÖÖ§´´½¨£¬¿ª·¢ÍêºóÐèÒªºÏ²¢»ØMasterºÍDevelop·ÖÖ§£¬Í¬Ê±ÔÚMasterÉÏ´òÒ»¸ötag

Git Flow´úÂëʾÀý
a. ´´½¨develop·ÖÖ§
git branch develop git push -u origin develop |
b. ¿ªÊ¼ÐÂFeature¿ª·¢
git checkout -b some-feature develop # Optionally, push branch to origin: git push -u origin some-feature
# ×öһЩ¸Ä¶¯
git status
git add some-file
git commit |
c. Íê³ÉFeature
git pull origin develop git checkout develop git merge --no-ff some-feature git push origin develop
git branch -d some-feature
# If you pushed branch to origin:
git push origin --delete some-feature |
d. ¿ªÊ¼Relase
git checkout -b release-0.1.0 develop
# Optional: Bump version number, commit
# Prepare release, commit |
e. Íê³ÉRelease
git checkout master git merge --no-ff release-0.1.0 git push
git checkout develop
git merge --no-ff release-0.1.0
git push
git branch -d release-0.1.0
# If you pushed branch to origin:
git push origin --delete release-0.1.0
git tag -a v0.1.0 master
git push --tags
|
f. ¿ªÊ¼Hotfix
git checkout -b hotfix-0.1.1 master |
g. Íê³ÉHotfix
git checkout master git merge --no-ff hotfix-0.1.1 git push
git checkout develop
git merge --no-ff hotfix-0.1.1
git push
git branch -d hotfix-0.1.1
git tag -a v0.1.1 master
git push --tags |
Git flow¹¤¾ß
ʵ¼ÊÉÏ£¬µ±ÄãÀí½âÁËÉÏÃæµÄÁ÷³Ìºó£¬ÄãÍêÈ«²»ÓÃʹÓù¤¾ß£¬µ«ÊÇʵ¼ÊÉÏÎÒÃǴ󲿷ÖÈ˺ܶàÃüÁî¾ÍÊǼDz»×¡Ñ½£¬Á÷³Ì¾ÍÊǼDz»×¡Ñ½£¬Ö×ô°ìÄØ£¿
×ÜÓдÏÃ÷µÄÈË´´ÔìºÃµÄ¹¤¾ß¸ø´ó¼ÒÓÃ, ÄǾÍÊÇGit flow script.
°²×°
OS X
brew install git-flow
Linux
apt-get install git-flow
Windows
wget -q -O - --no-check-certificate
https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh
| bash
ʹÓÃ
³õʼ»¯: git flow init
¿ªÊ¼ÐÂFeature: git flow feature start
MYFEATURE
PublishÒ»¸öFeature(Ò²¾ÍÊÇpushµ½Ô¶³Ì): git flow
feature publish MYFEATURE
»ñÈ¡PublishµÄFeature: git flow feature
pull origin MYFEATURE
Íê³ÉÒ»¸öFeature: git flow feature finish
MYFEATURE
¿ªÊ¼Ò»¸öRelease: git flow release start
RELEASE [BASE]
PublishÒ»¸öRelease: git flow release publish
RELEASE
·¢²¼Release: git flow release finish RELEASE
±ðÍüÁËgit push --tags
¿ªÊ¼Ò»¸öHotfix: git flow hotfix start VERSION
[BASENAME]
·¢²¼Ò»¸öHotfix: git flow hotfix finish
VERSION

Git Flow GUI
ÉÏÃæ½²ÁËÕâô¶à£¬ÎÒÖªµÀ»¹ÓÐÈ˼Dz»×¡£¬ÄÇôÓÖÓÐÈË×ö³öÁËGUI ¹¤¾ß£¬ÄãÖ»ÐèÒªµã»÷ÏÂÒ»²½¾ÍÐУ¬¹¤¾ß°ïÄã¸ÉÕâЩÊ£¡£¡£¡
SourceTree
µ±ÄãÓÃGit-flow³õʼ»¯ºó£¬»ù±¾ÉÏÄãÖ»ÐèÒªµã»÷git flow²Ëµ¥Ñ¡Ôñstart
feature, release»òÕßhotfix, ×öÍêºóÔÙ´ÎÑ¡Ôñgit flow²Ëµ¥£¬µã»÷Done Action.
ÎÒÀÕ¸öÈ¥£¬ÎÒʵÔÚÏë²»µ½»¹ÓбÈÕâ¸ü¼òµ¥µÄÁË¡£
ĿǰSourceTreeÖ§³ÖMac, Windows, Linux.
ÕâôºÃµÄ¹¤¾ßÇëÎʶàÉÙÇ®ÄØ£¿ Ãâ·Ñ!!!!


Git flow for visual studio
¹ã´óVSµÄ¸£Òô
GitFlow for Visual Studio
|