対象èªè
- ããããGitãGitHubã使ãå§ãããã¨æã£ã¦ããæ¹
- Gitã®ä½¿ãæ¹ã¯ç¥ã£ã¦ãããããã¼ã éçºã®çµé¨ããªãæ¹
Gitã«ãããã¼ã éçºã®ããã¯
ã第1åã§ã¯Gitã®åºæ¬çãªä½¿ãæ¹ã解説ãã¾ããã第2åã§ã¯ãå®åã»ãã¼ã éçºã®ç¾å ´ã§Gitãããã³GitHubãæ´»ç¨ããããã®ãã¦ãã¦ãç´¹ä»ãã¾ããã¨ã¯ããããã¾ã§ä¸ä¾ãªã®ã§ãèªåãã¡ã®éçºãã¼ã ã«åãããããæ¹ã«é©å®ã«ã¹ã¿ãã¤ãºãã¦ã¿ã¦ãã ããã
ãGitHubã¯ãGitãªãã¸ããªã®ãªã¢ã¼ããã¹ãã£ã³ã°ãµã¼ãã¹ã®1ã¤ã§ãããGitã§ãã¼ã éçºãè¡ãä¸ã§æ¬ ãããªããã®ã§ããGitHubã«ã¤ãã¦ãå¾åã®ç¯ã§è§£èª¬ãã¾ãã
Gitã®èªçç§è©±
ãã¾ãä½è«ã§ãããGitã®èªçç§è©±ã«ã¤ãã¦å°ã触ãã¦ããã¾ããããããGitã¯Linuxãéçºããããã«çã¾ãã¾ãããã¤ã¾ããLinuxã»ã©å¤§è¦æ¨¡ãªããã¸ã§ã¯ããã大人æ°ã§é²ãããããã¨ãè¦ä»¶ã¨ãã¦ããã¾ããã
ããããã£ãè¦ä»¶ãæºãããç¡æã§ä½¿ããVCSãå½æåå¨ããªãã£ãããããªã¼ãã¹ã»ãã¼ãã«ãºæ°ãèªä½ã«è¸ã¿åãããã®å¾ãããã2é±éç¨åº¦ã§ä½ããããããã¨ããé¸è©±ãããã¾ãã
ãçµç·¯ã«ã¤ãã¦ã®è©³ç´°ã¯ãGitç¥å²ã«è¨è¼ããã¦ããã®ã§ãèå³ãããæ¹ã¯ãã¡ããèªãã§ã¿ã¦ãã ããã
Gitã®ç¹å¾´
ãGitã¯ãããã£ãèæ¯ããèªçãããããGit以åã®VCSã«æ¯ã¹ã¦æ¬¡ã®ç¹å¾´ãããã¾ãã
- é«é㪠merge 㨠checkout
- åæ£å
- branch
é«é㪠merge 㨠checkout
ãGitã§merge
ãcheckout
ã³ãã³ããå®è¡ãããã¨ãããæ¹ã¯ããã®éãã«é©ãããã¨ã¯ãªãã§ããããï¼
ãã©ããªã«é ãéå»ã®ãã¼ã¸ã§ã³ã«checkout
ãã¦ããã³ãããã大éã«ç©ã¾ãã¦ãããã©ã³ããmerge
ããã¨ãã¦ãããã®å¦çæéã§å¾
ãããããã¨ã¯ã»ã¨ãã©ããã¾ããã
ãä¸è¦ãå±¥æ´ãé ããã°é ãã»ã©ãå·®åã®merge
ã«æéãããããcheckout
ã«ããéå»ãã¼ã¸ã§ã³ã®å¾©å
ã«æéããããã¨æãããããããã¾ããã
ããã ããå®éã«ã¯ãå±¥æ´ã®é ããã¯ãããã®ãµãã³ãã³ãã®å®è¡æéã«å½±é¿ãä¸ãã¾ããï¼ãã®ä»£ãããå¤æ´ããã¦ãããã¡ã¤ã«æ°ã«ä¾åãã¾ãï¼ããã®çç±ã«ã¤ãã¦ã¯ç¬¬3åã®Gitã®å é¨æ§é ã«é¢ããè¨äºã§ç´¹ä»ãã¾ãã
åæ£å
ãVCSã«ã¯å¤§ããåãã¦ãéä¸åã¨åæ£åã®2ã¤ãããã¾ããGitã¯åæ£åãæ¡ç¨ãã¦ãããããã大人æ°ã§éçºãé²ãããã¨ãã§ãã大ããªè¦å ã®ä¸ã¤ã§ãã
ãããããã®ç¹å¾´ã¯ä»¥ä¸ã®éãã§ãã
-
éä¸åVCS
-
ãªãã¸ããªã¯ãµã¼ãã¼ã管çãã
- ãªãã¸ããªã®ããã¾ã§ã®å ¨å±¥æ´ããã¡ã¤ã«ã¯ãµã¼ãã¼ã®ã¿æã¤
-
ä½æ¥è
ã¯èªåã触ããããã¡ã¤ã«ã ãããã¼ã«ã«ã«ã³ãã¼ããå¤æ´å¾ã«ãµã¼ãã¼ã«pushãã
- ä½æ¥ä¸ã®ãã¡ã¤ã«ã¯ä»ã®äººã¯è§¦ããªãããã大人æ°ã§éçºããã¨å¹çãä½ä¸
-
ãªãã¸ããªã¯ãµã¼ãã¼ã管çãã
-
åæ£åVCS
- ãªãã¸ããªã®å ¨å±¥æ´ãå«ããå®å ¨ãªã³ãã¼ããã¼ã«ã«ã«æã¤
- 誰ãã©ããªä½æ¥ããã¦ãã¦ãç¡è¦ãã¦ç¬ç«ã«ä½æ¥ãé²ãããã
branch
ãbranchã大人æ°ã§ä¸¦è¡ãã¦éçºãé²ããããã®ãGitã®éè¦ãªæ©è½ã§ãããã¡ãã¯ç¬¬1åã§è§£èª¬ãã¦ããã®ã§çç¥ãã¾ãã
ããã ãããã¼ã éçºãããä¸ã§branchã®ä½¿ãæ¹ã¯éè¦ã§ããç¡ç§©åºã«branchã使ãã¨ãã©ãã§ã©ã®æ©è½ãå®è£ ããã¦ãããåãããªããªãä¸ã«ãmergeã®éã«ã³ã³ããªã¯ããçºçãããããªãã¾ããã¾ããææ°çãã©ãããåãããªããªãã¾ãã
ããããã£ãåé¡ãé²ãããã«ããã©ã³ãæ¦ç¥ï¼ãã©ã³ãã®éç¨æ¹æ³ï¼ã«ã¯ãã¾ãã¾ãªæ¹æ³è«ãããã¾ãã
ãã©ã³ãæ¦ç¥
ãããã§ã¯ããããã¯ãã©ã³ãæ¦ç¥ã®ããã¤ãã®æ¹æ³è«ã«ã¤ãã¦è§£èª¬ãã¾ãã
ããããã®æ¹æ³è«ã«å³å¯ã«å¾ãå¿ è¦ã¯ãªãã§ãããåèã«ãã¤ã¤ãåéçºãã¼ã ã§ä½¿ããããããã«ã¢ã¬ã³ã¸ãã¦ãã ããã
ãªã¢ã¼ããªãã¸ããª
ãGitã¯åæ£åã¨è¨ãã¾ããããåæ£åVCSãå®éã«ã¯ãéä¸åã¨åæ§ã«ãµã¼ãã¼ã«ããªãã¸ããªãç¨æãããã®ãªãã¸ããªãéãã¦ä»ã®éçºè ã«ä½æ¥å±¥æ´ãå ±æãã¦ããã¾ããGitã§ã¯ããããªã¢ã¼ããªãã¸ããªã¨å¼ãã§ãã¾ãããªã¢ã¼ããªãã¸ããªã®ãã¹ãã£ã³ã°ãµã¼ãã¹ã¨ãã¦ã¯ãä¸è¬çã«ã¯GitHubãGitLabãBitBucketãªã©ãå©ç¨ããã¦ãã¾ãã
ãããããç´¹ä»ãã¦ãããã©ã³ãéç¨ã®æ¹æ³è«ããã¾ãçã§ãªã¢ã¼ããªãã¸ããªã1ã¤æ±ºãã¦ãGitãä¸å¤®é権çã«æ±ããããã«ãã¦ãããã¨ãåæã¨ãªãã¾ãããããããã¨ã§ãéä¸åã¨åæ£åã®è¯ãã¨ãã©ããã§ãã¾ãã
ããªã¢ã¼ããªãã¸ããªã®è¨å®ã¯ä»¥ä¸ã®ã³ãã³ãã§è¡ãã¾ãã
# ä¾ï¼GitHubã«ãããªãã¸ããªãç»é² $ git remote add origin [email protected]:tonouchi510/git-tutorial.git
Git Flow
ãGit Flowã¯æãä¸è¬çãªãã©ã³ãæ¦ç¥ã«ãªãã¾ããGit Flowã¨ããååã¯ç¥ããªãã¦ããæ £ç¿ã¨ãã¦ä¼¼ããããªãã¨ããã¦ãã人ãå¤ãã¨æãã¾ããã¾ããGit Flowãå°ãã¢ã¬ã³ã¸ãã¦ä½¿ã£ã¦ããã®ãããèãã¾ãã
ãGit Flowãå³ã«ããã¨ä»¥ä¸ã®éãã§ããå ¨ä½åã¯ããªãè¤éãªã®ã§ãããããéè¦ãªé¨åã ãããã¯ã¢ãããã¦è§£èª¬ãã¦ããã¾ãã

