һֱæÓÚ¸÷ÖÖËöËéµÄÏîÄ¿¿ªÌⱨ¸æ£¬±àÂë×öPPTµÈËöËéµÄ¹¤×÷£¬²©¿Í¶¼ºÃ¾Ãû¸üУ¬×ï¹ý×ï¹ý£¡
¸öÈËÓÃgithubÓÐÒ»¶Îʱ¼äÁË£¬µ±Ê±Ñ§Ï°µÄʱºò²ÎÕÕ¹Ù·½µÄ½Ì³Ì£¬ÃãÇ¿ÄÜÓ㬵«ÊÇÓÐЩÔÀíÐԵĶ«Î÷×ÜÊÇû¸ã¶®£¬ËùÒÔºÜÀ§»ó£¬¶øÍøÉϹØÓÚgitºÍgithubѧϰµÄÖÐÎÄÎĵµºÍѧϰ×ÊÁ϶¼²»ÊǺܶ࣬ËùÒÔ´òËãдһЩ×Ô¼ºÊ¹ÓÃgithubºÍgitµÄһЩÐĵã¬ÈóõѧÕßÉÙ×ßÍä·¡£
----------------------------------------------
»ù±¾¸ÅÄ
°æ±¾¿â(Repository)Êǰ汾¿ØÖÆÏµÍ³ÓÃÀ´´æ·ÅËùÓÐÀúÊ·Êý¾ÝµÄµØ·½£¬Ö÷Òª´æ·Å¸÷¸öÎļþµÄµ±Ç°×´Ì¬£¬ÀúÊ·ÐÞ¸Äʱ¼ä£¬Ë×öµÄÐ޸ģ¬ÒÔ¼°Ð޸ĵÄÔÒò¡£¾Ù¸ö¼òµ¥µÄÀý×Ó£¬¾ÍºÃ±ÈÒøÐеı£ÏÕÏ䣬ÿ´ÎÍùÀï´æÇ®£¬¶¼»á¼Ç¼ˣ¬Ê²Ã´Ê±¼ä£¬´æ·Å¶àÉÙÇ®£¬´æÈëµÄÔÒòµÈ¡£¶ÔÓ¦µÄ°æ±¾¿â£¨Repository£©Ö÷Òª´æ·Å´úÂ루Îĵµ£¬Êý¾Ý£¬Í¼±êµÈ£©£¬²¢ÇÒÿһ´Î¸üж¼Òª¼Ç¼ˣ¬Ê²Ã´Ê±¼ä£¬Ìá½»ÁËʲô¸üУ¬ÒÔ¼°¸üеÄÔÒòÊÇʲô¡£
git¾ÍÊǹÜÀíÎÒÃÇÕâ¸ö°æ±¾¿âµÄ¹Ü¼Ò£¬Ï൱ÓÚÒøÐб£ÏÕÏäµÄ¹ÜÀíÈËÔ±¡£ÒÔǰµÄ°æ±¾¿ØÖÆÈëCVS£¬SVNµÈ¶¼ÊǼ¯ÖпØÖƹÜÀíµÄ£¬Ò²¾ÍÊÇÓÐÒ»¸öÖÐÑë·þÎñÆ÷£¬´ó¼Ò¶¼°Ñ´úÂëÌá½»µ½ÖÐÐĽڵã(ÈëÏÂͼ)£¬¶øgitÊÇ·Ö²¼Ê½µÄ°æ±¾¿ØÖƹ¤¾ß£¬Ò²¾ÍÊÇ˵ûÓÐÖÐÑë·þÎñÆ÷£¬Ã¿¸ö½ÚµãµÄµØÎ»Æ½µÈ£¬ÓеãP2PµÄζµÀ£¬ÖÚÉúƽµÈ£¬ËÒ²±ðÇÆ²»ÆðË
! ^_^

