§¬§Ñ§Ü §å§Õ§Ö§â§Ø§Ñ§ä§î §á§â§à§Ö§Ü§ä §à§ä §Ñ§ß§Ñ§â§ç§Ú§Ú §ã §á§à§Þ§à§ë§î§ð Git2. §¡§Ô§Ñ, §Ó§à§ä §ï§ä§Ú §â§Ö§Ò§ñ§ä§Ñ §®§Ú§ç§Ñ§Ú§Ý §¬§Ñ§Þ§à§â§ß§Ú§Ü§à§Ó §¡§Ý§Ö§Ü§ã§Ñ§ß§Õ§â §´§Ñ§ä§å§Ý§î§é§Ö§ß§Ü§à§Ó §±§â§à§á§Ñ§Ô§Ñ§ß§Õ§Ú§ã§ä §Ú §á§à§á§å§Ý§ñ§â§Ú§Ù§Ñ§ä§à§â php-§Õ§Ø§Ú§ç§Ñ§Õ§Ñ §Ú §Þ§Ö§Õ§à§Ö§Õ-§ã§ä§Ñ§Û§Ý §Ü§à§Õ§Ú§ß§Ô§Ñ. §±§Ú§ê§Ö§ä SQL §Ó§à §Ó§î§ð§ç§Ñ§ç §Ú §ß§Ö§ã§Ö§ä $GLOBALS §Ó §Þ§Ñ§ã§ã§í. §¯§Ö ¡°§ä§à§ä §ã§Ñ§Þ§í§Û §®§Ñ§â§ê§Ñ§Ý¡± §Ú§Ù §ã§Ö§â§Ú§Ñ§Ý§Ñ. §°§ã§à§Ò§à §à§á§Ñ§ã§Ö§ß §Ó §ã§Ó§ñ§Ù§Ü§Ö §ã Symfony 2. 4. §¯§Ö§Õ§à§ã§ä§Ñ§ä§Ü§Ú? - §ã§Ý§Ñ§Ò§à§ã§ä§Ú sha1 - git §ß§Ñ windows - §ß§Ö§ã§Ó§ñ§Ù§Ñ§ß§ß§í§Ö §æ§Ñ§Û§Ý§í - §Ü§ä§à §Ú §é§ä§à §â§Ö§Õ§Ñ§Ü§ä§Ú§â§à§Ó§Ñ§Ý? - §Ú§ã§ä§à§â§Ú§ñ §æ§Ñ§Û§Ý§Ñ - §ß§Ñ§é§Ñ§Ý§î§ß§à§Ö §Ü§Ý§à§ß§Ú§â§à§Ó§Ñ§ß§Ú§Ö - §Ú§Ù§Þ§Ö§ß§é§Ú§Ó§í§Ö §á§â§à§Ö§Ü§ä§í - §Ô§Ý§à§Ò§Ñ§Ý§î§ß§í§Û §ã§é§Ö§ä§é§Ú§Ü (svn style) - §á§å§ã§ä§í§Ö §á§à§Õ§Ü§Ñ§ä§Ñ§Ý§à§Ô§Ú - §á§Ö§â§Ó§à§ß§Ñ§é§Ñ§Ý§î§ß§í§Û §Ü§à§Þ§Þ§Ú§ä - §á§â§Ú§é§å§Õ§í §Ú§ß§ä§Ö§â§æ§Ö§Û§ã§Ñ (a..b, a...b) 5. §Á§Ó§ß§í§Ö §á§Ý§ð§ã§í? - §Ó§ã§Ö§Ô§Õ§Ñ §ã §Ü§à§Õ§à§Þ - ¡°--interactive¡± §â§Ö§Ø§Ú§Þ §Ó §Ü§à§Þ§Ñ§ß§Õ§Ñ§ç - §Ó§à§Ù§Þ§à§Ø§ß§à§ã§ä§î §ã§Ú§ß§ç§â§à§ß§Ú§Ù§Ñ§è§Ú§Ú §ã subversion, mercurial [, cvs )) ] - man §Ó§ã§Ö§Ô§Õ§Ñ §á§à§Õ §â§å§Ü§à§Û - §æ§à§â§Þ§Ñ§ä §â§Ö§á§à§Ù§Ú§ä§à§â§Ú§ñ §Õ§â§å§Ø§Ö§Ý§ð§Ò§Ö§ß §Ü rsync, §à§Ò§í§é§ß§à§Þ§å HTTP §Ú backup¡¯§Ñ§Þ - §Þ§à§Ø§ß§à §á§Ú§ã§Ñ§ä§î §ã§Ó§à§Ú §ã§Ü§â§Ú§á§ä§í 6. ¡° D¡± §Ó DVCS - §Ü§Ñ§Ø§Õ§à§Þ§å §á§à §â§Ö§á§à§Ù§Ú§ä§à§â§Ú§ð - write access §ß§å§Ø§ß§à §Ù§Ñ§ã§Ý§å§Ø§Ú§ä§î 9. §¬§Ñ§Ü §å§ã§ä§â§à§Ö§ß§à §å §ß§Ñ§ã - §ñ §ã§ä§Ñ§Ó§Ý§ð §Ù§Ñ§Õ§Ñ§é§å §â§Ñ§Ù§â§Ñ§Ò§à§ä§é§Ú§Ü§å - §â§Ñ§Ù§â§Ñ§Ò§à§ä§é§Ú§Ü §ã§à§Ù§Õ§Ñ§Ö§ä §Ò§â§Ñ§ß§é §à§ä §Ñ§Ü§ä§å§Ñ§Ý§î§ß§à§Ô§à §Ò§â§Ñ§ß§é§Ñ §Ú§Ù §Ô§Ý§Ñ§Ó§ß§à§Ô§à §â§Ö§á§à§Ù§Ú§ä§à§â§Ú§ñ - §Ó §ï§ä§à§Þ §Ò§â§Ñ§ß§é§Ö §â§Ñ§Ù§â§Ñ§Ò§à§ä§é§Ú§Ü §â§Ö§ê§Ñ§Ö§ä §á§à§ã§ä§Ñ§Ó§Ý§Ö§ß§ß§å§ð §Ù§Ñ§Õ§Ñ§é§å - §Ò§â§Ñ§ß§é §ã §Ó§í§á§à§Ý§ß§Ö§ß§ß§à§Û §Ù§Ñ§Õ§Ñ§é§Ö§Û §â§Ñ§Ù§â§Ñ§Ò§à§ä§é§Ú§Ü §à§ä§á§â§Ñ§Ó§Ý§ñ§Ö§ä §Ó §ã§Ó§à§Û §â§Ñ§Ò§à§é§Ú§Û §â§Ö§á§à§Ù§Ú§ä§à§â§Ú§Û - §ñ §Ò§Ö§â§å §Ú§Ù §â§Ñ§Ò§à§é§Ö§Ô§à §â§Ö§á§à§Ù§Ú§ä§à§â§Ú§ñ §ï§ä§à§ä §Ò§â§Ñ§ß§é §Ú §á§â§à§Ó§Ö§â§ñ§ð §Ö§Ô§à - §Ö§ã§Ý§Ú §Ù§Ñ§Õ§Ñ§é§Ñ §Ó§í§á§à§Ý§ß§Ö§ß§Ñ §á§â§Ñ§Ó§Ú§Ý§î§ß§à, §ñ §ã§Ý§Ú§Ó§Ñ§ð §ï§ä§à§ä §Ò§â§Ñ§ß§é §ã §Ñ§Ü§ä§å§Ñ§Ý§î§ß§í§Þ §Ò§â§Ñ§ß§é§Ö§Þ 13. §±§å§ã§ä§î git §â§Ñ§Ò§à§ä§Ñ§Ö§ä §Ù§Ñ §Þ§Ö§ß§ñ - §ã§ä§à§Ú§ä §á§à§ã§Þ§à§ä§â§Ö§ä§î git flow - §Ö§ã§ä§î §å§ä§Ú§Ý§Ú§ä§Ñ §Ý§å§é§ê§Ö git-§à§Ó§ã§Ü§à§Û - §Ù§Ñ§ã§ä§Ñ§Ó§î§ä§Ö git §â§Ñ§Ò§à§ä§Ñ§ä§î §é§Ö§â§Ö§Ù §ß§Ö§Ö - §ß§Ñ§Õ§à§Ö§Ý§Ñ §â§å§ä§Ú§ß§Ñ ¨C §á§Ú§ê§Ö§Þ §ã§Ü§â§Ú§á§ä§í §ß§Ñ §Ó§ã§Ö §ã§Ý§å§é§Ñ§Ú §Ø§Ú§Ù§ß§Ú - §ß§Ö §Ù§Ñ§Ò§í§Ó§Ñ§Ö§Þ §á§â§à §ç§å§Ü§Ú 18. §Á §Ú§Þ§Ö§Ý §Ó §Ó§Ú§Õ§å §ã§à§Ó§ã§Ö§Þ §ß§Ö §ï§ä§à... :-) §°§ê§Ú§Ò§Ý§Ú§ã§î §Ó §Ü§à§Þ§Þ§Ö§ß§ä§Ö $ git commit --amend §°§Û, §Ö§ë§Ö §Ú §æ§Ñ§Û§Ý §Õ§à§Ò§Ñ§Ó§Ú§ä§î §Ù§Ñ§Ò§í§Ý§Ú $ git commit --amend -a §¦§ã§Ý§Ú §Ó§ã§Ö §Ó 10 §â§Ñ§Ù §ç§å§Ø§Ö $ git rebase -i HEAD~10 25. §£§Ñ§ã §Ù§Õ§Ö§ã§î §ß§Ö §ã§ä§à§ñ§Ý§à! # §á§Ö§â§Ö§Ü§Ý§ð§é§Ñ§Ö§Þ§ã§ñ §ß§Ñ §Ó§Ö§ä§Ü§å bug1 $ git checkout bug1 # §á§Ö§â§Ö§ã§Ñ§Õ§Ú§ä§î §Ú§ã§ä§à§â§Ú§ð §Ú§Ù§Þ§Ö§ß§Ö§ß§Ú§Û $ git rebase master # §Ô§Ý§à§Ò§Ñ§Ý§î§ß§í§Û amend $ git rebase -i HEAD~7 pick 41cf624 Added connection pick a14e959 Added timeouting to cli pick 1934b6e Added disconnect event pick 0e8a050 Changed connections 26. §£§ã§Ö §ã§Ö§Ü§â§Ö§ä§í §á§à §Ü§Ñ§â§Þ§Ñ§ß§Ñ§Þ, §ñ §Ô§å§Ý§ñ§ð §ã §Õ§à§Ò§Ö§â§Þ§Ñ§ß§à§Þ $ git stash $ git stash list $ git stash show $ git stash apply $ git stash drop $ git stash pop $ git stash clear 27. §¡ §à§ß§à §ã§Ñ§Þ§à §ã§Ý§à§Þ§Ñ§Ý§à§ã§î ! $ git blame README $ git gui blame README §®§à§Ø§ß§à §å§Ü§Ñ§Ù§Ñ§ä§î §Ú §Ü§à§ß§Ü§â§Ö§ä§ß§í§Ö §ã§ä§â§à§Ü§Ú §Õ§Ý§ñ §à§ä§à§Ò§â§Ñ§Ø§Ö§ß§Ú§ñ: $ git blame -L 2,+3 README §£§í§Ó§Ö§ã§ä§Ú §ã§ä§â§à§Ü§Ú §Ú §Ú§ß§æ§à§â§Þ§Ñ§è§Ú§ð §à §Ü§à§Þ§Þ§Ú§ä§Ñ§ç, §Ú§ç §Ü§à§ã§ß§å§Ó§ê§Ú§ç§ã§ñ: $ git annotate README 28. §¯§Ö§Þ§ß§à§Ô§à §å§Ý§Ú§é§ß§à§Û §Þ§Ñ§Ô§Ú§Ú §±§Ö§â§Ö§á§Ú§ã§í§Ó§Ñ§Ö§Þ §Ú§ã§ä§à§â§Ú§ð §Ó §Õ§å§ç§Ö §ã§ä§Ñ§Ý§Ú§ß§Ú§Ù§Þ§Ñ $ git filter-branch --tree-filter 'rm secretfile' HEAD §°§Ò§å§é§Ñ§Ö§Þ git §Ú§Ô§â§Ö §Ó §Ü§Ñ§â§ä§í $ git rerere §³§ä§à§á§Ú§ä§ã§à§ä§í§Û §â§Ñ§Ù §ä§Ö§Ò§Ö §Ô§à§Ó§à§â§ð $ git submodule foreach 'git pull || :' 29. §¬§à§Ô§Õ§Ñ §Ø§Ö §Ó§ã§Ö §á§à§ê§Ý§à §ß§Ö §ä§Ñ§Ü? §ä§à§Ý§î§Ü§à §é§ä§à §à§Ò§ß§Ñ§â§å§Ø§Ú§Ý§Ú, §é§ä§à §æ§å§ß§Ü§è§Ú§à§ß§Ñ§Ý §ß§Ö §â§Ñ§Ò§à§ä§Ñ§Ö§ä, §ß§à §Ó§í §ã§à§Ó§Ö§â§ê§Ö§ß§ß§à §à§ä§é§Ö§ä§Ý§Ú§Ó§à §á§à§Þ§ß§Ú§ä§Ö, §é§ä§à §à§ß §â§Ñ§Ò§à§ä§Ñ§Ý §Ó§ã§Ö§Ô§à §ß§Ö§ã§Ü§à§Ý§î§Ü§à §Þ§Ö§ã§ñ§è§Ö§Ó §ß§Ñ§Ù§Ñ§Õ $ git bisect start $ git bisect bad HEAD $ git bisect good 1b6d §Õ§Ý§ñ §á§à§Ý§ß§à§Ô§à §ã§é§Ñ§ã§ä§î§ñ $ git bisect reset 30. §®§ß§à§Ô§à §Ò§å§Ü§Ñ§æ, §ß§Ö§Ñ§ã§Ú§Ý§Ú§Ý $ git for-each-ref --shell --format="ref=%(refname); commitDate=%(authordate:short)" refs/heads/my* | while read entry do eval "$entry"; branch=${ref:11}; untilStamp=$(date +%s -d "$1"); commitStamp=$(date +%s -d "$commitDate"); compare=$(expr $untilStamp - $commitStamp); if [ $compare -gt 0 ] then echo ¡®branch $branch date: $commitDate¡®; if [ "$2" == "-d" ] then echo "git branch -D $branch" eval "git branch -D $branch" else echo "git branch -D $branch" fi fi done