ãã¾ããGit Flowã§æãéè¦ãªã®ããmainï¼æ§masterï¼ãã©ã³ãã¨developãã©ã³ãã®é¢ä¿ã§ããdevelopãã©ã³ãã¯mainãã©ã³ãããåå²ããéçºã¯developã§è¡ã£ã¦ãæ¬çªã«ãªãªã¼ã¹ããæã®ã¿ main ã«merge
ããã¾ãã

ãã½ããã¦ã§ã¢éçºã®ç¾å ´ã§ã¯ãã½ã¼ã¹ã³ã¼ããæ¬çªç°å¢ã«ãªãªã¼ã¹ããåã«ãéçºç°å¢ï¼ã¹ãã¼ã¸ã³ã°ç°å¢ã«ãããã¤ãã¦åä½æ¤è¨¼ããã®ãæ £ç¿ã¨ãã¦ããã¾ãããdevelopãã©ã³ãã¯éçºç°å¢ãmainã¯æ¬çªç°å¢ã«ãããã¤ããããã®ãã©ã³ãã¨ãã¦ä½¿ããã¾ãã
ã次ã«ãè¤æ°äººã§ä¸¦åã«éçºãé²ããããã«åå²ãããã©ã³ãã§ãããfeatureãã©ã³ãã«ã¤ãã¦è§£èª¬ãã¾ãã

