#pyfes 㧠git-daily ã«ã¤ãã¦è©±ãã¦ãã¾ãã
git-daily ã«ã¤ã㦠#pyfes ã§è©±ãã¦ãã¾ããã
- git-daily: git-daily
- #pyfes: Python Developers Festa 2011.10 を開催します - Twisted Mind
Webã¢ããªã±ã¼ã·ã§ã³éçºã«ãããGitã®ãã©ã³ãéç¨æ¦ç¥ã«ã¤ãã¦ã®è©±ã§ãã
ããã±ã¼ã¸ãã®ã®éçºãªã©ã¨å¤§ããç°ãªãã®ã¯ãã¯ããªãªã¼ã¹é »åº¦ãããªãªã¼ã¹ç°å¢ã§ãããããã¤ãµã¼ããç»å ´ããã¨ãããããããã¨ã§ãã *1
ã¡ãªã¿ã«ãã®ã¸ãã®ãæ¦è¦çãªè©±ã¯ãGREEã®ããã¨ã³ã¸ãã¢ããã°ã«ãæ¸ãã¾ããã®ã§ããã¡ããåç §ãã ããã
çºè¡¨è³æ
SpeakerDeck ã«ããã¾ãã (ã¯ã¦ãªã«åãè¾¼ããããã«ãªããªãããªã¼)
demo ã®å 容
demoã¯ã³ãã³ãã®åãæ¿ããéããã¦æµããèªããªãçãªæãã«ãªã£ã¦ãã¾ã£ã¦ãã¿ã¾ãããè¯ãæ©ä¼ãªã®ã§ãå³ã¨ä¸ç·ã«ã¾ã¨ããããã¨æãã¾ãã
åæã¨ã¹ãã¼ãªã¼
以ä¸ã®è©±ã¯gitflowã®ãã©ã³ãã¢ãã«ãæ¡ç¨ããgit-dailyã§ã®ãªãªã¼ã¹ä½æ¥ã®ããã¼ã§ããã
åæ:
- éçºè A (a_dev) ããã¨éçºè B (b_dev)ãdeployãµã¼ã(deploy)ãGitãªãã¸ããªãµã¼ã(server)ããã¾ã
- Gitãµã¼ãã¯ãGitHub ã§ã gitosis ã§ã代ããã¾ãããbareãªãã¸ããªãä¿æãã¦ãã¦ã¢ã«ã¦ã³ã管çããã¦ãããªã¢ã¼ãã®ãµã¼ãã ã¨æã£ã¦ãã ãã
- deployãµã¼ãã§ããªãªã¼ã¹ããã¼ã¸ã£çãªäººãããªãªã¼ã¹ãã©ã³ãåã£ããmasterã«ãã¼ã¸ãã人ã ã£ãããã¾ãã
ã¹ãã¼ãªã¼:
- Aããããªãã¸ããªãä½æããserverã«ãããcloneãã¾ã
- AãããBããã¯developãã©ã³ãã§éçºãé²ãã¾ã
- developãã©ã³ãã®éçºãããç¨åº¦ã¾ã¨ã¾ã£ã¦ãªãªã¼ã¹ãããã¨ããç¶æ³ã«ãªãã¾ã
- deployãµã¼ãã§ããªãªã¼ã¹ããã¼ã¸ã£çãªäººããªãªã¼ã¹ä½æ¥ãéå§ãã¾ãã
- ãªãªã¼ã¹åã«ãä¿®æ£ãå¿ è¦ãªãã¨ããããã¾ãããBãããæå ã§ä¿®æ£ãã¦ãªãªã¼ã¹ãã©ã³ãã«pushãã¾ãã
- ä¿®æ£ãå®äºãããªãªã¼ã¹ãã©ã³ããproductionã«ãããã¤ãã¾ããããã®å¾ãdeployãµã¼ãã§releaseãéããä½æ¥ããã¾ãã
- åéçºè ã¯ãsyncãããã¨ã§remoteã§éãããããªãªã¼ã¹ãã©ã³ããããã¼ã«ã«ããæé¤ãã¾ãã
â»ã³ãã³ãã®ãã°ä¸ã«ããå³ã«åºã¦ãã®ã¯RPROMPTã§ãããã£ã¬ã¯ããªåã¨ããã©ã³ãåãåºã¦ã¾ãã
ãªãã¸ããªã®ä½æã¨serverã¸ã®clone
ã¾ãåºæ¬çãªã¨ããã§ãããAããããªãã¸ããªãä½æãã¦serverã«cloneãã¾ããserverã«clone ããã¨ããã§ãããserverãããBããã®éçºç°å¢ãªã©ã¯ããã¹ã¦å¥ã®ãµã¼ãã«ããåæã§ãã
ä»åã¯ãdemoã·ãã¥ã¬ã¼ã·ã§ã³ã«ã¤ãã¦ã¯ãåããµã¼ãå
ã§ããã¾ããããã£ã¬ã¯ããªãããããã®éçºç°å¢/ãµã¼ãã«å¯¾å¿ããã¨æã£ã¦ãã ãããã¾ããRPROMPTã«ãã£ã¬ã¯ããªååºãã¦ããã®ã§ãcd ã¨ãæ¸ãã¦ãªãã®ã«ãã£ã¬ã¯ããªç§»åãã¦ãå ´åã¨ãã¯ãã£ã¡ãè¦ã¦å¤æãã¦ãã ããï¼ã¨ãããï¼
ãã¢ã«ç¨ãããã£ã¬ã¯ããªãæåã¯ç©ºã§ãã
% ls -la [~/tmp/gitdaily-demo] åè¨ 8 drwxr-xr-x 2 sotarok sotarok 4096 2011-10-15 16:10 . drwxr-xr-x 50 sotarok sotarok 4096 2011-10-15 13:59 ..
Aããããªãã¸ããªãä½æ
% mkdir a_dev [~/tmp/gitdaily-demo] % cd a_dev [~/tmp/gitdaily-demo] % git init [tmp/gitdaily-demo/a_dev] Initialized empty Git repository in /home/sotarok/tmp/gitdaily-demo/a_dev/.git/ % touch README [tmp/gitdaily-demo/a_dev @master] % git add README [tmp/gitdaily-demo/a_dev @master] % git commit -m "initialize" [tmp/gitdaily-demo/a_dev @master] [master (root-commit) d7a313d] initialize 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 README
ããã§ãªãã¸ããªãä½æããã¾ãããä»åã¯ãgitosisãªã©ãç¨ããªããããserver ã¨ãããã£ã¬ã¯ããªåã§mirrorãä½æãã¾ãã--mirrorã¯ãbareãªãã¸ããªã¨ãã¦cloneããã¨ããæå³ã§ãã
% git clone --mirror a_dev ./server [~/tmp/gitdaily-demo] Cloning into bare repository ./server... done. % ls server [~/tmp/gitdaily-demo] HEAD config hooks objects refs branches description info packed-refs
Aããããããoriginã¨ãã¦remoteã«è¿½å ãã¾ããããã§ããªãã¨ãªãGitHub <-> éçºè ãã¨ãã社å ã®Gitãµã¼ã <-> éçºè ãã®é¢ä¿æ§ãã¤ã¡ã¼ã¸åºæ¥ãç¶æ ã«ãªã£ãã¨æãã¾ãã
% cd a_dev [~/tmp/gitdaily-demo] % git remote add origin ../server [tmp/gitdaily-demo/a_dev @master] % git remote [tmp/gitdaily-demo/a_dev @master] origin % git fetch origin [tmp/gitdaily-demo/a_dev @master] From ../server * [new branch] master -> origin/master % git branch -a [tmp/gitdaily-demo/a_dev @master] * master remotes/origin/master
developãã©ã³ãã®ä½æã¨Bããã®éçºã¸ã®åå
develop ãã©ã³ã㯠master ãã©ã³ãããã®æ´¾çã§ä½ãã¾ããã¾ãããããoriginã«ãpushãã¾ãã
% git branch -a [tmp/gitdaily-demo/a_dev @master] * master remotes/origin/master % git checkout -b develop [tmp/gitdaily-demo/a_dev @master] Switched to a new branch 'develop' % git push -u origin develop [tmp/gitdaily-demo/a_dev @develop] Total 0 (delta 0), reused 0 (delta 0) To ../server * [new branch] develop -> develop Branch develop set up to track remote branch develop from origin.
ç¶ãã¦ãAããã®ãã¼ã«ã«ã§ãgit daily initãã¦ããã¾ããmasterã¨ãã©ãããï¼ã¨ãèããã¾ãããããã§ä»ã®ãã©ã³ãåãæå®ãããã¨ãå¯è½ã§ããä½ãå ¥åããªããã°ãããã©ã«ãã§ãã
% git daily init [tmp/gitdaily-demo/a_dev @develop] Your remote is [origin] Name master branch [master]: Name develop branch [develop]: git-daily completed to initialize.
ç¶ãã¦ãBããã®ç°å¢ãæ´ãã¾ããBããã¯ãæåãã server ãã clone ãã¦ãã¾ããã¾ããgit daily init ããã¦ããã¾ãã
% git clone server ./b_dev [~/tmp/gitdaily-demo] Cloning into ./b_dev... done. % cd b_dev [~/tmp/gitdaily-demo] % git log [tmp/gitdaily-demo/b_dev @master] commit d7a313d863aa1938d4aff0caf43460e30562ffb7 Author: Sotaro KARASAWA <[email protected]> Date: Sat Oct 15 16:11:16 2011 +0900 initialize % git daily init [tmp/gitdaily-demo/b_dev @master] Your remote is [origin] Name master branch [master]: Name develop branch [develop]: git-daily completed to initialize. % git branch -a [tmp/gitdaily-demo/b_dev @develop] * develop master remotes/origin/HEAD -> origin/master remotes/origin/develop remotes/origin/master
ã¾ããdeployãµã¼ãã¨ããä½ç½®ã¥ãã§ã deployã¨ãããã£ã¬ã¯ããªã«ã clone ãä½ã£ã¦ git daily init ãã¦ããã¾ãã(çµæçç¥)
% git clone server ./deploy [~/tmp/gitdaily-demo] % cd deploy [~/tmp/gitdaily-demo] % git daily init [tmp/gitdaily-demo/deploy @master] % git branch -a [tmp/gitdaily-demo/deploy @develop] * develop master remotes/origin/HEAD -> origin/master remotes/origin/develop remotes/origin/master
ããã¾ã§ã®ç¶æ³ãå³ã«ããã¨ä»¥ä¸ã®ãããªãããã§ãã(a_devæå¤ã®ãªãã¸ããªå
é¨ã®æ§æã¯çç¥)
ãªãªã¼ã¹ãããç¶æ³ãdeployãµã¼ãã§releaseä½æ¥ã®éå§
developãã©ã³ãã§éçºããããããã¦ãã°ãããã£ãã¨ãã¾ãããããªãªã¼ã¹ãã¦ãè¯ãããªãã¨æããç¶æ³ã«ãªã£ãã¨ãã¾ãã
以ä¸ã¯Aããã®æå ã®developãã©ã³ãã§ããéçºä¸ãoriginã¸ã®push/pullã¯é©å®è¡ããã¦ãããã®ã¨ãã¾ãããã®ä¾ã§ã¯ã--decorateãã¦ã¿ã¦masterãããéçºã2ã³ãããåé²ãã§ãããã¨ããããã¾ãã
% git log --oneline --graph --all --decorate * efbe37b (HEAD, origin/develop, develop) modify comment * 107be63 added sample * d7a313d (origin/master, master) initialize
ãã¦ãdeployãµã¼ãã§ããªãªã¼ã¹ããã¼ã¸ã£çãªäººããrelease openãã¾ããç¾å¨ã¯ãã¾ã ä¸çªæåã«cloneããã ãã®ç¶æ ã§ãã
% cd deploy [~/tmp/gitdaily-demo] % git log --oneline --graph --all --decorate [~/tmp/gitdaily-demo/deploy @develop] * d7a313d (HEAD, origin/master, origin/develop, origin/HEAD, master, develop)
git daily release open ããã¨ãæ¥ä»ã§releaseãã©ã³ããä½æãããèªåçã«remoteã«pushããã¾ããããã¡ãªã¿ã«ææ°ã®developãremoteããåå¾ãããå¾openããã¾ãã
% git daily release open [tmp/gitdaily-demo/deploy @develop] [INFO] first, fetch remotes Confirm: create branch release/20111015-1635 from develop ? [yN] : y [INFO] merge develop branch from remote [INFO] create release branch: release/20111015-1635 [INFO] push to remote: origin To /home/sotarok/tmp/gitdaily-demo/server * [new branch] release/20111015-1635 -> release/20111015-1635 release opened % git branch -a [tmp/gitdaily-demo/deploy @release/20111015-1635] develop master * release/20111015-1635 remotes/origin/HEAD -> origin/master remotes/origin/develop remotes/origin/master remotes/origin/release/20111015-1635 % git log --oneline [tmp/gitdaily-demo/deploy @release/20111015-1635] efbe37b modify comment 107be63 added sample d7a313d initialize
ãã®ç¶æ ã§ããããã¤ãµã¼ããããstagingãµã¼ããªã©ã¸deployãã確èªä½æ¥ãªã©ãããããã§ããã以ä¸ã§ã¯ããã¨ãã° capistrano (ããå®éè¨å®ã¨ãä½ã£ã¦ãªããã©)
% cap staging deploy [tmp/gitdaily-demo/deploy @release/20111015-1635]
ããã¾ã§ãå³ã«ããã¨ä»¥ä¸ã®ãããªæãã§ãã
releaseãã©ã³ãä¸ã§ä¿®æ£ä½æ¥
ãã¦ãstagingç°å¢ãªã©ã§ãã¹ãããã¦ãããããã®ã¾ã¾ã§ã¯ãªãªã¼ã¹ã§ããªããä¿®æ£ããããªã¼ãã¨ããç¶æ³ãçºçãã¾ããã
ãã®ä¿®æ£ã¯Bãããæ
å½ãããã¨ã«ãã¾ãã
Bããã¯ãæåãrelease ãã©ã³ãããã¼ã«ã«ã«ãã£ã¦ãã¾ãããremoteã«ãããªãç¶æ ã§ããã
% git branch -a [tmp/gitdaily-demo/b_dev @develop] * develop master remotes/origin/HEAD -> origin/master remotes/origin/develop remotes/origin/master remotes/origin/release/20111015-1635
ããã§ãgit daily release sync ãã¾ããããã¨ãremoteã«ããreleaseãã©ã³ãããã¼ã«ã«ã®ãã©ã³ãã¨ãã¦ãã§ãã¯ã¢ã¦ãããã¾ãã
% git daily release sync [tmp/gitdaily-demo/b_dev @develop] [INFO] first, fetch remotes [INFO] cleanup remote [INFO] checkout and tracking release/20111015-1635 Switched to a new branch 'release/20111015-1635' Branch release/20111015-1635 set up to track remote branch release/20111015 -1635 from origin. start to tracking release branch % git branch -a [tmp/gitdaily-demo/b_dev @release/20111015-1635] develop master * release/20111015-1635 remotes/origin/HEAD -> origin/master remotes/origin/develop remotes/origin/master remotes/origin/release/20111015-1635
ä¿®æ£ä½æ¥ãããã³ããããããããä¸åº¦ sync ãããã¨ã§ãpush ããã¾ãããã°ã確èªããã¨ããã¼ã«ã«ã®ã»ãã1ã¤ã ãã³ããããé²ãã§ããç¶æ ã§ããï¼releaseãã©ã³ãã«ã1ã¤ä¿®æ£ã³ããã)
% git status [tmp/gitdaily-demo/b_dev @release/20111015-1635] # On branch release/20111015-1635 # Your branch is ahead of 'origin/release/20111015-1635' by 1 commit. # nothing to commit (working directory clean) % git log --oneline --decorate aba974f (HEAD, release/20111015-1635) fixed: not PHP but Python efbe37b (origin/release/20111015-1635, origin/develop) modify comment 107be63 added sample d7a313d (origin/master, origin/HEAD, master, develop) initialize % git daily release sync [tmp/gitdaily-demo/b_dev @release/20111015-1635] [INFO] first, fetch remotes [INFO] cleanup remote [INFO] git pull [INFO] run git pull origin release/20111015-1635 From /home/sotarok/tmp/gitdaily-demo/server * branch release/20111015-1635 -> FETCH_HEAD Already up-to-date. pull completed [INFO] git push [INFO] run git push origin release/20111015-1635 To /home/sotarok/tmp/gitdaily-demo/server efbe37b..aba974f release/20111015-1635 -> release/20111015-1635 push completed
ãã㧠release ãã©ã³ãã®ä¿®æ£ãå®äºããã®ã§ãdeployãµã¼ãã§å度 sync ãã¦ãã®ä¿®æ£ãåå¾ããå度stagingãªã©ã«deployã確èªä½æ¥ãªã©ããã¾ãã
% git daily release sync [tmp/gitdaily-demo/deploy @release/20111015-1635] [INFO] first, fetch remotes [INFO] cleanup remote [INFO] git pull [INFO] run git pull origin release/20111015-1635 From /home/sotarok/tmp/gitdaily-demo/server * branch release/20111015-1635 -> FETCH_HEAD Updating efbe37b..aba974f Fast-forward sample.php | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) pull completed [INFO] git push [INFO] run git push origin release/20111015-1635 Everything up-to-date push completed % cap staging deploy [tmp/gitdaily-demo/deploy @release/20111015-1635]
ããã¾ã§ãå³ã«ããã¨ä»¥ä¸ã®ãããªæãã§ãã
確èªãå®äºãããªãªã¼ã¹ä½æ¥ãçµäºãã¾ã
statingã§ç¢ºèªãå®äºããproductionã«ãããã¤ãã¾ãã
% cap production deploy [tmp/gitdaily-demo/deploy @release/20111015-1635]
deployãµã¼ãã§ãrelease close ãã¾ããã¾ããã°ç¢ºèªã
% git log --oneline --decorate --graph * aba974f (HEAD, origin/release/20111015-1635, release/20111015-1635) fixed * efbe37b (origin/develop, develop) modify comment * 107be63 added sample * d7a313d (origin/master, origin/HEAD, master) initialize
ãã¦ãcloseã§ãã
% git daily release close [INFO] first, fetch remotes [INFO] diff check [INFO] checkout master and merge release/20111015-1635 to master [INFO] run git pull origin master From /home/sotarok/tmp/gitdaily-demo/server * branch master -> FETCH_HEAD Already up-to-date. pull completed Merge made by recursive. sample.php | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) create mode 100644 sample.php [INFO] push master to origin To /home/sotarok/tmp/gitdaily-demo/server d7a313d..f62dba1 master -> master [INFO] first, fetch remotes [INFO] diff check [INFO] checkout develop and merge release/20111015-1635 to develop [INFO] run git pull origin develop From /home/sotarok/tmp/gitdaily-demo/server * branch develop -> FETCH_HEAD Already up-to-date. pull completed Merge made by recursive. sample.php | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) [INFO] push develop to origin To /home/sotarok/tmp/gitdaily-demo/server efbe37b..b5a59b7 develop -> develop [INFO] delete branch: release/20111015-1635 Deleted branch release/20111015-1635 (was aba974f). To /home/sotarok/tmp/gitdaily-demo/server - [deleted] release/20111015-1635 release closed
ããããåºåãããã®ã§ããããããªããã¨ã«ãªã£ã¦ãããããã¾ãããããã©ã³ãããã°ã¯ä»¥ä¸ã®ããã«ãªã£ã¦ãã¾ãã
% git branch -a [tmp/gitdaily-demo/deploy @develop] * develop master remotes/origin/HEAD -> origin/master remotes/origin/develop remotes/origin/master % git log --oneline --decorate --graph --all * b5a59b7 (HEAD, origin/develop, develop) Merge branch 'release/20111015- |\ | | * f62dba1 (origin/master, origin/HEAD, master) Merge branch 'release/ | | |\ | | |/ | |/| | * | aba974f fixed: not PHP but Python |/ / * | efbe37b modify comment * | 107be63 added sample |/ * d7a313d initialize
ãã©ã³ãã« --no-ff 㧠develop 㨠master ã« merge ãããreleaseãã©ã³ããæé¤ããã¦ãããã¨ããããã¨æãã¾ãã
ããã§ãªãªã¼ã¹ä½æ¥ãå®äºãã¾ããã
åèªã®éçºç°å¢ã®æé¤
deployãµã¼ãä¸ã§ãªãªã¼ã¹ãå®äºãã¾ãããããããã¯Gitã®ç¹å¾´ã§ãããremoteã§ãªãªã¼ã¹ãã©ã³ããæé¤ããã¦ããã¼ã«ã«ã«ã¯æ®ã£ã¦ãããã§ãããããæé¤ãããã¨ãããã¾ãã
ããã§ã release sync ãç»å ´ãã¾ãã
Bããã¯ãå
ç¨ä¿®æ£ä½æ¥ã®ããã«ãã¼ã«ã«ã«releaseãã©ã³ããåå¾ãã¾ããã®ã§ã以ä¸ã®ç¶æ
ã«ãªã£ã¦ãã¾ãã
% git branch -a [tmp/gitdaily-demo/b_dev @release/20111015-1635] develop master * release/20111015-1635 remotes/origin/HEAD -> origin/master remotes/origin/develop remotes/origin/master remotes/origin/release/20111015-1635
âã¯ã¾ã fetchåã®ç¶æ
ãªã®ã§ãremoteã§æ¶ããã¯ãã®releaseãã©ã³ãããã¾ã ããã¾ãã
syncããã°ãã®ã¸ãã¯é©å½ã«åå¾ãã¦ãã£ã¦ããã¾ãã
% git daily release sync [tmp/gitdaily-demo/b_dev @release/20111015-1635] [INFO] first, fetch remotes [INFO] cleanup remote [INFO] release closed! so cleanup local release branch [INFO] checkout develop [INFO] run git pull origin develop From /home/sotarok/tmp/gitdaily-demo/server * branch develop -> FETCH_HEAD Updating d7a313d..b5a59b7 Fast-forward sample.php | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) create mode 100644 sample.php pull completed [INFO] delete release/20111015-1635 Deleted branch release/20111015-1635 (was aba974f). Closed old release branch sync to release close
ãã©ã³ãã¨ãã°ã確èªããã¨:
% git branch -a [tmp/gitdaily-demo/b_dev @develop] * develop master remotes/origin/HEAD -> origin/master remotes/origin/develop remotes/origin/master % git log --oneline --decorate --graph [tmp/gitdaily-demo/b_dev @develop] * b5a59b7 (HEAD, origin/develop, develop) Merge branch 'release/20111015... |\ | * aba974f fixed: not PHP but Python |/ * efbe37b modify comment * 107be63 added sample * d7a313d (master) initialize
ããã§ãrelease ãã©ã³ãããæé¤ããã¦ãdevelopã«æ»ãã¾ããã *2
ä½æ¥ã®æµãã®ã¾ã¨ã
ããã§ä¸é£ã®ä½æ¥ãå®äºãã¾ããã
ç°¡åã«æ®æ®µã®ä½æ¥ã®ã¾ã¨ãããã¾ã:
- develop ãã©ã³ãã§éçºä½æ¥ããã
- release ä½æ¥ãã¯ãããã¨developãã©ã³ããããã©ã³ããåããã (release open)
- release ãã©ã³ãã§æçµç¢ºèªä¸ãä¿®æ£ãå¿ è¦ãªãreleaseãã©ã³ãã§ä¿®æ£ä½æ¥ããã (release sync)
- æ¬çªãªãªã¼ã¹ã§ããããreleaseãã©ã³ããmergeãã¾ãã (release close)
- ãªãªã¼ã¹å¾ãåéçºè 㯠sync ãã¦ãæé¤ã¨ããã (release sync)
ã¾ã¨ãã¨ä½è¨ãªè©±
- Python ããããã§ã®çºè¡¨ã¯ããã¦ã§ç·å¼µãã¾ãã
- ã¡ãªã¿ã«ãgit-dailyæ¬ä½ã¯gitflowã使ã£ã¦éçºãã¦ãã¾ãã
- ã¹ã©ã¤ãä¸ã§ã話ãã¾ããããGitéç¨ã®ãã©ã¯ãã£ã¹ãã©ãã©ãå ±æãã¦ããããã§ããï¼
ãã¾ã: zshã®é£æºã¯ãvsc_info使ã£ã¦ã¾ãã
autoload -Uz vcs_info zstyle ':vcs_info:*' enable git zstyle ':vcs_info:*' actionformats ' %F{3}@%F{4}%b%F{3} !!%F{1}%a%f' zstyle ':vcs_info:*' formats ' %F{3}@%F{4}%b%f' RPROMPT="%F{5}[%F{2}%3~\${vcs_info_msg_0_}%F{5}]%f"
*1: id:Voluntas ããã¨è©±ãããããããã¤ãµã¼ãã¨ããªããã¨ããããã¦ããããããããã¨æãã¾ãã
*2:ã¡ãªã¿ã«ãlocalã®masterãã©ã³ããoriginã®masterã«è¿½ãã¤ãã¦ãªãã§ãããããã¯masterã§pullãã¦ãªãããã§ãããã¾ãåéçºè ã¯ãã¼ã«ã«ã§masterãã©ã³ããæ´æ°ãããã¨ããªãã®ã§ãæ°æã¡æªãããããã¾ããããmasterã¯ã»ã£ããããã§ãã»ã¨ãã©åé¡ãªãã¨ãããã¾ãã