å ¥éGit (Chapter8)
- Chapter 1 ã 4
- Chapter 5 ã 6
- Chapter 7
ãã®ç« ã¯7ç« ã®ç¶ãã®ãããªæãã«ãªã£ã¦ãã¦ãè¤æ°äººã§ã®éçºã®æ¹æ³ã«ã¤ãã¦æ¸ããã¦ãã¾ãã
åºæ¬çãªæµã
ãgit cloneããã
- ã¾ãã¯ãªãã¸ããªãã¨ã£ã¦ãã¾ãã
% git clone /path/to/public/myproject.git myproject
ãgit branchãã§ãã©ã³ãã確èªããã
- ãgit branchãã§ãã¼ã«ã«ã«ãããã©ã³ãã®ç¢ºèªãåºæ¥ã¾ããæåã¯masterã ãã§masterã鏿ããã¦ããç¶æ ã«ãªã£ã¦ãã¾ãã
% git branch * master
- ã-rããªãã·ã§ã³ãä»ããã¨ãªã¢ã¼ãã®ãã©ã³ãã表示ãããã¨ãåºæ¥ã¾ãã
# maintãã©ã³ãããªã¢ã¼ãã«ããå ´å % git branch -r origin/HEAD -> origin/master origin/maint origin/master
- ãã®ãã©ã³ãã«ç´æ¥ã³ããããããã¨ã¯åºæ¥ã¾ããããlogãªã©ã確èªãããã¨ã¯åºæ¥ã¾ããã¾ãä¸è¨ã®ããã«æå®ãããã¨ã§ãã©ã³ãã®æ¯è¼ãåºæ¥ã¾ãã
- ããã¯ä¾¿å©ãªã®ã§ç©æ¥µçã«ä½¿ãããã§ãã
# origin/masterãã©ã³ãã«ã®ã¿åå¨ããã³ãããã表示 % git log master..origin/master # ãã¼ã«ã«ã®masterãã©ã³ãã®ã¿ã«åå¨ããã³ãããã®ã¿ã表示 % git log origin/master..master # ä¸è¨ã®ä¸¡æ¹ã表示ã(ã.ããï¼ã¤ã«ãªã£ã¦ãã) % git log origin/master...master # --left-right ãªãã·ã§ã³ãä»ããã¨ã©ã®ã³ããããã©ã£ã¡ã®ãã©ã³ãã«åå¨ãã¦ãããã確èªã§ãã % git log --left-right master...origin/master
使¥ç¨ã®ãã©ã³ããä½ã
- masterãã©ã³ããããã±ããçªå·ã199ã®ãã°ãã£ãã¯ã¹ããããã©ã³ããä½ãå ´åã¯ãããªæãã§ããããã
% git checkout -b bugfix-199 master
- å ã¨ãªããªãã¸ããªã«ã¯ãorigin/masterãã®ããã«ãªã¢ã¼ããã©ã³ããæå®ãããã¨ãåºæ¥ã¾ãã
ãã¼ã¸ãã¦ããã·ã¥
- ã¾ãã¯masterã«ãªã¢ã¼ããªãã¸ããªã®ææ°ãåæ ããã¾ãã
% git checkout master % git pull
- ãã¼ã¸ãã
% git merge bugfix-199
- ãªã¢ã¼ããªãã¸ããªã«åæ
% git push origin master
ãªãã¼ã¹ãã¦ã¾ã¨ãã
- ä¸è¨ã®æ¹æ³ã ã¨ãã³ãããããªã¼ã«åå²ãå¤ãçºçãããã¨ã«ãªãã®ã§ã¡ãã£ã¨ãããã«ããé¨åãããã¾ãã
- ã¾ãã夿´ãå¸¸ã«ææ°ã®ã³ããããå ã«ãã¦è¡ããã¦ãããã¨ãè¦æ±ããããã¨ãããã¾ãã®ã§ããã®å ´åã¯ãªãã¼ã¹ããã¦ã³ããããï¼ç´ç·ã«ãªãããã«ãã¾ãã
- ãªãã¼ã¹ãç°¡åã«åºæ¥ãã®ã§ããã°ãªãã¼ã¹ããã®ãå ±å使¥ã«åå ããã¡ã³ãã¼ã®ãããã¤ãã¨ãããã¾ãããªãã»ã©ãè¦ãã¦ããã¾ãã
ãããã¯ãã©ã³ãã§rebase
# masterãã©ã³ããææ°ã®ç¶æ ã« % git checkout master % git pull # ãããã¯ãã©ã³ãã§rebaseãã # (ãããã¯ãã©ã³ãã®å¤æ´ãmasterã®ææ°ç¶æ ããããããã¨ã«ãã¦ããã) % git checkout bugfix-199 % git rebase master bugfix-199 # masterãã©ã³ãã«ãã¼ã¸ãã % git checkout master % git merge bigfix-199
ã³ã³ããªã¯ãããå ´å
- rebaseããæã«ã³ã³ããªã¯ããçºçããå ´åã¯ãä¸è¨ã®ããã«ãã¦rebaseãã¾ãã
% git rebase master bugfix-199 First, rewinding head to replay your work on top of it... : When you have resolved this problem run "git rebase --continue". If you would prefer to skip this patch, instead run "git rebase --skip". To restore the original branch and stop rebasing run "git rebase --abort". # ãæåã§ãã¼ã¸ããã # ãã¼ã¸ããå 容ãã¤ã³ããã¯ã¹ã«è¨æ¶ % git add . # continueãªãã·ã§ã³ä»ãã¦rebase % git rebase --continue master bugfix-199 % git checkout master % git merge bigfix-199
ãããã¯ãã©ã³ããå ±æãã
- ããã§ã¯ãããã¯ãã©ã³ããå ±æããæ¹æ³ã¨ãã¦ãåãµã¼ãã¼ä¸ã§å ±æããæ¹æ³ã¨ãªã¢ã¼ããªãã¸ããªã®ãããã¯ãã©ã³ãå ±æããæ¹æ³ãç´¹ä»ããã¦ãã¾ãããåãµã¼ãã¼ã§è¤æ°ã¦ã¼ã¶ã¼ããããã¯ãã©ã³ããå ±æããã·ãã¥ã¨ã¼ã·ã§ã³ã¯ãã¾ããªããããªã®ã§çç¥ã
ãªã¢ã¼ãã®ãããã¯ãã©ã³ããå ±æ
- ã¾ãã¯ãããã¯ãã©ã³ããä½ã£ã¦ãªã¢ã¼ããªãã¸ããªã«pushãã¾ãã
% git checkout -b share-topic ãé©å½ã«ç·¨éãã¦ã³ãããã # originã«share-topicãããã·ã¥ % git push origin share-topic
- å¥ã®ã¦ã¼ã¶ã¼ã§share-topicãæã£ã¦ãã¾ãã
# ã¾ã topicãã©ã³ãã¯è¦ããªã % git branch -r origin/HEAD -> origin/master origin/master ï¼fetchããã¨è¦ããããã«ãªãã¾ã % git fetch % git branch -r origin/HEAD -> origin/master origin/master origin/share-topic
- ãã£ã¡ãããããã·ã¥ãã¾ãã
% git checkout -b share-topic origin/share-topic ãé©å½ã«ç·¨éãã¦ã³ãããã % git push origin share-topic
- ãããã¯ãã©ã³ãä½ã£ãæ¹ãã夿´ãåãè¾¼ã
# æ¬ã«è¼ã£ã¦ããæ¹æ³ã¯ãã£ã¡ % git fetch origin % git rebase origin/share-topic # èªåã§æãã¤ããæ¹æ³ % git pull origin share-topic
- ãã®æ¹æ³ã®æ¬ ç¹ã¨ãã¦ã¯ãã¿ããªã«share-topicãã©ã³ããè¦ãã¦ãã¾ãã¨ãããã¨ãããã¾ãã
- æ£ç´ãã®ç« ã§ã¯ãgit fetchãã³ãã³ãããã¾ãã¡ããçè§£åºæ¥ãªãã£ãã§ããå¾ã§åºã¦ããã®ããªï¼
ãããããå ¬éãªãã¸ããªãæã¤æ¹æ³
- å ç¨ã®ä¾ã®ããã«ãä¸å¤®ã®ã¿ããªã§ä½¿ãå ±æãªãã¸ããªã«ãããã¯ãä½ãã®ã§ã¯ãªãããããããå ¬éãªãã¸ããªãæã£ã¦èª°ãã«ç¢ºèªãã¦æ¬²ããæãä¸ç·ã«ä½æ¥ããå ´åã¯ãããã使ãããã«ããæ¹æ³ã§ãã
- å人ç¨ã®å ¬éãªãã¸ããªãä½ã
# å ±ç¨ãªãã¸ããªã使 % mkdir -p /Users/bob/git/pub/bob/project.git % cd /Users/bob/git/pub/bob/project.git && git init --bare --shared # bobã¨ããååã§ä½æãããªãã¸ããªãåç §åºæ¥ãããã«ãã % git remote add bob /Users/bob/git/pub/bob/project.git % cd /Users/bob/git/project.git % git checkout -b bob-topic ãç·¨éãã¦ã³ãããã # bobã«ããã·ã¥ãã % git push bob bob-topic
- å¥ã¦ã¼ã¶ã¼ããåç §ãã
# bobã§åç §åºæ¥ãããã«ãã % git remote add bob /Users/bob/git/pub/bob/project.git # fetchãã % git fetch bob % git checkout -b bob-topic bob/bob-topic ãç·¨éãã¦ã³ãããã # ããã·ã¥ãã % git push bob bob-topic
- bobããåãè¾¼ã
% git pull bob bob-topic # or % git fetch bob % git merge bob/bob-topic
- ãã¡ããã¡ãè²ã
ãã¦ãã¾ãããããã§ã®ãã¤ã³ãã¯ãgit remote add
ãã§ãªãã¸ããªã«å¥åãä»ãããã¨ãåºæ¥ãã£ã¦ãã¨ã§ããããã
pullã¨fetchã¨rebase
- fetchã¯ãFETCH_HEADãã«ãªã¢ã¼ããªãã¸ããªã®å¤æ´ãåãè¾¼ãã§ããã¦ããããã§ããå¤åãã
- ãããã®è²ããªæ å ±ãè¦ãéãgit pullã¯ä¸è¨ã®ã³ãã³ãã¨åæ§ã®ããã§ãã
# git pull origin master ã¯ä¸è¨ï¼ã¤ã®ã³ãã³ããå®è¡ããã®ã¨åã % git fetch origin master % git merge origin/master
- mergeã®ä»£ããã«rebaseãããå ´åã¯ãpullã«rebaseãªãã·ã§ã³ãä»ããã°ããã¨æãã¾ãã
# git pull --rebase origin master ã¯ä¸è¨ï¼ã¤ã®ã³ãã³ããå®è¡ããã®ã¨åã % git fetch origin master % git rebase origin/master
- å人çã«ã¯ããgit pullãã¯rebaseãããã©ã«ãã§mergeããªãã·ã§ã³ã®æ¹ãèªç¶ãªã®ã§ãããã
- ãã¼ãããããã¦è¦ãã¨èªåãçè§£åºæ¥ã¦ããªãã®ããããããã¾ããã
- ä¸è¨ã§ã¯çµ±åãã©ã³ãã®å¤æ´ããããã¯ãã©ã³ãã«ãã¼ã¸ãã¾ãã£ã¦ãã¾ãããããããã¯ãã©ã³ãã¯ãã®ãããã¯ãéæãããã¨ãç®çãªã®ã§ããããã¨çµ±åãã©ã³ãã®æ´æ°ããã¼ã¸ãã¦ã¯ãããªãã¨æå¾ã«ããã¾ããã
- èã«å½ãã¦ããã¨ãããã¨ã§ããã
- 次ã¯ã夿´å±¥æ´ã追ãããããã¨ããããã¾ã§ã¨ã¯ã¡ãã£ã¨ãã¼ãã®éãç« ã«ãªã£ã¦ãããã§ãã