1ã¯ããã«
ç§ã®
æåŸã®æçš¿ã§ãç§ã¯
åæ£gitããŒãžã§ã³ç®¡çã·ã¹ãã ãšæ¯èŒããçžéç¹
å€å
žçãªäžå
åãããããŒãé貚ã ç®æšã¯äž»ã«çµéšãäžè¬åããããšã§ãã
åã
ã®ã³ãã³ãã®æ§æã®åŸ®åŠãªç¹ã«èšåããã«ã·ã¹ãã ãæäœããŸãã
ãããšåããããã¯ã¯ãGitã®æäœãçŽæ¥çŽ¹ä»ãããã®ãšããŠèããããŸããã
ãã¥ãŒããªã¢ã«ãšäžè¬åããããã«ãã®äžéããŸã æšå¥šãããŠããŸã
äžèšã®æŠèŠããèªã¿ãã ããã æå³çã«åé¿ãããæè¡
gitã®è©³çŽ°ãSLEã«å
±éã®çšèªã®ã¿ã䜿çšããã
äžèšã®ã³ãã³ãã®ãªã¹ãã«éå®ãããŸãã
2ããŒã«ã«ãªããžããªã®æäœ
åæ£ã·ã¹ãã ã®èœåã¯ããã¹ãŠã®ããŒã«ã«éçºè
ãå©çšã§ããŸãã
ä»»æã®å人çšã¹ããŒã ãç·šæã§ãããªããžããª
éçºã gitã«ã¯ãé©åãªäœæ¥ãè¡ãããã®ããã€ãã®åºæ¬çãªã³ãã³ãããããŸãã
å€ãã®è£å©ã
2.1åºæ¬çãªã³ãã³ã
åºæ¬çãªã³ãã³ãã¯ãéçºäžã«ãªãã§ã¯å®è¡ã§ããªãã³ãã³ãã§ãã
2.1.1 git init-ãªããžããªã®äœæ
git initã³ãã³ãã¯ããã£ã¬ã¯ããªå
ã«ãã£ã¬ã¯ããªãšããŠç©ºã®ãªããžããªãäœæããŸã
.gitãã³ãããã®å±¥æŽã«é¢ãããã¹ãŠã®æ
å ±ãå°æ¥ä¿åãããå Žæã
ã¿ã°-ãããžã§ã¯ãéçºã®é²æïŒ
mkdir project-dir
cd project-dir
git init
ãªããžããªãäœæããå¥ã®æ¹æ³ã¯ãgit cloneã³ãã³ãã䜿çšããããšã§ãããããã«ã€ããŠã¯åŸã§è©³ãã説æããŸãã
2.1.2 git addããã³git rm-ã€ã³ããã¯ã¹äœæã®å€æŽ
次ã«ç¥ã£ãŠããã¹ãããšã¯ãgit addã³ãã³ãã§ãã ããã«ãããã€ã³ããã¯ã¹ã«å€æŽãå ããããšãã§ããŸã-äžæã¹ãã¬ãŒãž-ãã®åŸãã³ãããã«å«ãŸããŸãã äŸ
䜿çšïŒ
git add EDITEDFILE-å€æŽããããã¡ã€ã«ã®ã€ã³ããã¯ã¹äœæããŸãã¯éç¥
æ°ãããã®ãäœæããŸãã
git addã -æ°ãããã¡ã€ã«ãå«ããã€ã³ããã¯ã¹ã«ãã¹ãŠã®å€æŽãå ããŸãã
ã€ã³ããã¯ã¹ãšãããžã§ã¯ãããªãŒããåæã«ãgit rmã³ãã³ãã䜿çšããŠãã¡ã€ã«ãåé€ã§ããŸãã
git rm FILE1 FILE2-åå¥ã®ãã¡ã€ã«
git rm Documentation / \ *ãtxtã¯ãgitããã¥ã¡ã³ãããåé€ããè¯ãäŸã§ãã
ãã©ã«ãã®ãã¹ãŠã®txtãã¡ã€ã«ã¯ããã«åé€ãããŸãã
ã€ã³ããã¯ã¹å
šäœããªã»ããããããã€ã³ããã¯ã¹ããç¹å®ã®ãã¡ã€ã«ãžã®å€æŽãåé€ã§ããŸãã
git resetã³ãã³ãïŒ
git reset-ã€ã³ããã¯ã¹å
šäœããªã»ããããŸãã
git reset-EDITEDFILE-ã€ã³ããã¯ã¹ããç¹å®ã®ãã¡ã€ã«ãåé€ããŸãã
git resetã³ãã³ãã¯ã€ã³ããã¯ã¹ããªã»ããããããã ãã«äœ¿çšãããããã§ã¯ãããŸããã
圌女ã¯ãã£ãšæ³šç®ãããŸãã
2.1.3 git status-ãããžã§ã¯ãã®ã¹ããŒã¿ã¹ãå€æŽããããã¡ã€ã«ãšè¿œå ãããŠããªããã¡ã€ã«ãã€ã³ããã¯ã¹ä»ããã¡ã€ã«
git statusã³ãã³ãã¯ããããæãäžè¬çã«äœ¿çšãããŸã
ããŒã ã®ã³ããããšã€ã³ããã¯ã¹äœæã ãã¹ãŠã®å€æŽã«é¢ããæ
å ±ã衚瀺ããã
æåŸã®äœæ¥ã³ããããšæ¯èŒããŠããªãŒã«è¿œå ããããããžã§ã¯ããã£ã¬ã¯ããª
æ åå¥ã«å
¥åãããã€ã³ããã¯ã¹ãšã€ã³ããã¯ã¹ãªã
ãã¡ã€ã«ã ããã䜿çšããããšã¯éåžžã«ç°¡åã§ãïŒ
git status
ããã«ãgitã¹ããŒã¿ã¹ã¯ãæªè§£æ±ºã®ããŒãžç«¶åããããã¡ã€ã«ã瀺ãã
gitã«ãã£ãŠç¡èŠããããã¡ã€ã«ã
2.1.4 git commit-ã³ããã
ã³ãããã¯ãã¹ãŠã®ããŒãžã§ã³ç®¡çã·ã¹ãã ã®åºæ¬æŠå¿µã§ããããã
å¯èœãªéãç°¡åãã€é«éã§ããå¿
èŠããããŸãã æãåçŽãªåœ¢åŒã§ãååãª
ã€ã³ããã¯ã¹ã¿ã€ãã®åŸïŒ
git commit
ã€ã³ããã¯ã¹ã空ã§ãªãå Žåãããã«åºã¥ããŠã³ããããã³ãããããããã®åŸã³ããããããŸã
ãŠãŒã¶ãŒã¯ãã³ãã³ããåŒã³åºããŠè¡ã£ãå€æŽã«ã€ããŠã³ã¡ã³ãããããæ±ããããŸã
ç·šéïŒããšãã°ãUbuntuã§ã¯ãéåžžãåçŽãªnanoããã¹ããšãã£ã¿ãŒãåŒã³åºãããŸããã
ç§-emacsïŒã ä¿åããŠãããŒã«ïŒ ã³ãããã®æºåãã§ããŸããã
git commitã§ã®äœæ¥ãç°¡åã«ããããã€ãã®ããŒããããŸãã
git commit -a-ãã¡ã€ã«ãžã®å€æŽã®ã€ã³ããã¯ã¹ãèªåçã«ã³ãããããŸã
ãããžã§ã¯ãã æ°ãããã¡ã€ã«
ã¯çŽ¢åŒä»ããã
ãŸãã ïŒ åããã¡ã€ã«ãåé€ãã
èæ
®ãããŸãã
git commit -m "commit comment"-ã³ãã³ãã©ã€ã³ããçŽæ¥ã³ãããã«ã³ã¡ã³ããã
ããã¹ããšãã£ã¿ã®ä»£ããã«ã
git commit FILENAME-å€æŽã«åºã¥ããŠã³ããããã€ã³ããã¯ã¹åããäœæããŸã
åäžãã¡ã€ã«ã
2.1.5 git reset-ç¹å®ã®ã³ããããããŒã«ããã¯ã®å€æŽããããŒãããŸãã¯ããœãããã«æ»ã
ã€ã³ããã¯ã¹ã®æäœïŒäžèšãåç
§ïŒã«å ããŠãgit resetã§ã¯ç¶æ
ããªã»ããã§ããŸã
å±¥æŽã®ã³ãããåã®ãããžã§ã¯ãã gitã§ã¯ããã®ã¢ã¯ã·ã§ã³ã¯2ã€ã«ããããšãã§ããŸã
ã¿ã€ãïŒããœãããïŒãœãããªã»ããïŒããã³ãããŒããïŒããŒããªã»ããïŒã
ããœãããïŒã--softãããŒã䜿çšïŒã«ããã§ã¯ãã€ã³ããã¯ã¹ãšããªãŒå
šäœããã®ãŸãŸæ®ããŸãã
ãããžã§ã¯ãã®ãã¡ã€ã«ãšãã£ã¬ã¯ããªã¯ãæå®ãããã³ãããã§åäœããããã«æ»ããŸãã ãã®ä»
ã€ãŸããã³ããããããã°ããã®ã³ãããã§ãšã©ãŒãèŠã€ãã£ãå ŽåããŸãã¯
ããã«ã³ã¡ã³ããããšãç¶æ³ãç°¡åã«ä¿®æ£ã§ããŸãïŒ
- git commit ...-äžæ£ãªã³ãããã
- git reset --soft HEAD ^-ãã§ã«ã³ããããããã³ãããã«åãçµã¿ãŸãã
ãã¹ãŠã®ãããžã§ã¯ãã¹ããŒã¿ã¹ãšã€ã³ããã¯ã¹ãã¡ã€ã«ãä¿åãã
- ééã£ããã¡ã€ã«ãç·šé
- ANOTHERWRONGFILEãç·šé
- è¿œå ããŸãã
6.1ã git commit -c ORIG_HEAD-æåŸã®ã³ãããã«æ»ããšãæäŸãããŸã
圌ã®ã¡ãã»ãŒãžãç·šéããŸãã ã¡ãã»ãŒãžãå€æŽãããªãå Žåã
ããŒã±ãŒã¹-cãå€æŽããã ãã§ãïŒ
6.2ã git commit -C ORIG_HEAD
HEAD ^ã®æå®ã«æ³šæããŠãã ããããå
ç¥ã«é£çµ¡ããããšããæå³ã§ãã
æåŸã®ã³ããããã ãã®ãããªçžå¯Ÿã¢ãã¬ã¹æå®ã®æ§æã«ã€ããŠãããã«è©³ãã説æããŸãã
ãããã·ã¥ãã¿ã°ãçžå¯Ÿã¢ãã¬ã¹æå®ãã»ã¯ã·ã§ã³ã®äžäœã«ãªããŸãã ãããã£ãŠã
HEAD-æåŸã®ã³ããããžã®ãªã³ã¯ã ãœããã«ããåŸã®ORIG_HEADã®ãªã³ã¯
å
ã®ã³ãããã瀺ããŸãã
åœç¶ãã³ãããã®æ·±ããããæ·±ãããããšãã§ããŸããã
ããŒãã«ããïŒ--hard switchïŒ-䜿çšããã³ãã³ã
泚æã Gitã®ãªã»ãã--hardã¯ããããžã§ã¯ãããªãŒãšã€ã³ããã¯ã¹ãç¶æ
ã«æ»ããŸãã
æå®ãããã³ãããã«å¯Ÿå¿ããåŸç¶ã®ã³ãããã®å€æŽãåé€ããŸãã
git addã
git commit -m "æ»ã«è³ã"
git reset --hard HEADã1-ä»ã®èª°ããã®æ¥ãã¹ãã³ããããèŠãããšã¯ãããŸããã
git reset --hard HEADã3-ãŸãã¯ãæåŸã®3ã€ã®ã³ãããã 誰ãã 決ããŠã
ã³ãã³ããåå²ç¹ã«éãããšãã³ãããã¯åé€ãããŸããã
ãªã¢ãŒããªããžããªããæè¿ã®å€æŽãããŒãžãŸãã¯ããã¬ãŒããããã
rezetã®äŸã¯ãé¢é£ããã»ã¯ã·ã§ã³ã§èª¬æããŸãã
2.1.6 git revert-éå»ã«è¡ãããå€æŽãå¥ã®ã³ãããã§ç Žæ£ãã
å人ãè¡ã£ãå€æŽãç Žæ£ãããç¶æ³ããããããããŸãã
ã³ãããããŸãã Gitã®åŸ©åž°ã«ãããæ°ããã³ããããäœæãããå€æŽãå
ã«æ»ãããŸãã
git revert config-modify-tag-ã¿ã°ã§ããŒã¯ãããã³ãããããã£ã³ã»ã«ããŸãã
git revert 12abacd-ããã·ã¥ã䜿çšããŠã³ãããããã£ã³ã»ã«ããŸãã
ããŒã ã䜿çšããã«ã¯ããããžã§ã¯ãã®ç¶æ
ã次ãšå€ãããªãããšãå¿
èŠã§ãã
æåŸã®ã³ãããã«ãã£ãŠã³ããããããç¶æ
ã
2.1.7 git log-ã³ãããã«é¢ããäžè¬çãªããŸããŸãªæ
å ±ãåã
ã®ãã¡ã€ã«ããã³ããŸããŸãªæ·±ãã®å±¥æŽãžã®æ²¡å
¥
æã
ãã³ãããã®å±¥æŽã«é¢ããæ
å ±ãå€æŽãããã³ããããååŸããå¿
èŠããããŸã
å¥ã®ãã¡ã€ã«ã ç¹å®ã®æéãªã©ã«ã³ãããããŸãã ãããã®ããã«
ç®æšã¯git logã³ãã³ãã䜿çšããŸãã
ãã¹ãŠãžã®ã¯ã€ãã¯ãªãã¡ã¬ã³ã¹ãæäŸããæãåçŽãªãŠãŒã¹ã±ãŒã¹
çŸåšã¢ã¯ãã£ããªãã©ã³ãã«è§Šããã³ãããïŒãã©ã³ããšãã©ã³ãã«ã€ããŠïŒ
詳现ã«ã€ããŠã¯ã以äžã®ããã©ã³ããšããŒãžãã»ã¯ã·ã§ã³ãã芧ãã ããã
git log
ã³ãããããã®ãã¡ã€ã«ã®ãããã®åœ¢åŒã§ãããããã«é¢ãã詳现æ
å ±ãååŸããŸã
-pïŒãŸãã¯-uïŒã¹ã€ãããè¿œå ããããšã«ããïŒ
git log -p
å€æŽããããã¡ã€ã«ã®æ°ãªã©ããã¡ã€ã«å€æŽã®çµ±èš
è¡ãåé€ããããã¡ã€ã«ã¯--statã¹ã€ããã§åŒã³åºãããŸãïŒ
git log --stat
ããŒã¯ããã¡ã€ã«ã®äœæãååå€æŽãã¢ã¯ã»ã¹æš©ã«é¢ããæ
å ±ã管çããŸã
-æŠèŠïŒ
git log --summary
åäžã®ãã¡ã€ã«ã®å±¥æŽã調ã¹ãã«ã¯ããã©ã¡ãŒã¿ãŒã®åœ¢åŒã§ç€ºãã ãã§ååã§ãã
圌ã®ååïŒãšããã§ãç§ã®å€ãããŒãžã§ã³ã®gitã§ã¯ããã®ã¡ãœããã¯æ©èœããŸãããã
ãREADMEãã®åã«ã-ããå¿
ãè¿œå ããŠãã ããïŒã
git log README
ãŸãã¯ãgitããŒãžã§ã³ãææ°ã§ãªãå ŽåïŒ
git log-README
æ§æã®ææ°ããŒãžã§ã³ã®ã¿ã以äžã«ç€ºããŸãã ãã¶ã
ç¹å®ã®ç¬éããå§ãŸãæéã瀺ããŸãïŒãé±ãããæ¥ãããæéãããsã
ãªã©ïŒïŒ
git log --since = "1æ¥2æé" README
git log --since = "2 hours" README
git log --since = "2 hours" dir /-å¥ã®ãã©ã«ããŒã«é¢ããå€æŽã
ã¿ã°ã§æ§ç¯ã§ããŸãïŒ
git log v1 ...-v1ã¿ã°ã§å§ãŸããã¹ãŠã®ã³ãããã
git log v1 ... README-ã§å§ãŸãREADMEãã¡ã€ã«ãžã®å€æŽãå«ããã¹ãŠã®ã³ããã
ã¿ã°v1ã
git log v1..v2 README-ã§å§ãŸãREADMEãã¡ã€ã«ãžã®å€æŽãå«ããã¹ãŠã®ã³ããã
v1ã¿ã°ãšv2ã¿ã°ã§çµããã
ã¿ã°ã®äœæããªã¹ããå²ãåœãŠã¯ãé©åãª
以äžã®ã»ã¯ã·ã§ã³ã
--prettyã¹ã€ããã¯ãã³ãã³ãåºåã®åœ¢åŒã«èå³æ·±ããªãã·ã§ã³ãæäŸããŸãã
git log --pretty = oneline-åã³ãããã«ããã·ã¥ã§æ§æãããè¡ãåºåããŸã
ïŒããã§ã¯ãåã³ãããã®äžæã®èå¥åãããã«ã€ããŠã¯åŸã§è©³ãã説æããŸãïŒã
git log --pretty = short-ã³ãããã«é¢ããç°¡æœãªæ
å ±ã®ã¿
èè
ãšã³ã¡ã³ã
git log --pretty = full / fuller-ã³ãããã«é¢ããããå®å
šãªæ
å ±ãååä»ã
äœæè
ãã³ã¡ã³ããäœææ¥ãã³ãããã®çŽ¹ä»
ååãšããŠãåºå圢åŒã¯ç¬ç«ããŠæ±ºå®ã§ããŸãã
git log --pretty = formatïŒ 'FORMAT'
圢åŒã®å®çŸ©ã¯ãGit Community Bookã®git logã»ã¯ã·ã§ã³ã«ãããŸãã
ãŸãã¯å©ããŸãã ããŒã䜿çšããŠãã³ãããã®çŸããASCIIã°ã©ãã衚瀺ãããŸã
-ã°ã©ãã
2.1.8 git diff-ãããžã§ã¯ãããªãŒéã®éãã ã³ããã; ã€ã³ããã¯ã¹ã®ç¶æ
ãšã³ãããã
git logã³ãã³ãã®ãµãã»ããã®äžçš®ã¯git diffã³ãã³ãã§ãã
ãããžã§ã¯ãå
ã®ãªããžã§ã¯ãéã®å€æŽã®å®çŸ©ïŒããªãŒïŒãã¡ã€ã«ãš
ãã£ã¬ã¯ããªïŒïŒ
git diff-ã€ã³ããã¯ã¹ã«å ããããŠããªãå€æŽã衚瀺ããŸãã
git diff --cached-ã€ã³ããã¯ã¹ã«å ããããå€æŽã
git diff HEAD-æåŸã®ã³ããããšæ¯èŒãããããžã§ã¯ãã®å€æŽ
git diff HEAD ^-æåŸãã2çªç®ã®ã³ããã
ãã©ã³ãã®ããããããæ¯èŒã§ããŸãã
git diff master..experimental
ãŸãããŸãã¯ããããã®ã¢ã¯ãã£ããªãã©ã³ãïŒ
git diff Experimental
2.1.9 git show-å¥ã®ã³ãããã«ããå€æŽã衚瀺
gitã³ãã³ãã䜿çšããŠãå±¥æŽã®ã³ãããã«ãã£ãŠè¡ãããå€æŽã確èªã§ããŸã
衚瀺ïŒ
git show COMMIT_TAG
2.1.10 git blameãšgit annotate-ãã¡ã€ã«ã®å€æŽã远跡ããã®ã«åœ¹ç«ã€ãã«ããŒã³ãã³ã
ããŒã ã§åããšããç¹å®ã®äººãæžãã人ãæ£ç¢ºã«èŠã€ããå¿
èŠãããããšããããããŸãã
ã³ãŒãã 次ã«é¢ããè¡ããšã®æ
å ±ã衚瀺ããgit blameã³ãã³ãã䜿çšãããšäŸ¿å©ã§ãã
è¡ã«è§ŠããæåŸã®ã³ããããèè
åãã³ãããããã·ã¥ïŒ
git blame README
衚瀺ããç¹å®ã®è¡ãæå®ããããšãã§ããŸãã
git blame -L 2ã+ 3 README-2è¡ç®ããå§ãŸã3è¡ã§æ
å ±ã衚瀺ããŸãã
git annotateã³ãã³ããåæ§ã«æ©èœããæååãš
ãããã«åœ±é¿ãäžããã³ãããïŒ
git annotate README
2.1.11 git grep-ãããžã§ã¯ããéå»ã®ãããžã§ã¯ãã¹ããŒã¿ã¹ã§åèªãæ€çŽ¢
git grepã¯ãäžè¬ã«ãæåãªUnixã®æ©èœãåçŽã«è€è£œããŸãã
ããŒã ã ãã ãããããžã§ã¯ãã®éå»ã«åèªãšãã®çµã¿åãããæ€çŽ¢ã§ããŸãã
éåžžã«äŸ¿å©ã§ãïŒ
git grep tst-ãããžã§ã¯ãã§åèªtstãæ€çŽ¢ããŸãã
git grep -c tst-ãããžã§ã¯ãå
ã®tstãžã®åç
§ã®æ°ãã«ãŠã³ãããŸãã
git grep tst v1-ãããžã§ã¯ãã®å€ãããŒãžã§ã³ãæ€çŽ¢ããŸãã
ãã®ã³ãã³ãã䜿çšãããšãè«çANDããã³ORã䜿çšã§ããŸãã
git grep -e 'first' --and -e 'another'-æåã®è¡ãèšèŒãããŠããè¡ãèŠã€ãã
èšèããããŠç§ã
git grep --all-match -e 'first' -e 'second'-ãããçºçããè¡ãèŠã€ãã
èšèã®äžã€ã§ãããã
2.2åå²
ãã©ã³ãã®æäœãšããŒãžã¯gitã®äžå¿ã§ããããããå®çŸããã®ã¯ãããã®æ©èœã§ã
ã·ã¹ãã ãšã®äŸ¿å©ãªä»äºã
2.2.1 git branch-ãã©ã³ãã®äœæãåæãåé€
gitã§ã®ãã©ã³ãã®æäœã¯éåžžã«ç°¡åãªæé ã§ããã¹ãŠã®å¿
èŠãªã¡ã«ããºã ããããŸã
1ã€ã®ããŒã ã«éäžïŒ
git branch-æ¢åã®ãã©ã³ãããªã¹ãããã¢ã¯ãã£ãã«ããŒã¯ããŸãã
git branch new-branch-æ°ãããã©ã³ãnew-branchãäœæããŸãã
git branch -d new-branch-ããŒãžããããã©ã³ããåé€ããŸã
çŸåšã®ç«¶åã®å¯èœæ§ã®è§£æ±ºã
git branch -D new-branch-
ãšã«ãããã©ã³ããåé€ã
ãŸã ã
git branch -m new-name-branch-ãã©ã³ãã®ååãå€æŽããŸãã
git branch --contains v1.2-å
ç¥ãååšãããã©ã³ãã衚瀺ããŸã
ç¹å®ã®ã³ãããã
2.2.2 git checkout-ãã©ã³ããåãæ¿ããã³ãããå±¥æŽããåã
ã®ãã¡ã€ã«ãæœåºããŸã
git checkoutã³ãã³ãã䜿çšãããšãæåŸã®ã³ãããéã§åãæ¿ããããšãã§ããŸãïŒ
ç°¡ç¥åãããïŒãã©ã³ãïŒ
ä»ã®ãã©ã³ãããã§ãã¯ã¢ãŠããã
checkout -b some-other-new-branch-ãã©ã³ããäœæããŸãã
åãæ¿ãã
ã®æåŸã®ã³ããããšæ¯èŒããŠçŸåšã®ãã©ã³ãã«å€æŽããã£ãå Žå
ãã©ã³ãïŒHEADïŒãããŒã ã¯è² ããªãããã«åãæ¿ããæåŠããŸã
å®äºããäœæ¥ã -fã¹ã€ããã䜿çšãããšããã®äºå®ãç¡èŠã§ããŸãã
checkout -f some-other-branch
ããã§ãå€æŽãä¿åããå¿
èŠãããå Žåã¯ã-mã¹ã€ããã䜿çšããŸãã ããããããŒã
åãæ¿ããåã«ãçŸåšã®ãã©ã³ãã«å€æŽãã¢ããããŒãããããšãããã®åŸ
競åã®å¯èœæ§ã解決ããã«ã¯ãæ°ãã競åã«åãæ¿ããŸãã
checkout -m some-other-branch
ãã¡ã€ã«ãè¿ãïŒãŸãã¯åã«ä»¥åã®ã³ããããããã¡ã€ã«ãåãåºãïŒã«ã¯ã次ã®åœ¢åŒã®ã³ãã³ãã䜿çšã§ããŸãã
git checkout somefile-somefileãæåŸã®ã³ãããã®ç¶æ
ã«æ»ã
git checkout HEADã2 somefile-somefileããã©ã³ãã«æ²¿ã£ãŠ2ã€ã®ã³ãããç¶æ
ã«æ»ããŸãã
2.2.3 git merge-ãã©ã³ããããŒãžããŸãïŒç«¶åã®å¯èœæ§ã解決ããŸãïŒã
gitã§ã®éäžã·ã¹ãã ã®éåžžã®ãã©ã¯ãã£ã¹ãšã¯ç°ãªãããã©ã³ãã®ããŒãž
ã»ãŒæ¯æ¥çºçããŸãã åœç¶ã䟿å©ãªã€ã³ã¿ãŒãã§ã€ã¹ããããŸã
人æ°ã®ããæäœïŒ
git merge new-feature-çŸåšã®ãã©ã³ããšæ°æ©èœã®ãã©ã³ããããŒãžããããšããŸãã
競åãçºçããå Žåãã³ãããã¯çºçããŸããããåé¡ã®ãããã¡ã€ã«ã«ã€ããŠã¯çºçããŸã
ç¹å¥ãªããŒã¯ã¯la svnã«é
眮ãããŸãã ãã¡ã€ã«èªäœã¯ãã€ã³ããã¯ã¹å
ã§æ¬¡ã®ããã«ããŒã¯ãããŸãã
ãæ¥ç¶ãããŠããŸãããïŒæªçµåïŒã åé¡ã解決ãããŸã§ãã³ãããããŸã
ããã¯äžå¯èœã§ãã
ããšãã°ãTROUBLEãã¡ã€ã«ã§ç«¶åãçºçããŸãããããã¯gitã¹ããŒã¿ã¹ã§ç¢ºèªã§ããŸãã
git mergeå®éš-倱æããããŒãžè©Šè¡ãçºçããŸããã
git status-åé¡é åã調ã¹ãŸãã
ãã©ãã«ã®ç·šé-åé¡ã解決ããŸãã
git addã -å€æŽã«ã€ã³ããã¯ã¹ãä»ããã¿ã°ãåé€ããŸãã
git commit-ããŒãžã³ããããã³ãããããŸãã
ããã ãã§ããè€éãªããšã¯äœããããŸããã 解決ããã»ã¹äžã«ãèš±å¯ã«ã€ããŠèããå€ãã£ãå Žå
競åãå
¥åããã ãïŒ
git reset --hard HEAD-ããã«ãããäž¡æ¹ã®ãã©ã³ããå
ã®ç¶æ
ã«æ»ããŸãã
ããŒãžã³ããããã³ããããããå Žåã次ã®ã³ãã³ãã䜿çšããŸãã
git reset --hard ORIG_HEAD
2.2.4 git rebase-ãã©ãããªã³ãããã©ã€ã³ãæ§ç¯ãã
éçºè
ãå¥ã®ãã©ã³ããéçºããããã®è¿œå ã®ãã©ã³ããæã£ãŠãããšããŸã
æ©äŒãšãã®äžã§ããã€ãã®ã³ããããè¡ããŸããã åæã«
ã¡ã€ã³ãã©ã³ãã§ãã³ããããã³ããããããçç±ïŒããšãã°ã
å€æŽã¯ãªã¢ãŒããµãŒããŒããããŠã³ããŒããããŸãã ãŸãã¯éçºè
èªèº«ãããã«ã³ãããããŸãã
ã³ãããããŸãã
ååãšããŠãéåžžã®
git mergeã§ã§ããŸãã ãããããã®åŸãç·ã¯ããè€éã«ãªããŸã
éçºãããã¯å€§ãããããããžã§ã¯ãã§ã¯æãŸãããããŸããã
å€ãã®éçºè
ã
masterãštopicãšãã2ã€ã®ãã©ã³ãããããããããã«ãã©ã³ãã®ç¬éããããªãã®æ°ã®ã³ãããããã£ããšããŸãã
git rebaseã³ãã³ãã¯ãããã¯ãã©ã³ãããã³ããããååŸãããã©ã³ãã®æåŸã®ã³ãããã«é©çšããŸã
ãã¹ã¿ãŒïŒ
- git-rebaseãã¹ã¿ãŒãããã¯-äœãã©ãã§æ瀺çã«ç€ºããªãã·ã§ã³
æ·»ä»ã
- git-rebase master-çŸåšã¢ã¯ãã£ããªãã¹ã¿ãŒã«ã¹ãŒããŒã€ã³ããŒãºãããŸã
ãã©ã³ãã
ã³ãã³ãã䜿çšããåŸãã¹ããŒãªãŒã¯ç·åœ¢ã«ãªããŸãã çºçæã«
代æ¿ã³ããããšã®ç«¶å
ããŒã ã®äœæ¥ãåæ¢ããåé¡ã®ããé åã«ãã¡ã€ã«ã衚瀺ãããŸã
äžèŽããã¿ã°ã ç·šéåŸ-競å解決-ãã¡ã€ã«
ã€ã³ããã¯ã¹ã«git addãè¿œå ãã次ã®ãªãŒããŒã¬ã€ãç¶è¡ããå¿
èŠããããŸã
git rebase --continueã³ãã³ãã§ã³ãããããŸãã 代æ¿åºåã¯ã³ãã³ãã«ãªããŸã
git rebase --skipïŒãªãŒããŒã¬ã€ã³ããããã¹ãããããŠæ¬¡ã®ã³ãããã«ç§»åïŒãŸãã¯git
rebase --abortïŒã³ãã³ããšè¡ããããã¹ãŠã®å€æŽããã£ã³ã»ã«ããŸãïŒã
-iã¹ã€ããïŒ--interactiveïŒã䜿çšãããšãã³ãã³ãã¯å¯Ÿè©±çã«æ©èœããŸã
ã¢ãŒãã ãŠãŒã¶ãŒã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®é åºã決å®ããæ©äŒãäžããããŸã
å€æŽã¯èªåçã«ãšãã£ã¿ãŒãåŒã³åºããŠç«¶åã解決ããŸãã
ããã«ã
2.2.5 git cherry- pick-å¥ã®ã³ãããã«ããå€æŽããããžã§ã¯ãããªãŒã«é©çšãã
è€éãªéçºå±¥æŽããããããã€ãã®é·ããã©ã³ããããå Žå
éçºãããã¯è¡ãããå€æŽãé©çšããå¿
èŠããããããããŸãã
1ã€ã®ãã©ã³ããå¥ã®ããªãŒïŒçŸåšã¢ã¯ãã£ãïŒãžã®åå¥ã®ã³ããããšããŠã
git cherry-pick BUG_FIX_TAG-æå®ãããã³ãããã«ããå€æŽã¯
ããªãŒã«é©çšãããèªåçã«ã€ã³ããã¯ã¹ä»ããããã¢ã¯ãã£ãã«ã³ããããããŸã
ãã©ã³ãã
git cherry-pick BUG_FIX_TAG -n-ããŒã-nãã¯ãå€æŽãå¿
èŠã§ããããšã瀺ããŸã
ã€ã³ããã¯ã¹ãäœæããŠã³ããããäœæããã«ããããžã§ã¯ãããªãŒã«é©çšããã ãã§ãã
2.3ãã®ä»ã®ã³ãã³ããšå¿
èŠãªæ©èœ
gitã§ã®äœæ¥ã®å©äŸ¿æ§ã®ããã«ãè¿œå ã®æŠå¿µãå°å
¥ãããŸããïŒã¿ã°ã ããã«
ããã·ã¥ã®å¿
èŠæ§ãšãã®é©çšã«ã€ããŠããã«èª¬æããŸãã 瀺ãããæ¹æ³
çžå¯Ÿã¢ãã¬ã¹æå®ã䜿çšããŠã³ãããã«ã¢ã¯ã»ã¹ããŸãã
2.3.1ããã·ã¥-äžæã®ãªããžã§ã¯ãèå¥
gitã§ã¯ããŠããŒã¯ãªãã®ïŒã€ãŸã
æãå¯èœæ§ã®é«ãäžæã®ïŒ40æåã®ããã·ã¥ãããã¯æ±ºå®ãããŸã
ãªããžã§ã¯ãã®å
容ã«åºã¥ããããã·ã¥é¢æ°ã ãªããžã§ã¯ãã¯ãã¹ãŠã§ãïŒã³ãããã
ãã¡ã€ã«ãã¿ã°ãããªãŒã ããã·ã¥ã¯ãããšãã°ãã¡ã€ã«ã®ã³ã³ãã³ãã«å¯ŸããŠäžæã§ããããã
ãã®ãããªãã¡ã€ã«ã®æ¯èŒã¯éåžžã«ç°¡åã§ã-2è¡ãæ¯èŒããã ãã§ã
40æåã§ã
ç§ãã¡ãæãèå³ãæã£ãŠããã®ã¯ãããã·ã¥ãã³ããããèå¥ãããšããäºå®ã§ãã ããã§
ããã·ã¥ã¯Subversionã®é«åºŠãªããŒãžã§ã³ã§ãã ããã€ãã®äŸ
ã¢ãã¬ã¹æå®æ¹æ³ãšããŠããã·ã¥ã䜿çšããïŒ
git diff f292ef5d2b2f6312bc45ae49c2dc14588eef8da2-çŸåšã®å·®ãèŠã€ãã
ãããžã§ã¯ãã®ã¹ããŒã¿ã¹ãšãã®çªå·ã®ã³ããã...
git diff f292ef5ã¯åãã§ãããæåã®6æåã®ã¿ãæ®ããŸãã Git
ãã®ãããªã³ããããä»ã«ãªãå Žåãã©ã®ãããªã³ããããé¢äžããŠããããç解ããŸã
ããã·ã¥ã®å§ãŸãã
git diff f292-æã«ã¯4æåã§ååã§ãã
git log febc32 ... f292-ã³ãããããã³ããããŸã§ãã°ãèªã¿åããŸãã
ãã¡ãããããã·ã¥ã䜿çšããããšã¯ããã·ã³ã®å Žåã»ã©äººã«ãšã£ãŠäŸ¿å©ã§ã¯ãããŸããããã®ããã
ä»ã®ãªããžã§ã¯ããå°å
¥-ã¿ã°ã
2.3.2 gitã¿ã° -äžæã®ã³ããããããŒã¯ããæ¹æ³ãšããŠã®ã¿ã°
ã¿ã°ã¯ãã³ãããã«é¢é£ä»ãããããªããžã§ã¯ãã§ãã ã³ãããèªäœãžã®ãªã³ã¯ã®ä¿åãåå
èè
èªèº«ã®ååãšã³ã¡ã³ãã ããã«ãéçºè
ã¯
ãããã®ã¿ã°ã«ç¬èªã®ããžã¿ã«çœ²åãæ®ããŸãã
ããã«ãããããã軜éã¿ã°ãïŒã軜éã
ã¿ã° "ïŒãååãšã³ããããžã®ãªã³ã¯ã®ã¿ã§æ§æãããŸãã ãããã®ã¿ã°ã¯éåžž
å±¥æŽããªãŒã®ããã²ãŒã·ã§ã³ãç°¡çŽ åããããã«äœ¿çšãããŸãã ãããã®äœæã¯éåžžã«ç°¡åã§ãã
git tag stable-1-æåŸã«é¢é£ä»ããããã軜éãã¿ã°ãäœæããŸã
ã³ãããããŸãã ãã§ã«ã¿ã°ãããå Žåãå¥ã®ã¿ã°ã¯äœæãããŸããã
git tag stable-2 f292ef5-ç¹å®ã®ã³ããããããŒã¯ããŸãã
git tag -d stable-2-ã¿ã°ãåé€ããŸãã
git tag -l-ã¿ã°ããªã¹ãããŸãã
git tag -f stable-1.1-æåŸã®ã³ãããçšã®ã¿ã°ãäœæãã眮ãæããŸã
ååšããå Žåã
ã¿ã°ãäœæããåŸãã³ãã³ãã§ããã·ã¥ã®ä»£ããã«ãã®ååã䜿çšã§ããŸã
git diffãgit logãªã©ïŒ
git diff stable-1.1 ... stable-1
éåžžã®ã¿ã°ã䜿çšããŠã
ããŒãžã§ã³çªå·ãã³ã¡ã³ããªã©ã®æ
å ±ã èšãæããã°ã
ããã®ãããªãã°ãä¿®æ£ãããã³ãããã«ã³ã¡ã³ããæžããŠãããã¿ã°ãžã®ã³ã¡ã³ãã«
ãv1.0ããšããååã¯ããå®å®ããããŒãžã§ã³ãããã«äœ¿çšã§ããããªã©ã§ãã
git tag -a stable-æåŸã®ã³ãããçšã«éåžžã®ã¿ã°ãäœæããŸã; ãšåŒã°ããŸã
ã³ã¡ã³ãçšã®ããã¹ããšãã£ã¿ãŒã
git tag -a stable -m "production version"-ããã«æå®ããŠéåžžã®ã¿ã°ãäœæããŸã
åŒæ°ãšããŠã³ã¡ã³ãããŸãã
éåžžã®ã¿ã°ã®ãªã¹ããåé€ãæžãæãã³ãã³ãã¯ã
ã軜éãã¿ã°ã®ã³ãã³ãã
2.3.3çžå¯Ÿã¢ãã¬ã¹æå®
ãªããžã§ã³ãšã¿ã°ã®ä»£ããã«ãã³ãããã®ååãšããŠå¥ã®ãã®ã«äŸåã§ããŸã
ã¡ã«ããºã -çžå¯Ÿã¢ãã¬ã¹æå®ã ããšãã°ãå
ç¥ã«çŽæ¥è¡ãããšãã§ããŸã
ãã¹ã¿ãŒãã©ã³ãã®æåŸã®ã³ãããïŒ
git diff master ^
ãé³¥ãã®åŸã«æ°åãä»ãããšãè€æ°ã®å
ç¥ã«å¯Ÿå¿ã§ããŸã
ã³ãããã®ããŒãžïŒ
git diff HEAD ^ 2-æåŸã®2çªç®ã®ç¥å
ãšæ¯èŒããŠå€æŽãèŠã€ãã
ãã¹ã¿ãŒã§ã³ãããããŸãã ããã®HEADã¯ãã¢ã¯ãã£ããªãã©ã³ãã®æåŸã®ã³ããããžã®ãã€ã³ã¿ã§ãã
åæ§ã«ããã«ãã¯åã«ãã©ã³ãã®å±¥æŽã®æ·±ãã瀺ãããšãã§ããŸã
ãã€ãã³ã°ããå¿
èŠããããŸãïŒ
git diff master ^^-çŸåšã®ã³ãããã®ãç¥ç¶ããããããããã®ã
git diff masterã2ã¯åãã§ãã
ã·ã³ãã«ãçµã¿åãããŠãç®çã®ã³ããããååŸã§ããŸãã
git diff masterã3 ^ã2
git diff masterã6
2.3.4 .gitignoreãã¡ã€ã« -ç¡èŠãããã¡ã€ã«ãgitã«èª¬æãã
æã
ããããžã§ã¯ããã£ã¬ã¯ããªã«ãåžžã«ä¿åããããªããã¡ã€ã«ãå«ãŸããŠãã
æŠèŠã®git statusãã芧ãã ããã ããšãã°ãè£å©ããã¹ããã¡ã€ã«
ãšãã£ã¿ãŒãäžæãã¡ã€ã«ããã®ä»ã®ãŽãã
ã«ãŒããŸãã¯ããæ·±ãããªãŒãäœæããããšã«ãããgitã¹ããŒã¿ã¹ãç¡èŠã§ããŸã
ïŒå¶éãç¹å®ã®ãã£ã¬ã¯ããªã®ã¿ã«ããå ŽåïŒãã¡ã€ã«
.gitignoreã ãããã®ãã¡ã€ã«ã§ã¯ãç¡èŠããããã¡ã€ã«ã®ãã¿ãŒã³ã説æã§ããŸãã
ç¹å®ã®åœ¢åŒã
ãã®ãããªãã¡ã€ã«ã®å
容ã®äŸïŒ
>>>>>>>ãã¡ã€ã«ã®éå§
ïŒ.gitignoreãã¡ã€ã«ã«ã³ã¡ã³ããã
ïŒ.gitignoreèªäœãç¡èŠ
.gitignore
ïŒãã¹ãŠã®htmlãã¡ã€ã«...
* .html
ïŒ...ç¹å®ã®äŸå€ãé€ã
ïŒspecial.html
ïŒãªããžã§ã¯ããšã¢ãŒã«ã€ãã¯å¿
èŠãããŸãã
*ã[ao]
>>>>>>>>ãã¡ã€ã«ã®çµãã
ç¡èŠã§ãããã¡ã€ã«ãæå®ããæ¹æ³ã¯ä»ã«ããããŸãã
git help gitignore helpããã
3ãå
±ã«åãçºæ®ãããããŸãã¯ãªã¢ãŒããªããžããªã§ã®äœæ¥ã®åºæ¬
åœç¶ãã»ãšãã©ã®ãããžã§ã¯ãã«ã¯ãŸã äœæ¥ãå«ãŸããŠããŸã
ã³ãŒãã亀æããå¿
èŠãããå°ãªããšã2人ã®éçºè
ã 次ã¯
é£æºããããã«å¿
èŠãªã³ãã³ãããªã¹ãããŸã-ãããããªã¢ãŒã-ã
3.1ãªã¢ãŒã远跡ãã©ã³ã
ããã§ã®æ°ããæŠå¿µã¯ããªã¢ãŒããã©ã³ãã§ãã ãªã¢ãŒããã©ã³ãã¯
ãªã¢ãŒããµãŒããŒäžã®ãã©ã³ãïŒéåžžã¯ãã¹ã¿ãŒïŒã ãã®ãããªãã®ã¯ã次ã®å Žåã«èªåçã«äœæãããŸã
ãªã¢ãŒããªããžããªã®ã³ããŒãäœæããŸãã ãã¹ãŠã®ãªã¢ãŒãé¢é£ã³ãã³ã
åäœããããã©ã«ãã§ãã®ç¹å®ã®ãªã¢ãŒããã©ã³ãã䜿çšããŸãïŒéåžžã¯
ããªãªãžã³ããšåŒã°ããŸãïŒã
ãããã®ã³ãã³ããæ€èšããŠãã ããã
3.2 git clone- ïŒãªã¢ãŒãïŒãªããžããªã®ã³ããŒãäœæãã
äžå€®ãªããžããªã䜿çšããã«ã¯ãã³ããŒãäœæããå¿
èŠããããŸã
ããŒã«ã«ã«ãã¹ãŠã®æŽå²ãæã€å
ã®ãããžã§ã¯ãïŒ
git clone / home / username / project myrepo-åããã·ã³ãããªããžããªãè€è£œããŸã
myrepoãã£ã¬ã¯ããªã«ç§»åããŸãã
git clone sshïŒ// user @ somehostïŒport /ãuser / repository-ãªããžããªãè€è£œãã
å®å
šãªsshãããã³ã«ã䜿çšããŸãïŒãã·ã³äžã§ååŸããå¿
èŠããããŸãïŒ
sshã¢ã«ãŠã³ãïŒã
git clone gitïŒ// user @ somehostïŒport /ãuser / repository / project.git /-git has
ããã³ç¬èªã®ãããã³ã«ã
3.3 git fetchãšgit pull- ïŒãªã¢ãŒããã©ã³ãããïŒäžå€®ãªããžããªããå€æŽããã«ããŸã
çŸåšã®ãã©ã³ãããªããžããªãšåæããã«ã¯ãgit fetchãš
git pullã
git fetch-ãªã¢ãŒããã©ã³ãã®å€æŽãããã©ã«ããªããžããªããååŸããŸãã
ã¡ã€ã³ãã©ã³ã; ã¯ããŒã³äœææã«äœ¿çšããããã®
ãªããžããªã å€æŽã«ããããªã¢ãŒã远跡ãã©ã³ããæŽæ°ãããŸã
git mergeã³ãã³ãã§ããŒã«ã«ãã©ã³ããšããŒãžããããã«å¿
èŠãªãã®ã
git fetch / home / username / project-ç¹å®ã®å€æŽãéžæããŸã
ãªããžããªã
git remoteã³ãã³ãã§äœæãããã¢ãã¬ã¹ã«å矩èªã䜿çšããããšãã§ããŸãã
git remote add username-project / home / username / project
git fetch username-project-å®çŸ©ãããã¢ãã¬ã¹ã§å€æŽãååŸããŸã
ãšå矩ã
åœç¶ãããšãã°git diffã³ãã³ãã䜿çšããŠãå€æŽãè©äŸ¡ããåŸã
ã¡ã€ã³ã§ããŒãžã³ããããäœæããŸãã
git merge username-project / master
git pullã³ãã³ãã¯ããã«å€æŽãååŸããã¢ã¯ãã£ããªãã©ã³ããšããŒãžããŸãã
git pull-ãªã¢ãŒããã©ã³ããäœæããããªããžããªããéžæ
ããã©ã«ãã§ã
git pull username-project-ç¹å®ã®ãªããžããªããå€æŽãååŸããŸãã
ååãšããŠãgit pullã³ãã³ãã¯ããã«äœ¿çšãããŸãã
3.4 git push-ãªã¢ãŒããªããžããªã«å€æŽãå ããŸãïŒãªã¢ãŒããã©ã³ãïŒ
å®éšãã©ã³ãã§äœæ¥ãå®è¡ããåŸãã¡ã€ã³ãã©ã³ããšããŒãžããŠã
ãªã¢ãŒããªããžããªïŒãªã¢ãŒããã©ã³ãïŒãæŽæ°ããå¿
èŠããããŸãã ãã®ããã«
git pushã³ãã³ãã䜿çšãããŸãïŒ
git push-äœæããããªã¢ãŒããã©ã³ãã«å€æŽãéä¿¡ããŸã
ããã©ã«ãã§ã¯ããŒãã³ã°ã
git push sshïŒ//yourserver.com/~you/proj.git masterïŒå®éšç-å€æŽãéä¿¡
ãªã¢ãŒããªããžããªã®masterãã©ã³ãããExperimentalãã©ã³ããžã
git push originïŒExperimental-ãªã¢ãŒããªãªãžã³ãªããžããªã§ãexperimentalãã©ã³ããåé€ããŸãã
git push origin masterïŒmaster-ãªãªãžã³ãªããžããªã®ãªã¢ãŒããã¹ã¿ãŒãã©ã³ããžïŒå矩èª
ããã©ã«ããªããžããªïŒããŒã«ã«ãã¹ã¿ãŒãã©ã³ãã®ãã©ã³ãã
4 git-o-day
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãããã€ãã®æ®éã®
gitã®ç¶æ³ã§äœæ¥ããããšã¯çãããããŸããã
4.1ããŒã«ã«ãªããžããªã§äœæ¥ãããšãã®éåžžã®ã¯ãŒã¯ãããŒ
Gitã¯ãé
åžãããŠããã ãã§ãªããéåžžã«äœ¿ãããã
ããŒãžã§ã³ç®¡çã·ã¹ãã ã ãã§ãªããããŒã«ã«ãããžã§ã¯ãã§ã®äœæ¥ã«ãã èŠãŠã¿ãŸããã
éåžžã®ã«ãŒã-ãªããžããªã®äœæããéå§-git developer work
èªåã®å人ãããžã§ã¯ãïŒ
- mkdir git-demo
- cd git-demo
- git init
- git addã
- git commit -m "åæã³ããã"
- gitãã©ã³ãã®æ°æ©èœ
- git checkoutã®æ°æ©èœ
- git addã
- git commit -mãæ°ããæ©èœãå®äºããŸããã
- git checkout master
- git diff HEADæ°æ©èœ
- git mergeã®æ°æ©èœ
- git branch -d new-feature
- git log --since = "1 day"
åã¢ã¯ã·ã§ã³ãåæããŸãããã
1-2-ãããžã§ã¯ãã®äœæ¥ãã£ã¬ã¯ããªãäœæããŸãã 3-ãã£ã¬ã¯ããªã«ãªããžããªãäœæããŸãã 4-ãã¹ãŠã®æ¢åã®ãããžã§ã¯ããã¡ã€ã«ã®ã€ã³ããã¯ã¹ãäœæããŸãïŒãã¡ãããããã§ãã£ãå ŽåïŒã 5-åæåã³ããããäœæããŸãã 6-æ°ãããã©ã³ãã7-ãã©ã³ããžã®åãæ¿ãïŒgit checkout -b new-featureã³ãã³ãã䜿çšãããšã1ã¹ãããã§å®è¡ã§ããŸãïŒãããã«ãã³ãŒããçŽæ¥æäœããåŸãè¡ãããå€æŽã®ã€ã³ããã¯ã¹ãäœæãïŒ8ïŒãã³ãããããŸãïŒ9ïŒãã¡ã€ã³ãã©ã³ãã«åãæ¿ãïŒ10ïŒãã¢ã¯ãã£ããã©ã³ãã®æåŸã®ã³ããããšå®éšçãã©ã³ãã®æåŸã®ã³ãããïŒ11ïŒã®éãã確èªããŸããããŒãžãïŒ12ïŒã競åããªããã°ãäžèŠã«ãªã£ããã©ã³ããåé€ããŸãïŒ13ïŒã念ã®ãããæåŸã®1æ¥ã«å®æœããäœæ¥ãè©äŸ¡ããŸãïŒ14ïŒããªãããã§ããïŒãªãç·åœ¢ã¢ãã«ãæŸæ£ããã®ã§ããïŒããã°ã©ãã«æè»æ§ãè¿œå ããããšããçç±ã ãã§ãã¿ã¹ã¯ïŒãã©ã³ãïŒãåãæ¿ããããšãã§ããå Žåãåžžã«æå
ã«ããã®ã¯ãçŽç²ãªããã¹ã¿ãŒãã©ã³ãã§ããã³ãããã¯ããå°ãããããæ£ç¢ºã«ãªããŸãã4.2ãªã¢ãŒããªããžããªã§äœæ¥ãããšãã®ã¯ãŒã¯ãããŒ
ããªããšããªãã®ããŒãããŒã®ããã€ãããå
±éã®ãããžã§ã¯ããåŒãåããããã«å
¬éãªããžããªãäœæãããšä»®å®ããŸããgitã®æãäžè¬çãªäœæ¥ã¢ãã«ã¯ã©ã®ãããªãã®ã§ããïŒ- git clone http://yourserver.com/~you/proj.git
...ãã°ããæéãçµã£ããããããŸããã
- git pull
- git diff HEAD ^
- git checkout -b bad-feature
...ãã°ããåäœããŠããŸãã
- git commit -a -mãæªãæ©èœãäœæããŸããã
- git checkout master
- git pull
- git merge bad-feature
- git commit -a
- git diff HEAD^
⊠, , - . ãã£ãš
- git reset --hard ORIG_HEAD
- git checkout bad-feature
⊠.
- git -m bad-feature good-feature
- git commit -a -m «Better feature»
- git checkout master
- git pull
- git merge good-feature
- git push
- git branch -d good-feature
ãã®ããããŸãæåã«createïŒ1ïŒãªã¢ãŒããªããžããªã®ã³ããŒãäœæããŸãïŒããã©ã«ãã§ã¯ãgit pullãgit pushãªã©ã®ã³ãã³ããæ©èœããŸãïŒãææ°ã®æŽæ°ãããã«ãããïŒ2ïŒãäœãå€ãã£ãã®ããèŠãïŒ3ïŒ;æ°ãããã©ã³ããäœæããŠãããã«åãæ¿ããŸãïŒ4ïŒããã¹ãŠã®å€æŽã«ã€ã³ããã¯ã¹ãä»ããåæã«ãããããã³ããããäœæããŸãïŒ5ïŒãã¡ã€ã³ãã©ã³ãã«åãæ¿ãïŒ6ïŒãæŽæ°ããŸãïŒ7ïŒãå®æœïŒ8ïŒåå²æªã-æ©èœãšã®å䜵ãããçŽäºãçºèŠãã解決ããããã«ãæã
ã¯ãã³ãããè¡ãå䜵ïŒ9ïŒãã³ãããåŸãå€æŽã远跡ãïŒ10ïŒãããšãã°åäœãã¹ããå®è¡ããããŒãžåŸã«ãããžã§ã¯ããã»ãšãã©ã®ãã¹ãã«è©²åœããããšãææã§èŠã€ããŸããååãšããŠããã¹ãã¯ã³ãããã®åã«ãããŒãžã®æç¹ã§å®è¡ã§ããŸãïŒãã€ã³ã8ãš9ã®éïŒãããœãããã«ããã§ååã§ãããããã£ãŠãçºçããããŒãžããããŒããïŒ11ïŒãªã»ããããå¿
èŠãããããã©ã³ãã¯å
ã®ç¶æ
ã«æ»ããŸããã次ã«ã倱æãããã©ã³ãã«åãæ¿ãïŒ12ïŒãå¿
èŠãªå€æŽãå ããŠããã©ã³ãã®ååãå€æŽããŸãïŒ13ïŒãã³ãããïŒ14ïŒãã³ããããã¡ã€ã³ãã©ã³ãã«ç§»åãïŒ15ïŒãå床æŽæ°ããŸãïŒ16ïŒãä»åã¯ã·ãŒã ã¬ã¹ã«ããŒãžãïŒ17ïŒããªã¢ãŒããªããžããªã«å€æŽããããããïŒ18ïŒãäžèŠã«ãªã£ããã©ã³ããåé€ããŸãïŒ19ïŒãç§ãã¡ã¯ã©ããããããéããæãçãŠãæã«åž°å®
ããŸãã5çµè«
ãã®ãããã¯ã§ã¯ããããªãã¯ãªããžããªã®ç®¡çãããã¹ããšãã£ã¿ãŒãŸãã¯IDEãšã®çµ±åãLinuxããã³Windowsã§ã®SSHã®äœ¿çšãªã©ãããã€ãã®éèŠãªåé¡ã«å¯ŸåŠããŠããŸãããã³ã¡ã³ããç¹ã«git-o-dayã»ã¯ã·ã§ã³ãžã®è¿œå ãæè¿ããŸããUPDïŒãªã¢ãŒããªããžããªã®æäœã«é¢ãã泚æã管çããããªãã¯ãªããžããªã®äœæãã¢ã¯ã»ã¹å¶åŸ¡ãæå·åãããæ¥ç¶ã®äœ¿çšãªã©ã§gitã䜿çšããå Žåãç¹å®ã®è³ªåãçºçããå¯èœæ§ããããŸããããã«ããã®ããŒãã§ã¯ããããã¯ãããªãæ¹æ³ã§ãã«ããŒãããŠããŸãããããšãã°ãæ¢è£œã®ãªã¢ãŒããªããžããªã®æäœã«ã€ããŠã¯äžèšã§èª¬æããŠããŸãããã®å±éã¯ããããªãæ¹æ³ã§ãã«ããŒãããŠããŸãããããããã¹ãŠãä»ãå¥ã®ãããã¯ã§åéããŠããŸããããã1é±éåã§ããã«æããŸãã