ã¯ããã«
ããã«ã¡ã¯ïŒITã¹ã¯ãŒã«RareTECHã«ãŠCSïŒCustomer SupportïŒãæ åœããŠããæ± æã§ããä»åã®èšäºã¯Gitã®ãã©ã³ãæŠç¥ã«ã€ããŠã§ããããã«é¢ããŠã¯äŒç€Ÿã«ãã£ãŠæ£è§£ãç°ãªããŸãããšãããããæ確ãªæ£è§£ã¯ãªãã®ãããããŸãããä»åã¯ãæåãªäºã€ã®ãã©ã³ãæŠç¥ã«ã€ããŠè§£èª¬ããŸãã
ååã®èšäºã¯ð
ãããŸã§ã®èšäºã§ãŸã åºãŠããŠããªãã³ãã³ãã玹ä»ããŸãã
ãã©ã³ãæŠç¥ã£ãŠïŒ
ãŸãããã©ã³ãæŠç¥ãšã¯ããã©ã³ãã®åãæ¹ãçµ±åã®ä»æ¹ãéçºã®ãããžã§ã¯ãã«ãããŠã©ãéçšããŠããã®ãã«ã€ããŠã®æŠç¥ã§ãã
ãã©ã³ãèªäœããéçºè ã«ãã£ãŠç°¡åã«äœããŠããŸããåã£ããã©ã³ãããããã«åãããšãã§ãããšèšã£ãèªç±åºŠã®é«ãæ©èœã§ããããŒã éçºã«ãããŠãé©åœã«ãã©ã³ããåã£ããããŠãããšãã³ã³ããªã¯ãã®æž©åºã«ãªããŸããéçºã«ãããŠã¯ã«ãŒã«åããæ¹ãã¹ã ãŒãºãªéçºãè¡ãããšãã§ããŸãã
ç¹ã«æšä»ã®CI/CDåšããšçµã¿åãããã«ã¯ãGitã®äžæãªéçšãå¿ é ãªã®ã§æŒãããŠãããããšããã§ãã
ããã€ãçéãªãã©ã³ãæŠç¥ããããŸãã®ã§ããã¡ããèŠãŠãããŸãããã
GitHub Flow
ãŸãGitHub Flowã§ããããã¯å°èŠæš¡éçºã«æå¹ã§ãæ°äººã§ããŒã éçºãè¡ãå°ããªã¢ããªäœææãªã©ã«äœ¿ããã©ã³ãæŠç¥ã§ãããã ãäžã倧èŠæš¡éçºç³»ã§ã¯ã¡ãã£ãšå€§éæãããã®ã§æšå¥šã§ããŸããã
ãŸãåæãšããŠãGitHubã§ãªããžããªãäœæãããšãmain
ãã©ã³ããäœæãããŸãã
å€ãèšäºãªã©ã§ã¯master
ãã©ã³ããšæžãããŠãããã®ããããŸãããçŸåšã¯main
ã§çµ±äžãããŠããŸããmaster
ãšæžãããŠããèšäºã¯ãã®ãŸãŸmain
ãšçœ®ãæããŠãè¯ãã§ãã
ããŠããã®GitHub Flowã¯ããã®main
ãã©ã³ãããªãªãŒã¹çšã®ãã©ã³ããšããŠå©çšããã以å€ã®ãã©ã³ãã¯éçºçšã®ãã©ã³ããšããŠå©çšãšã極ã
ã·ã³ãã«ãªéçšæ¹æ³ã§ãã
åºæ¬çãªæµãã¯ä»¥äžã«ãªããŸãã
â main
ãã©ã³ãïŒææ°çïŒããéçºçšã®ãã©ã³ããåã
# äŸãã°ãã°ã€ã³æ©èœãäœæãããã©ã³ãã®å Žå
git checkout -b feature/login
# çŸåšã¯switchã³ãã³ããæšå¥šãããŠãã
git switch -c feature/login
ããããã°ããããŸã§ã®èšäºã§ãã©ã³ããåãéã«branch
ã³ãã³ããã䜿ã£ãŠããªãã£ãã®ã§ãã€ãã§ã«ãã©ã³ããäœãã€ã€ç§»åããæ¹æ³ã玹ä»ããŸãã
-
git checkout -b ãã©ã³ãå
ïŒ-b
ãã€ãããã©ã³ããäœãã€ã€ãã®ãã©ã³ããžç§»å -
git switch -c ãã©ã³ãå
ïŒ-c
ãã€ãããã©ã³ããäœãã€ã€ãã®ãã©ã³ããžç§»å
â¡ äœæ¥çšãã©ã³ãã§éçºãè¡ã
äœæ¥çšãã©ã³ãã«ç§»åãã§ããããæ©èœãå®æãããŸãã
ã³ããããçµãããããã®ãŸãŸãã©ã³ããpush
ããŸãã
git push origin feature/login
⢠ãã«ãªã¯ãšã¹ããäœæããŠãã¬ãã¥ãŒããŠããã
éçºè
ã¯ãã«ãªã¯ãšã¹ããäœæããŠãã¬ãã¥ã¯ãŒã«ã¬ãã¥ãŒãããŠããããŸãã
ã¬ãã¥ã¯ãŒã¯æ©èœãã³ãŒãã«åé¡ããªããã°ãmain
ãã©ã³ãã«ããŒãžããŸãã
ãã«ãªã¯ã®äŸðïŒçµæ§é©åœã«æžããŠãŸãïŒ
⣠main
ãã©ã³ãã«ããŒãžãããããããŒã«ã«ã®main
ãææ°çã«
main
ãã©ã³ããææ°çã«ãªã£ãã®ã§ãããŒã«ã«ã§ã¯pull
ãè¡ããŸãã
git pull origin main
†æ°ãããã©ã³ããåã£ãŠæ¬¡ã®å®è£ ãž
git checkout -b feature/sign-up
# or
git switch -c feature/sign-up
ããããšã¯ããã ã
ãããŸã§ãGitHub Flowã®æé ã§ãã
ã·ã³ãã«ãæ
ã«ãè¿
éãªéçºãå¯èœã§ããéçšã«è¿·ãããšãããŸããªãã§ãããã
æ¬åœã«å°èŠæš¡ãªã¢ããªå°çšã§ããTODOã¢ããªãã·ã³ãã«ãªãã£ããã¢ããªçšåºŠã®ãã®ãªãããã§è¯ãã§ãã
Git-flow
ããŠãGitHub Flowãããªãã·ã³ãã«ã§éçšãããããããšãããããŸãããã§ãããäžèŠæš¡ãã倧èŠæš¡éçºã«ãããŠã¯ãã®éçšã§ã¯å€§éæãããŸãã
çéãªGit-flowãèŠãŠãããŸããããååã¯äŒŒãŠãŸãããå 容ã¯ããªãéããŸãã
ãã¡ãã®ãã©ã³ãæŠç¥ã§ã¯ãmain
ããªãªãŒã¹çšã§ããããšã¯åãã§ãããææ°çã¯åžžã«develop
ãã©ã³ãã«ãªããŸãã
åºæ¬çã«develop
ãã©ã³ãããéçºçšã®ãã©ã³ããåããŸããããã®åœåã¯GitHub Flowãšã»ãŒäžç·ã§ãã
æ°èŠéçºç³»
éçºçšãã©ã³ããåã
# developãã©ã³ãã«ããåæã§ã
git checkout -b feature/login
# or
git switch -c feature/login
éçºåŸã«push
ãã
push
ãè¡ãããã«ãªã¯ãšã¹ããäœæããã
ããã§æ³šæç¹ãªã®ã¯ãããŒãžå
ãdevelop
ãã©ã³ããšããããšã§ãã
GitHub-Flowãšéãã®ã§æ³šæã§ãïŒmain
ãã©ã³ãã«ééã£ãŠãã«ãªã¯ãšã¹ããéããšæããã¡ãããŸãã
ãªãªãŒã¹æã®æºåãã©ã³ã
æ°æ©èœãå®è£ ããŠããªãªãŒã¹ã®æºåãè¡ãéã«ããªãªãŒã¹çšã®ãã©ã³ããäœæããŸãã
ãã¡ãã¯å®éã«è¡ã£ãŠããäŒç€Ÿãšããã§ãªãäŒç€Ÿã§åãããæ°ãããŠããŸãããã¡ã®èªç€Ÿéçºã®ã¢ããªã§ã¯ãªãªãŒã¹çšã®ãã©ã³ããäœã£ãŠããªãã®ã§ãã§ãå€éšã®éçºæ¡ä»¶çã§ã¯äœã£ãŠãããããŸãã
# developãã©ã³ãã«ãããææ°çã®ç¶æ
ã«ãªã£ãŠããåæã§ã
git checkout -b release/v1.0.0
# or
git switch -c release/v1.0.0
# pushãã
git push origin release/v1.0.0
ãã®åŸããã«ãªã¯ãšã¹ããããŒãžããŠãããŸãã
ã¿ã°ä»ã
ãã¡ããçµæ§éèŠã«ãªã£ãŠããã®ã§ããããã©ã³ãã«ã¿ã°ïŒç®å°ã®ãããªãã®ïŒãã€ããŠãããŸãããªãªãŒã¹ã®ããŒãžã§ã³æ å ±ã®ãããªãã®ã§ãã
# mainãã©ã³ãäžã§è¡ãã
# -aã§æ³šéä»ãã¿ã°ãã€ãããïŒåŸè¿°ããŸãïŒ
git tag -a v1.0.0 -m "Release v1.0.0"
# ã¿ã°ãpushãã
git push origin v1.0.0
ãªãªãŒã¹ã®ããŒãžã§ã³ã«ãã£ãŠãv1.1.0
ãšããv2.0.0
ãªã©ãã€ããŸãããã®èŸºãã¯ã¢ããªãã·ã¹ãã ã®ç¶æ³ãäŒç€Ÿã®æ¹éã«ãã£ãŠããŒãžã§ã³ç®¡çã¯ããŸããŸã§ããv1.0
ãšãv2.0
ãªã©ã倧éæã«ã€ãããšãããããŸãã
ç·æ¥æã®ãã°å¯Ÿå¿
åºæ¬çã«ã¯develop
ãææ°ãªã®ã§ãããæ¬çªç°å¢ã«ãã°ãèŠã€ãããã®å¯Ÿå¿ãç·æ¥ã§è¡ãå Žåã¯ãhotfix
ãšãããã©ã³ããmain
ãã©ã³ãããåãããšã«ãªããŸãã
# mainãã©ã³ãã«ãããmainãã©ã³ããææ°çã§ããåæã§ã
git checkout -b hotfix/login-fix
# or
git switch -c hotfix/login-fix
hotfix
ãã©ã³ãã¯ãä¿®æ£ãå®äºããããmain
ãã©ã³ãã«çŽæ¥ããŒãžãããŸãã
ã§ãã®ã§ããã°è§£æ¶ãå®äºãããããã®å€æŽãdevelop
ãã©ã³ãã«ãåæ ãããããã«ããŠãã ããã
ããå°ã现ãããã©ã³ããåããªã
ç·æ¥æã§ã¯ãªãããŸã éçºæ®µéã§ãã°ãçºçããŠããç®æãçºèŠããå Žåã§ãããbugfix
ãšãããã©ã³ããäœæãããšãããããããªããŸããfeature
ãã©ã³ãåæ§ãããŒãžããã®ã¯develop
ãã©ã³ãã§ãã
# developãã©ã³ãã«ãããdevelopãã©ã³ããææ°çã§ããåæã§ã
git checkout -b bugfix/AdminLoginBug
# or
git switch -c bugfix/AdminLoginBug
ãã©ã³ãã®åœåã«ãŒã«ã¯è²ã ãããŸãã®ã§ãã±ããã±ãŒã¹ãã¹ããŒã¯ã±ãŒã¹ããã£ã¡ã«ã±ãŒã¹ãªã©ã調ã¹ãŠèŠãŠãã ãããäžèšã¯ãã¹ã«ã«ã±ãŒã¹ïŒã¢ãããŒãã£ã¡ã«ã±ãŒã¹ïŒã§æžããŠããŸãã
ãã®bugfixã¯Git-flowã«å«ãŸããŠããæ¹æ³ã§ã¯ãªãã®ã§æ³šæã§ãã
ãã©ã³ãã®éçšäžèŠ§
ãã©ã³ãå | çšéã»åœ¹å² |
---|---|
mainïŒmasterïŒ |
å®å®ãããªãªãŒã¹çã管çãã |
develop |
éçºäžã®æ©èœãéçŽãã |
feature/æ©èœå |
æ©èœåäœã§éçº |
release |
ãªãªãŒã¹æºåããã |
hotfix |
ç·æ¥ãã°ä¿®æ£ |
ãã©ã³ãæŠç¥äžèŠ§
å称ïŒè±èªïŒ | å称ïŒæ¥æ¬èªïŒ | ç¹åŸŽ |
---|---|---|
Git-flow | Gitãã㌠| æ確ãªåœ¹å²ããšã®ãã©ã³ãæ§æ |
GitHub Flow | GitHubãã㌠| ã·ã³ãã«ãªmain ïŒæ©èœãã©ã³ãã®ã¿ |
GitLab Flow | GitLabãã㌠| ç°å¢å¥ïŒæ¬çªã»ã¹ããŒãžã³ã°ïŒã®ç®¡çã«é©ãã |
Trunk-Based Development | ãã©ã³ã¯ããŒã¹éçº | äžæ¬ã®mainãã©ã³ãã§è¿ éã«éçº |
Forking Workflow | ãã©ãŒã¯åã¯ãŒã¯ãã㌠| OSSåããå€éšéçºè ãå€ãå Žåã«æå¹ |
Feature Branch Workflow | ãã£ãŒãã£ãŒãã©ã³ãã¯ãŒã¯ãã㌠| æ©èœåäœã§ã®ãã©ã³ã管ç |
åºæ¬ã¯Git-flowãå ã«ãããã©ã³ãæŠç¥ãäž»ã«ãªã£ãŠããäŒç€Ÿãå€ãã®ããªïŒãšæã£ãŠããŸãã
git tag
ã«ã€ããŠ
git tag
ã¯ã³ãããã«ã¿ã°ãã€ããããšãã§ããã³ãã³ãã§ãã
ã¿ã°ã«ã¯äºçš®é¡ãã£ãŠã以äžã«ãªããŸãã
- 軜éã¿ã°
- 泚éä»ãã¿ã°
åºæ¬çã«ã¯æ³šéä»ãã¿ã°ãå©çšããæ¹ãè¯ãã§ãã詳现ãæžãããªãããã
# 泚éä»ãã¿ã°
git tag -a v1.0.0 -m "Release v1.0.0"
# 軜éã¿ã°ïŒã¡ãã»ãŒãžãã€ããªãïŒ
git tag v1.0.0
# ã¿ã°ã®äžèŠ§ãèŠã
git tag
# ã¿ã°ã®è©³çŽ°ãèŠã
git show v1.0.0
ã¿ã°ãå©çšããŠãreset
ã³ãã³ãã§æ»ã£ãããã§ããŸãã
git tag -d v1.0.0
ãããã«
ä»åã¯ãã©ã³ãã®åãæ¹ãéçºã«ãããæŠç¥ã«ã€ããŠãŸãšããŸããã
éçºãè¡ãäžã§ã¯å¿
é ãªç¥èã§ãã®ã§ãåå¿è
ã®æ¹ã¯ãã£ããèŠããŠãããŸãããã
ãããã®æè¡ãæŒãããæã£åãæ©ãæ¹æ³ã¯ããŒã éçºãè¡ãããšã§ããã¹ã¯ãŒã«ãªã©ã«åšç±ããŠããæ¹ã¯ç©æ¥µçã«ããŒã éçºãããŠã¿ãŠãã ããïŒ