-------------------------------------------------
GitµÄ°²×°ÓëÅäÖÃ
ubuntu»·¾³£º
sudo apt-get build-dep git-core git-doc
make prefix=/usr/local all doc
sudo make install install-doc
¼ì²é°²×°ÊÇ·ñ³É¹¦£ºgit --version
Windows»·¾³£º
githubÍøÕ¾ÉÏÓÖgitµÄÔÉú̬°²×°Ó¦Ó㬿ÉÒÔÖ±½Ó¡°ÏÂÒ»²½ÏÂÒ»²½¡±°²×°¡£ÏÂÔØÁ´½Ó£ºhttp://windows.github.com/
°²×°Íê³Éºó£¬×ÀÃæÉÏ»áÓÐGithubºÍGithub ShellµÄ¿ì½Ý·½Ê½³öÏÖ¡£
ÅäÖÃ
Ê×ÏÈÇë×¢²ágithubÍøÕ¾£¬¼ÇסÓû§ÃûºÍÃÜÂ룻
È»ºóUbuntuÏÂÇë´ò¿ªTerminal£¬WindowsÏÂÇëË«»÷Git Shell£»
ÅäÖÃÓû§ÃûºÍÃÜÂë:
git config --global user.name "Your name"
git config --global user.email "Your Email used
to register"
¼ì²éÅäÖÃÊÇ·ñ³É¹¦£ºgit config --global --list ²é¿´ÉèÖõÄÓû§ÃûºÍEmail¡£
Èç¹ûÉÏÃæºÍÏÂÃæÒª½²µÄÈκÎÃüÁîÓÐÒÉÎÊ£¬Ê¹ÓÃÃüÁîgit help <command>²é¿´commandµÄÓ÷¨¡£
---------------------------------------------
Ìí¼ÓÓëÌá½»£ºGit»ù´¡
ºÃÁËÅäÖúÃÁË£¬ÏÖÔÚÈÃÎÒÓÃgitÀ´¹ÜÀíÎÒÃǵĴúÂë°É£¬ÈÕ³£ÊÇÈçºÎʹÓÃgitÄØ£¬Ö÷Òª°üÀ¨Ìí¼ÓÓÚÌá½»£¬Àí½âºÍʹÓ÷ÖÖ§£¬²éѯgitÀúÊ·¼Ç¼£¬ÓëÔ¶³Ì°æ±¾¿âд×÷£¬¹ÜÀí±¾µØ°æ±¾¿âµÈ£¬ÔÚ½øÈë¾ßÌåµÄÄÚÈÝ֮ǰ£¬Ç¿ÁÒ½¨Ò黨¼¸·ÖÖÓʱ¼äÔĶÁͼ½âgitÕâÆªÎÄÕ£¬ÓÃͼÏñµÄ·½Ê½½âÊÍÁËgitµÄ¹¤×÷ÔÀí£¬·Ç³£ÈÝÒ×¼Çס£¬ÔÙ´ÎÇ¿ÁÒ½¨Òé¡£
´´½¨°æ±¾¿â£º mkdir test_git //н¨Ä¿Â¼test_git
cd test_git //½øÈëĿ¼
git init //³õʼ»¯git£¬ÏÖÔÚgit»á¹ÜÀíÕâ¸öĿ¼ÖеÄËùÓÐÄÚÈÝÁË
Ôö¼ÓÎļþ£º touch helloworld.txt //´´½¨Îļþ£¬ÔÚwindowsÏÂÖ±½Óµ½Ä¿Â¼Ð½¨Îļþ¼´¿É
git add helloworld.txt //¸æËßgitÎÒÒªÌí¼ÓÒ»¸öÎļþ£¬µ«ÊÇgit²¢Ã»ÓаÑÄãËùÌí¼ÓµÄÎļþ·ÅÈë°æ±¾¿âÖУ¬¶øÊǶÔÄÚÈݽøÐÐhashºóÉú³ÉÁËÒ»¸ö±àºÅ
//Ï൱ÓÚÌí¼ÓÄÚÈݵÄÉí·ÝÖ¤ºÅ£¬½«¸ÃÉí·ÝÖ¤ºÅÌí¼Óµ½°æ±¾¿âindex£¬¼´¸æËßgitÎÒÓÐÒ»¸öÎļþ±àºÅXXXµÄÄÚÈݽ«ÒªÌá½»£¬
//µ«ÊDz¢Ã»ÓÐÕæÕýÌá½»µ½°æ±¾¿â£¨ÈçÏÂͼ£©£¬ÒªÏ뽫ÎļþÕæÕý·ÅÈë°æ±¾¿âÐèÒªcommit
git commit -m "add helloworld.txt" //-m²ÎÊýÊÇÌá½»ÁôÑÔ£¬ËµÃ÷ΪʲôҪÌá½»µÄ¸üÐÂ×öÁËʲôÊÂÇ飬·½±ã±ðÈ˲鿴¡£
¶ÔÏÂͼµÄ˵Ã÷£ºworking directoryÊǵ±Ç°µÄ¹¤×÷Ŀ¼£¬¶østageÊÇÔÝ´æÇøÒ²³ÆË÷ÒýÇø´æ·Å¹¤×÷Ŀ¼ÖÐÄÇЩÄã´òËãÌá½»µ½°æ±¾¿âµÄ±ä¸ü£¬git
addÖ»Êǽ«ÎļþµÄË÷ÒýÌá½»µÄ°æ±¾¿â£¬¶øÕæÕýµÄÄÚÈݲ¢Ã»ÓнøÈë°æ±¾¿â£¬History¾ÍÊǰ汾¿â£¬ÐèҪעÒâµÄÊÇÕâÊDZ¾µØµÄ°æ±¾¿â£¬´æÔÚÓÚ±¾µØµÄµçÄÔÖУ¬Ï൱ÓÚÄãµçÄÔÉÏÒ»¸öÄãµÄ˽ÈËÇ®²Æ¹ÜÀíÔ±¡£

