Gitã使ã£ããã¶ã¤ãã¼ã¨ããã°ã©ãã®åæ¥ã«ã¤ãã¦è©±ãã¦ãã #P4D #phpcon2013
常é£ããã°ã©ããã»ã¼ Rubyist ããããªãP4Dãªã®ã§ããããªããPHPã«ã³ãã¡ã¬ã³ã¹ã§æ ãããã ããã¨ã®ãã¨ã§ããã¶ã¤ãã¼ã¨Gitã«ã¤ãã¦è©±ãåã£ã¦ã¿ããã¨ããä¼ç»ã«åå ãã¦ãã¾ããã
ãçç ®ãã·ããããããã°ã©ãã¨ãã¶ã¤ãã¼ã®éã§è¡ã£ããæ¥ããããã話
Pull Request 4 Designers - GitHubã使ã£ãããã°ã©ãã¨ãã¶ã¤ãã¼ã®ã¤ãã¬ã¼ãã£ããªéçºããã¼// Speaker Deck
GitHubã使ã£ããå®éã®ããã°ã©ãã¨ãã¶ã¤ãã¼ã®åæ¥ã®æ§åãè¦ã¦ããããã¨ãããã¨ã§ãç§ããæä¼ãããã¦ããã ãã¦ããã[https://forkwell.com:title=Forkwell] 㨠[https://jobs.forkwell.com:title=Forkwell Jobs] ã§ã®éçºã®æ§åãä¾ã«ã話ããã¦ããã ãã¾ããã
è£è¶³ã¨ã
- ãçç ®ãã·ãããã¨ãã表ç¾ãå¤åæåã«ãã¡ã®ãã¼ã ã§è¨ãåºããã®ã¯ @a_matsuda æ°ã§ããã¾ã人ã®çºè¨ããã¯ã£ã¦ã¹ã©ã¤ãã«ãã¾ããã
- ãFIXYOUãã¨ããã³ãããã³ã¡ã³ãã«ã¤ãã¦ãFIXMEãä¿®æ£ããæã« @_tbaba æ°ãå ¥ããã³ã¡ã³ããããã¯ãã³ã¼ãããFIXME! ï¼ã¼ããç´ãã¦ï¼ï¼ãã£ã¦è¨ã£ã¦ãã£ã¦ãã¨ãªã®ã§ãããåãç´ãã¦ãã£ããã¼ãã¨ããæå³ã§ã®ãFIXYOUããªã®ã ããã§ãããªãããããããForkwell ãã¼ã ãåºæ¬ãã³ãããã³ã¡ã³ãã¯è±èªãªãã§ãããçµµæå使ã£ããããè¶ç®è±èªè¡¨ç¾ä½¿ã£ãããã¦ãããããã³ã¡ã³ããæ¸ã人ãå¤ãã¦ãéçºä¸ã«ã¡ãã£ã¨åãã ãããããã¡ãããæå³ãä¼ãããã¨ã¯åæã¨ãã¦ããããã¿ããã³ãããã³ã¡ã³ãã¯åæ»ãªãã¼ã éçºã«ã¨ã£ã¦å¤§äºããããã¨ãã話ã«ãªã£ãã
- ãæ°æã¡æªãç¶æ ããç¶ããã¨ãã«ã¤ãã¦ãããã¯ãå°ãªãã¨ããããã¤æã«ã¯ãã¦ã¼ã¶ã¼ã«ã¨ã£ã¦ã¯ãã®ãã¶ã¤ã³ã宿形ã§ããããã«è¦ããå½¢ã«ãªã£ã¦ããªãã¨ãããªãããã ããã¶ã¤ãã¼ã¨ãã¦ããå°ããããè¯ãããã¨ã°ãã¨è¯ããªãããã£ã¦ããç¶æ ã¯ããã£ã¦ãã¤ã¤ããå ã«ãã¼ã¸ããããã¤ããã¦ãã¾ã£ã¦å¾ããç´ãã£ã¦ãããã¨ãã¾ã¾ããã¨ããæãã®ãã¨ã§ãããã¶ã¤ãã¼ãããªãã¨ä¸è¦éããããããããªãï¼ãã©ãå ¨ä½ã¨ãã¦åããå°è±¡ãçµæ§å¤ããæãã®ãã¶ã¤ã³å¤æ´ï¼ãå¤ãã§ãããã¶ã¤ã³çã«ããã¾ãã¯ãªãã£ã«ã«ãªæ¬ ç¹ãæ®ããã¾ã¾ãã¼ã¸ / ãããã¤ããã¨ããäºã¯ã¾ããªãã¨æãã¾ããããã°ã©ãã«ã¨ã£ã¦ã®ãªãã¡ã¯ã¿ãªã³ã°ã«ä¼¼ãã¨ããããã¨æãã¾ãã
- ãã¶ã¤ã³ã«ã³ãããããã«å®ç§ã«ä½ãããã§ãããããªãã¶ã¤ãã¼ããã¯ãä¸è¨ã®ãããªæ®µéçããã»ã¹ã«æå¦æãæãããã ã¨ããæè¦ããã ãã¦ãç§ãããã ã¨æããã©ã£ã¡ãè¯ãæªãã§ã¯ãªããããã¯åãå ¥ãããã人ã¨ããã§ãªã人ãããã ãããªãã¨æããï¼èªåãã¡ãã£ã¨ã¤ãã¿ãæããæã¯ããï¼ã
- ãã¶ã¤ã³ã©ãã«ã¤ãã¦ãããã¯ããã¸ã§ã¯ãããã¼ã¸ã£ã¼ãä½ãå ´åããããããã®å ´åãä¸åº¦ãã¶ã¤ãã¼å´ã§æ¤è¨ãã¦å¿ è¦ãããã°å¤æ´ããããããåºæ¬ãè¦ä»¶ãããã¹ããã¼ã¹ã§ããããã°ãããããã¨ã«ã©ããã¯ã¤ã¤ã¼ãã¬ã¼ã ãæ¸ããããªæãã®æµãã«ãªã£ã¦ã¾ããã©ãã¯ããã°ã©ããæãæãããã¾ããã
- éçºã¯ãªã¢ã¼ããï¼ã¨ãã質åã«ã¤ãã¦ãåºæ¬ããªãã£ã¹ã«éã¾ã£ã¦éçºããã¾ããããªã¢ã¼ãã§ãå¯è½ãªä½å¶ã«ãªã£ã¦ã¾ããç§ãå«ããããªã¼ã©ã³ã¹ã®æ¥åå§è¨ã§ãã«ã¿ã¤ã ã§ã¯ãªãå¤åä½å¶ã®éçºè ãæ°åãã¦ãèªå·±é½åã§å¤ãã対å¿ããã¦ãããæ¥ããã£ãããèªåã®å¤åæ¥ã§ã¯ãªãæ¥ãæ·±å¤ãªã©ã«ããããã«Pushããããã·ããã«ã³ã¼ãã¬ãã¥ã¼æ¸ãã¦ããã¨ãã¯ããããã
- push -f ããã¨ãã·ããã®ã³ã¼ãã¬ãã¥ã¼ã³ã¡ã³ãããµã£ã¨ã¶åé¡ã«ã¤ãã¦ãããã«ã¤ãã¦ã¯ãå®å ¨ã«æ¶ããããã§ã¯ãªããShow outdated diff ãã¯ãªãã¯ããã¨ã¿ããããå¤§ä½ rebase ããæã«ã¯ã¬ãã¥ã¼ã§è¨åãããåé¡ã¯è§£æ±ºããã¦ãããã¨ãå¤ãã®ã§ãããã¦æ°ã«ããªãã§ãããã®ã§ã¯ãã¨ããã®ãç§ã®å人çãªè¦è§£ãã¹ãã¾ãããã®ã¾ã¾æ®ã£ã¦ãæ¹ãããè¯ããããªãã¨ã¯æãã®ã§ãããããããã rebase + push -f ã®å©ç¹ã®æ¹ã大ããããªæãããã¦ã¾ãã
ååã§ãä¸ã®ã¹ã©ã¤ããçºè¡¨ããã¦ããã ããå¾åã¯ããã¶ã¤ãã¼ã¨Git ã«ã¤ãã¦ããã¶ã¤ãã¼æ°åã§ããã«ãã£ã¹ã«ãã·ã§ã³ããã¾ãããæ¿ã話ã§ãã¦è¯ãã£ããããã®å¾ãã¶ã¤ãã¼4人ã§ãã£ã¨é£²ãã§ãã¦ãç¶ãã®è©±ããã£ã¨ãã¦ã¦ãçµå± Git ã¯ããã¶ã¤ãã¼ãã«ã¨ã£ã¦ãããã®ãªã®ããã¡ãã£ã¨å«ãªãã®ãªã®ãã¯ãå®ã¯ããããããªããã£ã¦ãã話ã«è½ã¡çããã®ãé¢ç½ãã£ããç§èªèº«ã¯Git & GitHubã©ããªãã§ããã確ãã«ãã¥ã¢ãªããã¶ã¤ã³ãã«ã¨ã£ã¦ãGitã使ã£ãéçºããã¼ã¯åãã¦ãªãé¢ãããã®ããã£ã¦æãæã¯ã¡ããã¡ãããã£ã¦ãããã1人ã®Webéçºè ã¨ãã¦Gitã¯å¥½ãã ããã®ææ³ã«ãå ±æã§ããã®ã§ããã®ã¸ã¬ã³ãã¯å¸¸ã«æãã¦ããã®ãæ£ç´ãªã¨ããã
Git ã£ã¦æ¬å½ã«ãã¶ã¤ãã¼ã幸ãã«ããã®ï¼
徿¥ãç´ç²ãªããã¶ã¤ã³ãã¨ããã¦ãããã®ã£ã¦ãä¼½èã¨ãã¶ã¼ã«ï¼å¤ãï¼ï¼ã§ããã¨ããã®ãä¼½èãçãªå´é¢ãå¼·ãã䏿¹Gitã¯åæ£åã®ããã¶ã¼ã«ãçãªææ³ã ããã®ãã¶ã¤ã³ãããã«ãã¶ã¼ã«çãªããã»ã¹ã§ãã£ã¦ãããã¨ããã¨ããããããããGitã使ããã¶ã¤ãã¼ã®æ ¹æ¬çãªã¸ã¬ã³ãã®åå ãªã®ã§ã¯ãªããã¨æã£ã¦ããããããããé »ç¹ã« cherry-pick ã使ããªããã°ãããªãã®ãã¡ãã£ã¨ç¡çç¢çæãããã®ã ããç¾ç¶ãããããã¿ã¼ãªè§£æ±ºçãè¦ã¤ãããªããããããä¼½èãç¡çãããã¶ã¼ã«çãªããã»ã¹ã«åããã¦ããããªã®ããªãã¨ããæããããã
ã¾ããGit ã GitHub ãåºæ¬ããã°ã©ããã¬ã³ããªã¼ã«ä½ããã¦ãããããã®ããã»ã¹ã«ãã£ã¤ãä¹ã£ããã¨ãã©ããã¦ãèªåãããã°ã©ãçæèã«å¼ã£å¼µããããã¨ã«ãªãããã®ä¸ã§ããã¶ã¤ãã¼ã¨ãã¦ã®å½¹å²åæ
ãå¸¸ã«æèããªãããã¼ã ãã¬ã¤ãã¦ããã¨ããã®ã¯æå¤ã¨è² è·ãé«ãæãããã¦ãã
ãã¨ãç´ç²ãªããã¶ã¤ã³ãã«ãããæéã¯ãã¯ãç¸å¯¾çã«æ¸ã£ã¦ãã¾ããã¨ã¯ããããããã¯èªåã®ä»äºã§ã¯ãªããããããªããã¨ããåãåãæ¹ãå人çã«ã¯ã§ããã ãããããªãããããããã¶ã¤ã³ã«ããããªã½ã¼ã¹ãæ¸ã£ã¦ãã¾ããã¨ã§ãããã¸ã§ã¯ãå
¨ä½ã®å©çãå°ãªããªããªãããã¯ãããªããã¨ãæèãã¦ãããã¶ã¤ã³ãã«ãããæéãæ»åºããããã«ããªãã¨ãããªãã
ãããªæãã§ãGit ãæ¬å½ã«ãã¶ã¤ãã¼ã幸ãã«ãã¦ããã®ãã¯ãæ£ç´ãªã¨ããããããããªãã®ã§ãããã ãããã¶ã¤ã³ããã©ãã§ãããWebãµã¼ãã¹éçºçãªè¦ç¹ã§ã¯ããã¯ãã¤ãã¬ã¼ãã£ããªããã»ã¹ã¯æ£ããã®ã§ã¯ã¨æãããèªåã®ã¹ã¿ã³ã¹ã¨ãã¦ã¯ããã¶ã¤ã³ã®å¤§åããã¡ããã¨èªè¦ããªããããã¶ã¤ã³ãã©ããã£ã¦ãã¾ãã¨ã³ã¸ãã¢ãªã³ã°çãªããã»ã¹ã«ä¹ã£ãã¦ããã®ããã¨ããã¨ããã§ããããããã°ããæ©ãã§ããã¹ããªãã ãããªãã¨ããæããã¾ã ã¾ã ãçãåºãªãããâ¦ã
åã ã®ãã¬ã¤ã¤ã¼ã«ã¨ã£ã¦ã¢ã³ã³ã³ããã¼ã©ãã«ãªç¶æ³ããªããªãã®ã Git ã®ä¸çªã®ç´ æ´ãããã§ã¯ï¼
ä¼ã®å¾ããã¶ã¤ãã¼æ°åã§é£²ã¿ãªãã話ãã¦ã¦ãP4Dã«æ¥ããããªãã¶ã¤ãã¼ã¯ãæ¬æ¥ãä½ãã人ã«ä»»ãã¦ããã¦åæ¥ããã®ãæ¯è¼ç好ã¾ãªããå
¨é¨èªåä¸äººã§ãããããªã£ã¡ãããããªã¿ã¤ãã®ãã¶ã¤ãã¼ãªã®ã«ããªãã§Gitã使ãã¨ãã¼ã ãã¬ã¤ãããã大äºã«æãããã«ãªãã®ããããã䏿è°ã ã¨ãã話ããã¦ã¦ãããã¯æ¬å½ã«ããæããã¿ããªèªå1人ã®å°å®å®ãä½ã£ã¦ãããã§èªåã®ãããããã¶ã¤ã³ãWebãµã¼ãã¹ãå®ç¾ããããã¦ããã°ã©ãã³ã°ãããããªã¼ã£ã¦æãããã«ãªã£ãã®ã«ãGit以éã¯ã誰ãã¨ä¸ç·ã«ä½ãè¯ãããããæããããã«ãªã£ãã䏿è°ã ã
ãããããããGitã®ãé°ã§ãèªåã«ã¨ã£ã¦ã¢ã³ã³ã³ããã¼ã©ãã«ãªãã©ãã¯ããã¯ã¹ãã ãã¶å°ãªããªããä½ããå¤ãããã¨æãã°èªåèªèº«ã®æã§å¤ããããç¶æ³ãå¸¸ã«æå
ã«ããã¨ããã®ã大ãããã ããã®æææ±ºå®ããã»ã¹ã®æ°ä¸»åãæãããè¨è¨ææ³ããèªåãä¸çª Gitãç´ æ´ãããã¨æããç¹ãã¿ããªã§ä¸ç·ã«ä½ã£ã¦ããªãããå
¨ä½ãåã
ã®ææã«æ²¿ããªãæµãã«ãªã£ã¦ãã¾ããã¨ãï¼å°ãªãã¨ãã³ã¼ãã®ä¸ã§èµ·ãã¦ãããã¨ã«ããã¦ã¯ï¼ãGitãGitHubã¨ãããã¼ã«ãæå¹ã«ä½¿ããã¨ã«ãã£ã¦ã ãã¶æ¸ãã®ã ã¨æãã
ããå°ããã¡ãã¨ãã¶ã¤ã³ã¨åãåããªãã¨ãª
é·å¹´ãã¶ã¤ãã¼ããã£ã¦ãããã§ããããã¶ã¤ã³ã¯æ¥½ããå颿¬å½ã«ããã©ããèªåã®ã¬ãã«ã伸ã³ãããè¦ãã¦ãã¦ãä½ãã¡ãã£ã¨åªåããã ãã§ç®ã«è¦ããæé·ãããã®ãé£ãããããªç¶æ³ããããåé¢ããã°ã©ãã³ã°ã£ã½ãåéã¯ãèªåã«ã¨ã£ã¦ç°åéãªã®ã§ã大ãããªãäºã§ããã¡ãã£ã¨æé·ããã ãã§ããããéææãæããäºãã§ãããå¨ãã«ãããã¶ã¤ãã¼ãªã®ã«ããããã£ã¦è¤ãã¦ããããã大ãããã¨ãªãã®ã«ããã¼ãããããã®ã£ã¦æ¥½ãªæ¹ã«å®ã¯éãã¦ãããã宿ã ããºã«ããããã£ã¦ãã話ãããããããªãã§ããRPGã§ãã¬ãã«ä½ããã¡ã¯ãããæµã§ã¬ãã«ä¸ãã£ã¦å¬ãããã§ããããããã£ã¦ããã¡ã«ããã¶ã¤ã³ãããããã«ãªããçµæçã«ã©ã£ã¡ãä¸éå端ãªäººã«ãªãï¼ãªã£ã¦ãï¼ï¼ã®ãé¿ããªãã¨ã¾ãããªã£ã¦ããã®ã¯ãããæãã
èªåãå¨ãã®P4Dã§ä¼ã£ã仲è¯ããã¶ã¤ãã¼ãã¡ã¯ãããã°ã©ãã«ãªãããã¦ã³ã¼ããæ¸ãã¦ããããããªãã¦ãèªåã®ãããããã¶ã¤ã³ããããããããèªåã®ãã¶ã¤ã³ã§ã¼ãã®èããæå¼·ã®Webãµã¼ãã¹ãä½ãããããã³ã¼ããæ¸ãããã«ãªã£ãã ãã§ãããããæ®éã«ãã¶ã¤ã³ãããããããã³ã¼ããæ¸ãããã«ãªã£ãã ããªã®ã ããªã¼ï¼ã¨ãããããã°ã©ãã³ã°ã£ã½ããã¨ããã°ããã»ã©èªåã«ã¯ã¬ãã®ããã°ã©ãã¯ç¡çã ãã£ã¦æãã¦ããâ¦ï¼ã
ãããªããã§ãããã¡ãã£ã¨ã¡ããã¨ãã¶ã¤ã³ããããã¨æã£ãã®ããä¸çªã®ãã®æ¥ã®ææã§ããã
Git ã¯ç´ æ´ãããï¼