Vincent DriessenïŒ æåããGitåå²ã¢ãã«å€æ
ãã®èšäºã§ã¯ãéå»1幎éããã¹ãŠã®ãããžã§ã¯ãïŒäœæ¥ããã³ãã©ã€ããŒãã®äž¡æ¹ïŒã§äœ¿çšããŠããéçºã¢ãã«ã玹ä»ããŸãã é·ãéãç§ã¯åœŒå¥³ã«ã€ããŠæžãã€ããã§ãããããŸã èªç±ãªæéãèŠã€ããŠããŸããã ãããžã§ã¯ãã®ãã¹ãŠã®è©³çŽ°ã«ã€ããŠã¯èª¬æããŸãããåå²ããã³ãªãªãŒã¹ç®¡çæŠç¥ã«ã€ããŠã®ã¿è§ŠããŸãã
ãã¹ãŠã®ãœãŒã¹ã³ãŒãã®ããŒãžã§ã³ç®¡çããŒã«ãšããŠ
Gitã䜿çšããŸãã
ãªãgitãªã®ãïŒ
éäžåããŒãžã§ã³ç®¡çã·ã¹ãã ãšæ¯èŒããGitã®ãã¹ãŠã®é·æãšçæã®è©³çŽ°ã«ã€ããŠã¯
ãäžçèŠæš¡ã® ãããã¯ãŒã¯ã åç
§ ã㊠ãã ãã ã ããã«ã¯ããã®ãããã¯ã«é¢ããååãªæ°ã®è«äºããããŸãã å人çã«ãéçºè
ãšããŠãç§ã¯çŸåšãä»ã®ãã¹ãŠã®ããŒã«ãããGitã奜ã¿ãŸãã Gitã¯ãéçºè
ã®æ
床ãããŒãžãšåå²ã®ããã»ã¹ã«å€ããããšãã§ããŸããã ç§ãæ¥ãå€å
žçãªCVS / Subversionã®äžçã§ã¯ãåå²ãšããŒãžã¯éåžžå±éºãšèŠãªããïŒãããŒãžã®ç«¶åã«æ³šæããŠãã ãããçãã»ã©åã¿ä»ããŸãïŒãïŒããããã£ãŠãå¯èœãªéãå®è¡ãããŸããã
ããããGitã䜿çšãããšããããã®ã¢ã¯ãã£ããã£ã¯éåžžã«ã·ã³ãã«ãã€å®äŸ¡ã«ãªããå®éãéåžžã®
æ¥åžžã®ã¯ãŒã¯ãããŒã®äžå¿ã«ãªããŸãã æ¯èŒããŠãã ããïŒCVS / Subversionã®
æ¬ã§ã¯ãåå²ãšããŒãžã¯éåžžãæåŸã®ç« ïŒäžçŽãŠãŒã¶ãŒåãïŒã§èª¬æãããŠããŸããã
Gitã«é¢ãã æ¬ã§ã¯ããã§ã«3çªç®ã®ç« ïŒåºæ¬ïŒã§èª¬æãããŠããŸãã
åçŽããšäºæž¬å¯èœæ§ã«ãããåå²ãšããŒãžã¯æ³šæãã¹ãã¢ã¯ã·ã§ã³ã§ã¯ãªããªããŸããã ããŒãžã§ã³ç®¡çããŒã«ã¯ãä»ã®ã©ã®è£œåãããåå²ããã³ããŒãžãæ¯æŽã§ããããã«ãªããŸããã
ããããããŒã«ã«ã€ããŠè©±ãã®ã¯ãããŠãéçºã¢ãã«ã«ç§»ããŸãããã ç§ã玹ä»ãããã¢ãã«ã¯ãå®éã«ã¯ãåããŒã ã¡ã³ããŒãäžç·ã«éçºããã»ã¹ã®é«ã管çæ§ãå®çŸã§ããããã«å®è¡ããäžé£ã®æé ã§ãã
åæ£åãããŠãããéäžåãããŠãã
ææ¡ãããŠããåå²ã¢ãã«ã¯ã1ã€ã®äžå€®ã®ãçã®ããªããžããªãå«ããããžã§ã¯ãæ§æã«äŸåããŠããŸãã ãã®ãªããžããªã¯äžå¿
ãšèŠãªãããã ãã§ããããšã«æ³šæããŠãã ããïŒGitã¯DVCSã§ãããããæè¡ã¬ãã«ã§ã¯ã¡ã€ã³ãªããžããªã®ãããªãã®ã¯ãããŸããïŒã ãã®ãªããžããªãçšèªãªãªãžã³ãšåŒã³ãŸãã ãã®ååã¯ããã¹ãŠã®GitãŠãŒã¶ãŒã«ãã§ã«ããç¥ãããŠããŸãã
åéçºè
ã¯ãå€æŽãååŸãããªãªãžã³ã«å
¬éããŸãïŒãã«ïŒããã·ã¥ïŒã ããããäžå
åãããããã·ã¥ãã«é¢ä¿ã«å ããŠãåéçºè
ã¯èªåã®ãã€ã¯ãããŒã å
ã®ä»ã®ååããã®å€æŽãããã¯ã¢ããããããšãã§ããŸãã ããšãã°ããã®æ¹æ³ã¯ã2人以äžã®éçºè
ã倧ããªæ°æ©èœã§å
±åäœæ¥ããŠããå Žåã«äŸ¿å©ã§ãããäºåã«äžå®å
šãªäœåãå
ã«å
¬éããããšã¯ã§ããŸããã äžã®åçã¯ãã¢ãªã¹ãšãããã¢ãªã¹ãšãããããã¯ã¬ã¢ãšããããã®ãµãã°ã«ãŒãã瀺ããŠããŸãã
æè¡çã«ã¯ãããã¯ç°¡åã§ããã¢ãªã¹ã¯ããã®ãªããžããªãæããããšåŒã°ãããªã¢ãŒãGitãã©ã³ããäœæããããã¯åœŒå¥³ã®ãªããžããªã§åãããšãè¡ããŸãã
äž»ãªæ¯åº
éçºã¢ãã«ã®äžæ žã¯ãæ¢åã®ã»ãšãã©ã®ã¢ãã«ãšå€ãããŸããã äžå€®ãªããžããªã«ã¯ãåžžã«ååšãã2ã€ã®ã¡ã€ã³ãã©ã³ããå«ãŸããŠããŸãã
- ãã¹ã¿ãŒ
- éçºãã
ãã¹ã¿ãŒãã©ã³ãã¯ããªããžããªãåæåããããšãã«äœæãããŸããããã¯ããã¹ãŠã®GitãŠãŒã¶ãŒã«éŠŽæã¿ãããã¯ãã§ãã 圌女ãšäžŠè¡ããŠãdevelopãšããéçºãã©ã³ããäœæããŸãã
ãªãªãžã³/ãã¹ã¿ãŒãã©ã³ããã¡ã€ã³ãšèŠãªããŸãã ã€ãŸãããã®äžã®ãœãŒã¹ã³ãŒãã¯ããã€ã§ãä»»æã®æç¹ã§
æ¬çªç°å¢ã«å¯Ÿå¿ããŠããå¿
èŠããããŸãã
ãªãªãžã³/éçºãã©ã³ãã¯ãéçºã®ã¡ã€ã³ãã©ã³ããšèŠãªãããŸãã ãã€ã§ãããã«ä¿åãããã³ãŒãã«ã¯ã次ã®ãªãªãŒã¹ã«å¿
èŠãªå
¬éãããææ°ã®å€æŽãå«ãŸããŠããå¿
èŠããããŸãã ãã®ãã©ã³ãã¯ãçµ±åããšãåŒã°ããŸãã èªåãã€ããã«ãã®ã¢ã»ã³ããªã®ãœãŒã¹ãšããŠæ©èœããŸãã
éçºãã©ã³ãïŒéçºïŒã®ãœãŒã¹ã³ãŒããå®å®ç¶æ
ã«ãªãããªãªãŒã¹ã®æºåãã§ãããããã¹ãŠã®å€æŽãç¹å®ã®æ¹æ³ã§ã¡ã€ã³ãã©ã³ãïŒãã¹ã¿ãŒïŒã«æ³šãããªãªãŒã¹çªå·ã§ã¿ã°ä»ãããå¿
èŠããããŸãã 以äžã§ã¯ããã®ããã»ã¹ã詳现ã«æ€èšããŸãã
ãããã£ãŠãå€æŽãã¡ã€ã³ãã©ã³ãïŒãã¹ã¿ãŒïŒã«ããŒãžããããã³ã«
ãå®çŸ©ã«ãã ãæ°ãããªãªãŒã¹ãååŸ
ãããŸã ã ç§ãã¡ã¯ãã®ã«ãŒã«ãéåžžã«å³ããããããšããŠããã®ã§ãååãšããŠãGitããã¯ã䜿çšããŠè£œåãèªåçã«åéããã¡ã€ã³ãã©ã³ãïŒãã¹ã¿ãŒïŒã«ã³ããããããã³ã«è£œåãµãŒããŒã«é
眮ã§ããŸãã
è£å©æ
masterããã³developmentã®ã¡ã€ã³ãã©ã³ãã«å ããŠãéçºã¢ãã«ã«ã¯ãããŒã ã¡ã³ããŒéã®éçºã®äžŠååãæ°æ©èœã®å®è£
ã®ç°¡çŽ åããªãªãŒã¹ã®æºåãããã³ã¢ããªã±ãŒã·ã§ã³ã®è£œåããŒãžã§ã³ã®åé¡ã®è¿
éãªä¿®æ£ã«äœ¿çšãããããã€ãã®ã¿ã€ãã®è£å©ãã©ã³ããå«ãŸããŠããŸãã ã¡ã€ã³ãã©ã³ããšã¯ç°ãªãããããã®ãã©ã³ãã®å¯¿åœã¯åžžã«å¶éãããŠããŸãã ãããã®ããããã¯æçµçã«é
ããæ©ããå»ããŸãã
次ã®çš®é¡ã®ãã©ã³ãã䜿çšããŸãã
- æ©èœãã©ã³ã
- ãªãªãŒã¹ãã©ã³ã
- ä¿®æ£ããã°ã©ã ã®æ
åã¿ã€ãã®ãã©ã³ãã«ã¯ãåºæã®ç®çãšå³æ Œãªã«ãŒã«ã»ãããããããããããã©ã³ããçæã§ããããã«ããŒãžããå¿
èŠããããŸãã 次ã«ãããããé çªã«æ€èšããŸãã
ãã¡ãããæè¡çãªèŠ³ç¹ããã¯ããããã®ãã©ã³ãã«ã¯ãç¹å®ã®ããã®ã¯ãããŸããã ã«ããŽãªãžã®ãã©ã³ãã®åå²ã¯ããããã®äœ¿çšæ¹æ³ã®èŠ³ç¹ããã®ã¿ååšããŸãã ãããŠãä»ã®ãã¹ãŠã¯Gitã®å€ãè¯ããã©ã³ãã§ãã
æ©èœãã©ã³ã
çæå
ïŒéçº
æµã蟌ãå¿
èŠãããïŒéçº
åœåèŠåïŒmasterãdevelopãrelease- *ãŸãã¯Hotfix- *ãé€ããã¹ãŠ
æ©èœãã©ã³ãã¯ããããã¯ãã©ã³ããšãåŒã°ããçŸåšãŸãã¯å°æ¥ã®ãªãªãŒã¹ã§è¡šç€ºãããæ°ããæ©èœãéçºããããã«äœ¿çšãããŸãã æ©èœïŒæ©èœïŒã®äœæ¥ã®éå§æç¹ã§ã¯ãã©ã®ç¹å®ã®ãªãªãŒã¹ã«è¿œå ãããã®ããŸã äžæãªå ŽåããããŸãã æ©èœãã©ã³ãã®ååšã®æå³ã¯ããã®æ©èœïŒæ©èœïŒã®éçºãç¶ç¶ããŠããéãåç¶ãããšããããšã§ãã ãã©ã³ãã§ã®äœæ¥ãå®äºãããšãåŸè
ã¯ã¡ã€ã³ã®éçºãã©ã³ãã«ããŒãžããïŒæ©èœãä»åŸã®ãªãªãŒã¹ã«è¿œå ãããããšãæå³ããŸãïŒãåé€ãããŸãïŒå®éšã倱æããå ŽåïŒã
æ©èœãã©ã³ãã¯éåžžãéçºè
ãªããžããªã«ååšããŸãããã¡ã€ã³ãªããžããªïŒãªãªãžã³ïŒã«ã¯ååšããŸããã
æ©èœãã©ã³ãã®äœæ
æ°ããæ©èœã®äœæ¥ãéå§ãããšãéçºãã©ã³ããããã©ã³ããäœæãããŸãã
$ git checkout -b myfeature develop
Switched to a new branch "myfeature"
éçºããå®å
šãªæ©èœãè¿œå ãã
å®æããæ©èœïŒæ©èœïŒã¯ãdevelopãã©ã³ãã«ããŒãžããã次ã®ãªãªãŒã¹ã«å
¥ããŸãã
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff myfeature
Updating ea1b82a..05e9557
( )
$ git branch -d myfeature
Deleted branch myfeature (was 05e9557).
$ git push origin develop
--no-ffãã©ã°ãæå®ãããšãGitã¯ãããŒãžãé«é転éã¢ã«ãŽãªãºã ã䜿çšããŠå®è¡ã§ããå Žåã§ããããŒãžäžã«åžžã«æ°ããã³ããããªããžã§ã¯ããäœæããŸãã ããã«ããããã©ã³ããååšãããšããæ
å ±ã倱ããã«ãè¡ããããã¹ãŠã®å€æŽãã°ã«ãŒãåã§ããŸãã æ¯èŒããïŒ
2çªç®ã®ã±ãŒã¹ã§ã¯ãå€æŽå±¥æŽã§ç¹å®ã®ã³ããããªããžã§ã¯ããäžç·ã«æ©èœã圢æããããšã確èªããããšã¯ã§ããŸããããã®ãããã³ãããå
ã®ãã¹ãŠã®ã¡ãã»ãŒãžãæåã§èªã¿åãå¿
èŠããããŸãã ãã®å Žåãé çãªãã«æ©èœå
šäœïŒã€ãŸããã³ãããã®ã°ã«ãŒãïŒããã£ã³ã»ã«ããããšã¯äžå¯èœã§ããã-no-ffãã©ã°ã䜿çšãããšããã¯åºæ¬çã«è¡ãããŸãã
ãã¡ããããã®ã¢ãããŒãã¯è¿œå ã®ïŒç©ºã®ïŒã³ããããªããžã§ã¯ããäœæããŸãããçµæãšããŠåŸãããå©ç¹ã¯ããã®ãããªäŸ¡æ Œãæ£åœåãã以äžã®ãã®ã§ãã
æ®å¿µãªãããGitãèšå®ããŠã-no-ffãããã©ã«ãã®ããŒãžåäœã«ãªãããã«ããæ¹æ³ããŸã èŠã€ããŠããŸããã ãã ãããã®ã¡ãœãããå®è£
ããå¿
èŠããããŸãã
ãªãªãŒã¹ãã©ã³ã
çæå
ïŒéçº
æµã蟌ãå¿
èŠãããïŒéçºãšãã¹ã¿ãŒ
åœåèŠåïŒrelease- *
ãªãªãŒã¹ãã©ã³ãã¯ã補åã®æ°ããããŒãžã§ã³ã®ãªãªãŒã¹ã®æºåã«äœ¿çšãããŸãã æ°ããããŒãžã§ã³ã®ãªãªãŒã¹åã«ãiã«æçµãã€ã³ãã眮ãããšãã§ããŸãã ããã«ã次ã®ãªãªãŒã¹ã®ã¡ã¿ããŒã¿ïŒããŒãžã§ã³çªå·ããã«ãæ¥ä»ãªã©ïŒãšåæ§ã«ããã€ããŒãªä¿®æ£ããããã«è¿œå ã§ããŸãã ãã®ãã¹ãŠã®äœæ¥ããªãªãŒã¹ãã©ã³ãã«éä¿¡ããããšãã¡ã€ã³ã®éçºãã©ã³ããã¯ãªãŒã³ã¢ããããããããªãæ©èœãè¿œå ãããŸãïŒããã¯æ¬¡ã®å€§ããªãªãªãŒã¹ã«å«ãŸããŸãïŒã
éçºãã©ã³ãã®ç¶æ
ãæ°ãããªãªãŒã¹ã«å¯Ÿå¿ããèŠä»¶ãå®å
šãŸãã¯ã»ãŒå®å
šã«æºãããæç¹ã§ãæ°ãããªãªãŒã¹ãã©ã³ããçæããå¿
èŠããããŸãã å°ãªããšãããã®ãªãªãŒã¹ã«å¿
èŠãªãã¹ãŠã®æ©èœã¯ãã§ã«éçºãã©ã³ãã«çµã¿èŸŒãŸããŠããŸãã 次ã®ãªãªãŒã¹åãã®æ©èœã¯æ³šå
¥ãããªãå¯èœæ§ããããŸãã ãããã®æ©èœã®ãã©ã³ãããçŸåšã®ãªãªãŒã¹ãã©ã³ããéçºãã©ã³ãããåãé¢ããããŸã§åŸ
æ©ããå Žåã¯ããã«åªããŠããŸãã
次ã®ãªãªãŒã¹ã§ã¯ãæ°ãããã©ã³ããäœæãããæç¹ã§ã®ã¿ããŒãžã§ã³çªå·ãååŸãããŸããã以åã®ããŒãžã§ã³ã§ã¯ååŸãããŸããã ãã®æç¹ãŸã§ãéçºãã©ã³ãã«ã¯ãæ°ãããªãªãŒã¹ãã®å€æŽãå«ãŸããŠããŸããããªãªãŒã¹ãã©ã³ããåé¢ããããŸã§ããã®ãªãªãŒã¹ã«ããŒãžã§ã³0.3ã1.0ããŸãã¯ä»ã®ããŒãžã§ã³ããããã©ããã¯ããããŸããã ãã®æ±ºå®ã¯ãæ°ãããªãªãŒã¹ãã©ã³ããäœæãããšãã«è¡ããããããžã§ã¯ãã§æ¡çšãããŠãããããžã§ã¯ãããŒãžã§ã³çªå·ä»ãèŠåã«ãã£ãŠæ±ºãŸããŸãã
ãªãªãŒã¹ãã©ã³ããäœæãã
ãªãªãŒã¹ãã©ã³ãã¯ãéçºãã©ã³ãããäœæãããŸãã ããšãã°ãçŸåšãªãªãŒã¹ãããŠãããªãªãŒã¹ã«ããŒãžã§ã³1.1.5ããããéäžã§å€æŽãå ããããæ°ããããã°ãªãªãŒã¹ããããšããŸãã éçºãã©ã³ãã¯ã次ã®ãªãªãŒã¹ãã®æºåãã§ããŠããããã®ãªãªãŒã¹ã«ã¯ããŒãžã§ã³1.1.6ïŒ2.0ã§ã¯ãªãïŒãå«ãŸãããšå€æããŠããŸãã ãã®å Žåãæ°ãããã©ã³ããäœæãããããžã§ã¯ãã®æ°ããããŒãžã§ã³ã«å¯Ÿå¿ããååãä»ããŸãã
$ git checkout -b release-1.2 develop
Switched to a new branch "release-1.2"
$ ./bump-version.sh 1.2
Files modified successfully, version bumped to 1.2.
$ git commit -a -m "Bumped version number to 1.2"
[release-1.2 74d9424] Bumped version number to 1.2
1 files changed, 1 insertions(+), 1 deletions(-)
æ°ãããã©ã³ããäœæããããã«åãæ¿ããŠãããããŒãžã§ã³çªå·ïŒãã³ãããŒãžã§ã³çªå·ïŒãèšå®ããŸããã ãã®äŸã§ã¯ãbump-version.shã¯æ¶ç©ºã®ã¹ã¯ãªããã§ãããäœæ¥ã³ããŒã®äžéšã®ãã¡ã€ã«ã«æ°ããããŒãžã§ã³ãæžã蟌ãããšã§ãã¡ã€ã«ãå€æŽããŸãã ïŒãã¡ããããããã®å€æŽãæåã§è¡ãããšãã§ããŸãã
äžéšã®ãã¡ã€ã«ãå€æŽãããŠããããšã«æ³šæããŠãã ãããïŒãã®åŸããããžã§ã¯ãã®æ°ããããŒãžã§ã³ãã³ãããããŸãã
ãã®æ°ãããã©ã³ãã¯ãæ°ãããªãªãŒã¹ã®ãªãªãŒã¹ã®æºåãæŽããŸã§ãã°ããååšããå¯èœæ§ããããŸãã ãã®éã«ãçºèŠããããã°ã®ä¿®æ£ããã®ãã©ã³ãã«è¿œå ã§ããŸãïŒéçºçšã§ã¯ãããŸããïŒã ãã ãããã®ãã©ã³ãã«å€§ããªæ°ããå€æŽãè¿œå ããããšã¯åºãçŠããããŠããŸãã 圌ãã¯åžžã«éçºãã©ã³ãã«æµã蟌ã¿ã次ã®å€§ããªãªãªãŒã¹ãåŸ
ã€ã¹ãã§ãã
ãªãªãŒã¹ãã©ã³ããéãã
ãªãªãŒã¹ãã©ã³ããæçµçã«ãªãªãŒã¹ã®æºåãã§ãããšå€æããããããã€ãã®ããšãããå¿
èŠããããŸãã ãŸãããªãªãŒã¹ãã©ã³ããã¡ã€ã³ãã©ã³ãã«ããŒãžãããŸãïŒãã¹ã¿ãŒã®åã³ãããã¯ãåœç¶ã®ããš
ãªãããæ°ãããªãªãŒã¹ã§ãïŒã 次ã«ããã¹ã¿ãŒã®ãã®ã³ãããã«ã¿ã°ãä»ããŠãåŸã§è£œåã®æ¢åã®ããŒãžã§ã³ã«ç°¡åã«ã¢ã¯ã»ã¹ã§ããããã«ããå¿
èŠããããŸãã æåŸã«ãå°æ¥ã®ãªãªãŒã¹ã«ããã°ä¿®æ£ãå«ãŸããããã«ããªãªãŒã¹ãã©ã³ãã«å ããããå€æŽãéçºãã©ã³ãïŒéçºãã©ã³ãïŒã«è¿œå ãçŽãå¿
èŠããããŸãã
Gitã®æåã®2ã€ã®ã¹ãããïŒ
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff release-1.2
Merge made by recursive.
( )
$ git tag -a 1.2
ããã§ãªãªãŒã¹ãå
¬éãããã¿ã°ä»ããããŸããã
泚 ïŒå¿
èŠã«å¿ããŠã-sãŸãã¯-u <key>ãã©ã°ã䜿çšããŠãã¿ã°ã«æå·çã«çœ²åããããšãã§ããŸãã
å°æ¥ã®ãªãªãŒã¹ã§å€æŽãä¿åããã«ã¯ããããã®å€æŽãéçºã«çµã¿èŸŒãå¿
èŠããããŸãã ãã®ããã«ããŸãïŒ
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff release-1.2
Merge made by recursive.
( )
ãã®ã¹ãããã¯ãååãšããŠãå䜵ã®ç«¶åã«ã€ãªããå¯èœæ§ããããŸãïŒç«¶åã®åå ããããžã§ã¯ãã®ããŒãžã§ã³çªå·ã®å€æŽã§ããããšããããããŸãïŒã ãããçºçããå Žåã¯ãä¿®æ£ããŠã³ããããçºè¡ããŠãã ããã
ããã§ã€ãã«ãªãªãŒã¹ãã©ã³ããå®æããŸããã äžèŠã«ãªã£ããããåé€ã§ããŸãã
$ git branch -d release-1.2
Deleted branch release-1.2 (was ff452fe).
ä¿®æ£ããã°ã©ã ã®æ
çæå
ïŒãã¹ã¿ãŒ
æµã蟌ãå¿
èŠãããïŒéçºãšãã¹ã¿ãŒ
åœåèŠåïŒããããã£ãã¯ã¹-*
ä¿®æ£ããã°ã©ã ã®ãã©ã³ãã¯ãèšç»å€ã§ãªãéããæ°ãã補åãªãªãŒã¹ã®æºåã«ã䜿çšãããããããªãªãŒã¹ãã©ã³ããšéåžžã«ãã䌌ãŠããŸãã ãããã¯ã補åã®è£œåããŒãžã§ã³ã®æãŸãããªãåäœãããã«ä¿®æ£ããå¿
èŠãããããã«çºçããŸãã ããã«ä¿®æ£ããå¿
èŠããããããã¯ã·ã§ã³ããŒãžã§ã³ã§ãã°ãèŠã€ãã£ãå Žåããã¹ã¿ãŒãã©ã³ããä¿®æ£ã«åãçµãããã«ã察å¿ãããã¹ã¿ãŒããŒãžã§ã³ã¿ã°ããæ°ãããã©ã³ããçæãããŸãã
ãã®ååšã®æå³ã¯ãéçºçãã©ã³ãã§ã®ããŒã ã®äœæ¥ã¯éãã«ç¶ããããäžæ¹ãå®çšŒåçã®ã¯ã€ãã¯ãã£ãã¯ã¹ãæºåããŠãããšããããšã§ãã
ããããã£ãã¯ã¹ãã©ã³ãã®äœæ
ä¿®æ£ããã°ã©ã ã®ãã©ã³ãã¯ããã¹ã¿ãŒãã©ã³ãããäœæãããŸãã ããšãã°ãçŸåšã®è£œåãªãªãŒã¹ã«ããŒãžã§ã³1.2ãããããã®äžã«ïŒçªç¶ïŒïŒé倧ãªãã°ãæ€åºããããšããŸãã ãŸããéçºãã©ã³ãïŒéçºïŒã®å€æŽã¯ãæ°ãããªãªãŒã¹ã§å
¬éããã»ã©å®å®ããŠããŸããã ãã ããæ°ããããããã©ã³ããäœæããŠãåé¡ã®è§£æ±ºã«åãçµã¿å§ããããšãã§ããŸãã
$ git checkout -b hotfix-1.2.1 master
Switched to a new branch "hotfix-1.2.1"
$ ./bump-version.sh 1.2.1
Files modified successfully, version bumped to 1.2.1.
$ git commit -a -m "Bumped version number to 1.2.1"
[hotfix-1.2.1 41e61bb] Bumped version number to 1.2.1
1 files changed, 1 insertions(+), 1 deletions(-)
ãã©ã³ããäœæããåŸãå¿
ãããŒãžã§ã³çªå·ãæŽæ°ããŠãã ããïŒ
ããã§ããã°ãä¿®æ£ããå°ãªããšã1åãå°ãªããšãæ°åã®ã³ãããã§å€æŽãå
¬éã§ããŸãã
$ git commit -m "Fixed severe production problem"
[hotfix-1.2.1 abbe5d6] Fixed severe production problem
5 files changed, 32 insertions(+), 17 deletions(-)
ããããã©ã³ããéãã
ãã°ãä¿®æ£ãããããå€æŽãã¡ã€ã³ãã©ã³ãïŒãã¹ã¿ãŒïŒãšéçºãã©ã³ãïŒéçºïŒã«æ»ããŠããã®ä¿®æ£ã次ã®ãªãªãŒã¹ã§ç¢ºå®ã«åæ ãããããã«ããå¿
èŠããããŸãã ããã¯ããªãªãŒã¹ãã©ã³ããéããããæ¹æ³ã«éåžžã«äŒŒãŠããŸãã
ãŸããã¡ã€ã³ãã©ã³ãïŒãã¹ã¿ãŒïŒãæŽæ°ããæ°ããããŒãžã§ã³ã«ã¿ã°ãã¿ã°ä»ãããå¿
èŠããããŸãã
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff hotfix-1.2.1
Merge made by recursive.
( )
$ git tag -a 1.2.1
泚 ïŒå¿
èŠã«å¿ããŠã-sãŸãã¯-u <key>ãã©ã°ã䜿çšããŠãã¿ã°ã«æå·çã«çœ²åããããšãã§ããŸãã
次ã®ã¹ãããã¯ãä¿®æ£ãéçºãã©ã³ãã«è»¢éããããšã§ãã
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff hotfix-1.2.1
Merge made by recursive.
( )
ãã®ã«ãŒã«ã«ã¯1ã€ã®äŸå€ããããŸãã
çŸæç¹ã§ãªãªãŒã¹ãã©ã³ããããå Žåãããããã£ãã¯ã¹ãã©ã³ãã¯ãéçºãã©ã³ãã§ã¯ãªããããã«ããŒãžããå¿
èŠããããŸã ã ãã®å Žåãä¿®æ£ã¯ãªãªãŒã¹ãã©ã³ããéãããããšããªãªãŒã¹ãã©ã³ãå
šäœãšãšãã«éçºãã©ã³ãã«éãããŸãã ïŒéçºã§ã®äœæ¥ã«å³æã®ãã°ä¿®æ£ãå¿
èŠã§ãçŸåšã®ãªãªãŒã¹ãå®äºããã®ãåŸ
ã€ããšãã§ããªãå Žåã§ãããã°ä¿®æ£ãéçºãã©ã³ãã«ãããããããšãã§ããå®å
šã«å®å
šã§ãïŒã
æåŸã«ãäžæãã©ã³ããåé€ããŸãã
$ git branch -d hotfix-1.2.1
Deleted branch hotfix-1.2.1 (was abbe5d6).
ãããã«
ãã®åå²ã¢ãã«ã«ã¯æ ¹æ¬çã«æ°ãããã®ã¯ãŸã£ãããããŸãããããã®èšäºãå§ãŸããå
šäœåãã¯ãæè¯ã®åŽé¢ããã®ãããžã§ã¯ãã§èšŒæãããŠããŸãã ãšã¬ã¬ã³ããªã¡ã³ã¿ã«ã¢ãã«ã圢æããŸããäžç®ã§ç°¡åã«å®å
šã«ææ¡ã§ãããããžã§ã¯ãã«äœçšããåå²ããã³ããŒãžããã»ã¹ã«ã€ããŠããŒã ãå
±åã§ç解ããããšãã§ããŸãã
ãã®ç»åã®é«å質PDFããŒãžã§ã³ã¯ã
ããããç¡æã§ããŠã³ããŒãã§ã
ãŸã ã ãã€ã§ãã¢ã¯ã»ã¹ã§ããããã«ãå°å·ããŠå£ã«æããŠãã ããã
ã泚æ 翻蚳è
ïŒèšäºã¯æ°ãããã®ã§ã¯ãªãããªãªãžãã«ãžã®ãªã³ã¯ããã§ã«ããã«è¡šç€ºãããŠããŸã ãã®ç¿»èš³ã¯ããŸã è±èªãããã»ã©ç°¡åã§ã¯ãªã人ã®ããã®ãã®ã§ãïŒç§ããããã¬ã³ãã«æºãã£ãŠããç§ã®ååã®ããã ãã§ãªãããžãžïŒã ãã®èšäºã§èª¬æãããŠããæé ãèªååããããã«ãèè
ã¯githubã«ããgitflowãããžã§ã¯ããäœæããŸãã ã