Á½¸ö³£ÓòÙ×÷¾³£Ò»¿éʹÓÃ
git add some-file
git commit -m "some changes to some-file"
²é¿´µ±Ç°´úÂë״̬£ºgit status
»áÏÔʾ
changes to be commited ±íʾ½«ÒªÌá½»µ«ÊÇÉÐδÌá½»µÄÐÞ¸Ä(ÒѾaddµ«ÊÇÉÐδcommit)£¬Ò²¾ÍÊÇÔÚstageÇøÓòÒѾÓÐÁË£¬µ«ÊÇ»¹Ã»ÓÐcommitµÄÄÚÈÝ
changed but not updated ±íʾÒѾÐ޸ĵ«ÊÇ»¹Ã»ÓÐÌí¼Óµ½ÔÝ´æÇøµÄÄÚÈÝ(ÉÐδadd£¬µ±È»ÉÐδcommit)
²é¿´Îļþ¸Ä¶¯ git diff
git diff ±È½Ïworking directoryºÍstageµÄ²î±ð
git diff --cached ±È½ÏstageºÍhistoryµÄ²î±ð
git diff HEAD Ö±½Ó±È½Ïworking directory ºÍhistoryµÄÇø±ð
ÎļþÖØÃüÃû: git mv
git mv helloworld.txt helloworld2.txt //½«helloworld.txtÖØÃüÃûΪhelloworld2.txt
------------------------------------------------------
Àí½âºÍʹÓ÷ÖÖ§
git¿ÉÒÔʹÓöàÌõ·ÖÖ§£¬ÕâÑù¾Í¿ÉÒÔÔÙ²»Ó°Ï쵱ǰ½ø¶ÈµÄÇé¿öÏ£¬Óô´½¨ÐµķÖÖ§µÄ·½·¨À´½øÐнÓÏÂÀïµÄ¿ª·¢£¬ºÎʱʹÓ÷ÖÖ§ÊÇÒ»ÃÅÒÕÊõ£¬Ò»°ãÀ´Ëµ£º
1. ÊÔÑéÐÔÐ޸썳£Óã©£º²âÊÔеÄËã·¨»òÕßΪij¸öÌØ±ðµÄÄ£Ê½ÖØ¹¹²¿·Ö´úÂë
2. Ôö¼Óй¦ÄÜ£¨³£Óã©£ºÎªÃ¿¸öй¦ÄܵĿª·¢´´½¨ÐµķÖÖ§£¬Íê³É¸Ã¹¦ÄÜ¿ª·¢ºó£¬ÔÚ½«ÆäºÏ²¢µ½Ö÷·ÖÖ§ÉÏ
3. BugÐ޸ģºÐÞ¸´´úÂëÖеÄbug£¬¿ÉÒÔ´´½¨Ð·ÖÖ§À´¶Ô¸Ãbug½øÐÐÐ޸ģ¬È»ºó½«Ð޸ĺϲ¢µ½Ö÷·ÖÖ§ÉÏ
´´½¨Ð·ÖÖ§£ºgit branch test //´´½¨ÃûΪtestµÄ·ÖÖ§
Çл»·ÖÖ§£ºgit checkout test //Çл»µ½test·ÖÖ§¹¤×÷, ÓëÉÏÃæµÄÃüÁî¾³£Ò»ÆðʹÓÃ
²é¿´·ÖÖ§£ºgit branch //²é¿´Ç°°æ±¾¿â£¨±¾µØ£©µÄËùÓзÖÖ§
ºÏ²¢·ÖÖ§£ºgit checkout master //Çл»µ½¡°ÒªºÏ²¢µ½¡±µÄ·ÖÖ§£¬³£¼ûµÄ¾ÍÊÇtest·ÖÖ§ºÏ²¢µ½master·ÖÖ§£¬ËùÒÔÏÈÇл»µ½master·ÖÖ§
git merge test //ºÏ²¢test·ÖÖ§µ½master·ÖÖ§
×¢Ò⣺ Ôںϲ¢·ÖÖ§µÄʱºòÓÐʱºò»á³öÏÖ³åÍ»£¨conflict£©µÄÇé¿ö£¬´´½¨µÄÇé¿öÊÇmaster·ÖÖ§ºÍtest·ÖÖ§¶ÔͬһÎļþµÄͬһ´¦´úÂëµÄÄÚÈݲ»Ò»Ñù£¨ÀýÈ磺master·ÖÖ§ÔÚhello.cppÖеÚÈýÐÐдÈëµÄÊÇ"hello",
¶øtest·ÖÖ§ÔÚhello.cppµÄµÚÈýÐÐÖÐдÈëµÄÊÇ¡°world¡±£©£¬ÕâÑùʹµÃgit²»ÖªµÀÈçºÎÊǺã¬Õâʱºò¾ÍÐèÒªÄãÊÖ¹¤Ð޸ĴúÂëÁË£¬ÎÒÄѵÀÒª¼ÇסmasterºÍtestÔÚͬһλÖõÄÄÚÈÝ£¿µ±È»²»ÓÃÁË£¬git»áÔÚgit
mergeµÄ·´À¡ÐÅÏ¢ÖÐ˵Ã÷£¬´úÂëÔںβ¿·Ö´æÔÚ³åÍ»¡£
ɾ³ý·ÖÖ§£º git branch -d test //ɾ³ýtest·ÖÖ§
·ÖÖ§ÖØÃüÃû£ºgit branch -m test test2 //½«test·ÖÖ§ÖØÃüÃûΪtest2£¬Õâ¸öÃüÁî²»³£ÓÃ
--------------------------------------------------------------------------------------
²éѯgitÀúÊ·¼Ç¼
²éѯËùÓеÄcommitÀúÊ·£ºgit log
²éѯָ¶¨·¶Î§µÄcommitÀúÊ·£º git log --since = "5 hours"
//²é¿´×î½ü5СʱµÄcommitÀúÊ·¼Ç¼
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡git log --before = "5 hours"
-2 //²é¿´5Сʱ֮ǰ×îºó2´ÎµÄÌá½»commit¼Ç¼
git log 18f822e..0bb3dfb //²é¿´´Ó18f822e(²»°üÀ¨18f822e)µ½0bb3dfbÖ®¼äµÄÌá½»¼Ç¼
git log 18f822e..HEAD //HEAD±íʾµ±Ç°ËùÔÚ·ÖÖ§µÄ×îа汾£¬¼´HEADÖ¸Ïòµ±Ç°ËùÔÚ·ÖÖ§µÄ×îºóÒ»´Îcommit
git log HEAD^^^ //^±íʾ¸¸½Úµã£¬HEAD^¾Í±íʾHEADµÄ¸¸½Úµã£¬ÒÔ´ËÀàÍÆ
git log HEAD~3 //~N ±íʾ»ØËÝN¸ö½Úµã£¬ËùÒÔÓëÉÏÒ»¸ö±íÊöµÈ¼Û
²é¿´°æ±¾Ö®¼äµÄ²îÒ죺 git diff //²é¿´working dirºÍstage£¨index£©Ö®¼ä²îÒì
git diff --cached //²é¿´stage(index)ºÍHistory£¨µ±Ç°·ÖÖ§°æ±¾¿â£©Ö®¼äµÄ²îÒì
git diff HEAD //²é¿´working dir ºÍ HistoryÖ®¼äµÄ²îÒì
ÎÊÔðÎļþÄÚÈÝ£º git blame hello.cpp //²é¿´ËùÓÃÏòhello.cppÌá½»ÄÚÈݵÄÈË£¬·½±ãÎÊÔðµ½ÈË£¬Ë£¬Ê²Ã´Ê±ºò£¬Ìá½»´úºÅ£¬Ìá½»ÄÚÈÝ£¬ÁôÑԵȶ¼»áÏÔʾ
Ôö²¹Ìá½»£º git commic -C HEAD -a --amend //ÓÃheadÉÏ´ÎÌá½»µÄÁôÑÔ£¨-C±íʾcomments£©£¬½«Õâ´ÎµÄÌá½»×·¼Óµ½ÉÏÒ»´ÎÌá½»ÉÏ£¬²»»á´´½¨ÐµÄÌá½»´úºÅ
-----------------------------------------------------------------------------------
ÓëÔ¶³Ì°æ±¾¿âÐ×÷
github¾ÍÊÇÌá½»Ô¶³Ì°æ±¾¿â·þÎñµÄÍøÕ¾£¬ËùÒÔÎÒÃÇÕâÀïµÄÔ¶³Ì°æ±¾¿âΪ·½±ãÆð¼ûÓÃgithub´úÌæ£¬ÉÏÃæÎÒÃǵòÙ×÷¶¼ÊǺͱ¾µØµÄgit½»»¥£¬Ï൱ÓÚÊǺͱ¾µØµÄgitСÖúÊÖ½»»¥£¬ÈçºÎ½«ÕâЩÔÚ±¾µØµÄ´úÂëºÍgithubÉϵİ汾¿âÁ¬½ÓÆðÀ´£º½«±¾µØµÄ´úÂëÍÆË͵½githubÉÏ£¬½«githubÉϵĴúÂë¼ì³ö£¨checkout£©µ½±¾µØ£¿
gitÖ§³ÖÈýÖÖÐÒ飺SSHÐÒé¸ñʽ£º usrname@github.com/registername/helloworld.git
//³£ÓÃÓÚ½«±¾µØ°æ±¾¿âÍÆË͵½githubÉϵİ汾¿â
gitÐÒé¸ñʽ£º git://github.com/registername/helloworld.git
//³£ÓÃÓÚ´Ógithub°æ±¾¿âÍÏÈë±¾µØ°æ±¾¿â
HTTP/HTTPSÐÒé¸ñʽ£º http://github.com/registername/helloworld.git
¿Ë¡githubÉϵÄSpoon-Knife°æ±¾¿âµ½±¾µØ£º git clone git://github.com/octocat/Spoon-Knife.git
°æ±¾¿âͬ²½£º git fetch //È¡À´(fetch)Ô¶³Ì°æ±¾¿âµ½±¾µØ£¬µ«ÊDz¢²»Óë±¾µØ·ÖÖ§ºÏ²¢
git pull //ÍÏÈë(pull)Ô¶³Ì°æ±¾¿â£¬Óë±¾µØ·ÖÖ§ºÏ²¢£¬Ï൱ÓÚ git fetch + git
merge
ÍÆËͱ¾µØ´úÂëµ½Ô¶³Ì°æ±¾¿â£º git remote add origin https://github.com/registername/reponame.git
//ΪԶ³Ì°æ±¾¿âreponameÈ¡±ðÃûorigin
git push origin master // ½«±¾µØmaster·ÖÖ§ÍÆÈëgithubÉϵÄorigin
--------------------------------------------------------------
ÆäËû£º
»¹ÓÐһЩ²»ÊǺܳ£ÓõIJÙ×÷¼òµ¥µÄÁÐÔÚÏÂÃæ£¬Èç¹ûÓõ½ÕâЩÃüÁ¿ÉÒԲο´git doc»òÕß±¾ÎIJο¼ÎÄÏ×ÖÐËùÁеÄÄÚÈÝ£¬²»Ò»Ò»×¸Êö¡£
·×ªÌá½»£º git revert
¸´Î»£º git reset
·ÖÖ§±ä»ù£º git rebase
±êÇ©£º git tag
git×ÓÄ£¿é£º git submodule
µ¼³ö°æ±¾¿â£º git archive
¶þ·Ö²éÕÒ£º git bisect
-------------------------------------------------------------------------------------------
|