ããã¡ãã¯developãã©ã³ãããã1æ©è½ãã¨ã«çå½ã®ãã©ã³ããåãã¾ããæ©è½ã®éçºãçµãã£ãããdevelopã«merge
ãã¾ããã1 æ©è½ = 1 feature branchããå®ããªãã¨ãã©ã®æ©è½ãã©ã®ãã©ã³ãã«å
¥ã£ã¦ããããåãããªããªãã»ããå·®åã大ãããªã£ã¦ã³ã³ããªã¯ããçºçãããããªã£ã¦ãã¾ãã¾ãã
ãã¾ããåé¡ãçãã¦revert
ããéããæ©è½åä½ã§revert
ããããã¨ãã»ã¨ãã©ã ã¨æãã®ã§ã1ã¤ã®ãã©ã³ãã«1ã¤ã®æ©è½ãå®ãã®ãããããã§ãã大ããæ©è½ã®å ´åã¯featureãã©ã³ãããããã«featureãã©ã³ããåã£ã¦ãã§ããã ãå°ããåä½ã§mergeãã¦ããã®ãããããã§ãã
ãããã¾ã§ã§åºæ¬çãªãã©ã³ãã®åãæ¹ã«ã¤ãã¦è§£èª¬ãã¾ãããããã¾ã§ã®å 容ã ãã§ãååéçºãé²ããããã¨æãã¾ããGit Flowãæèãã¦ããªãã¦ããmain/develop/featureã®ãã©ã³ãã®åãæ¹ããã¦ããéçºãã¼ã ã¯å¤ãã¨æãã¾ãã
ãGit Flowã§ã¯ããã«å ãã¦releaseãã©ã³ããhotfixãã©ã³ããããã¾ãããããã以ä¸ã®ç¨éã§ä½¿ããã¾ãã
-
release
-
developããmainã¸
merge
ããããã®æºåããããã©ã³ã -
使ããæ¹ã¯ãã¼ã ã«ãã£ã¦ã¾ã¡ã¾ã¡
- ä¾ï¼bugfixãversion表è¨ã®æ´æ°ãAppleãGoogleã®å¯©æ»ç¨é
- stagingã¨ããå¼ã°ãæ¹ã
-
developããmainã¸
-
hotfix
- æ¬çªç°å¢ã§çºçãããã°ã®ãã¡ãç·æ¥æ§ãé«ããã®ãä¿®æ£ããããã®ãã©ã³ã
- å·¥ç¨ãç縮ããããã«ãmainãã©ã³ãããç´æ¥ãã©ã³ããåã
-
hotfixããmainã«
merge
ããéã«ã¯patchãã¼ã¸ã§ã³ãä¸ãããã¨ãå¤ã
ããã®è¾ºãã®ãã©ã³ãã¯ãã¼ã ã§ã®å¿ è¦æ§ã«å¿ãã¦ä½¿ãåãã¦ã¿ã¦ãã ããã
ãã©ã³ã¯ãã¼ã¹éçº
ãGitã®ãã©ã³ãæ¦ç¥ã«ã¯ãGit Flow以å¤ã«ããã¾ãã¾ãªãã®ãææ¡ããã¦ãã¾ãã
ããã®ä¸ã§ãGit Flowã¨ã¯å¯¾æ¥µçã«ãããªãã·ã³ãã«ãªãã©ã³ãæ¦ç¥ã§ãããã©ã³ã¯ãã¼ã¹éçºã«ã¤ãã¦ã解説ãã¦ããã¾ããGit Flowã¯ä¾¿å©ãªä¸æ¹ã§ãè¤éã«ãã©ã³ããå ¥ãçµãã¨ã³ã³ããªã¯ãããããåé¡ãããã¾ããã³ã³ããªã¯ããèµ·ããã¨ã解æ¶ã®ããã«ç¡é§ã«æéãè²»ãããã¨ã«ãªã£ã¦ãã¾ãã¾ãããã©ã³ã¯ãã¼ã¹éçºã¯ãã§ããã ãã³ã³ããªã¯ããèµ·ãããªãããã«ãããã¨ããã¨ããããçã¾ãã¦ãã¾ãã
ããã©ã³ã¯ãã¼ã¹éçºã§ã¯ãéçºè ã¯1ã¤ã®ãã©ã³ãï¼mainï¼ä¸ã§éçºãå¤æ´ãç´æ¥Pushãããã極ãã¦çå½ã®ãã©ã³ãã§ãããã¨ãåæã¨ãã¦ãã©ã³ããåããããã§éçºãè¡ãã¾ãã
ããã©ã³ããè¤æ°ãããé·æéåå¨ãããã¨ãã³ã³ããªã¯ãçºçã®ãªã¹ã¯ãä¸ãã¦ããã®ã§ãããããã§ããã ãåé¿ããã¨ããèãæ¹ã§ããGitFlowã¨æ¯ã¹ãã¨ããªã極端ãªèãæ¹ã§ãããåé¡ãªãéç¨ããããã«ã¯ãªãªã¼ã¹ã®æ¹æ³ãå質é¢ãªã©ã§èæ ®ãã¹ãç¹ãå¤ãåºã¦ãã¾ãããå¹æçãªå ´é¢ãããã®ã§ãããèå³ãæã£ããæ¤è¨ãã¦ã¿ã¦ãã ããã
ãããããã®ãã©ã³ãæ¦ç¥ã®æå³ããé¨åãç解ãããã¨ã¯ã§ããã§ããããï¼ä»ã«ãGitHub FlowãGitLab Flowãªã©ããã¾ãã¾ãªãã©ã³ãæ¦ç¥ãææ¡ããã¦ãã¾ãã
ããã²èªãã¼ã ã§è§£æ±ºããã課é¡ã«ç½®ãæãã¦ãé¸å®ãã¦ã¿ã¦ãã ããã