µ¼¶Á Ïñ´ó¶àÊýÐÂÊÖÒ»Ñù£¬ÎÒÒ»¿ªÊ¼ÊÇÔÚ StackOverflow ÉÏËÑË÷ Git ÃüÁȻºó°Ñ´ð°¸¸´ÖÆÕ³Ìù£¬²¢Ã»ÓÐÕæÕýÀí½âËüÃǾ¿¾¹×öÁËʲô¡£
ËùÓõÄÈÕ³£ Git ÃüÁËùÓõÄÈÕ³£ Git ÃüÁ
Image credit: XKCD
ÎÒÔø¾Ïë¹ý£º¡°Èç¹ûÓÐÒ»¸ö×î³£¼ûµÄ Git ÃüÁîµÄÁÐ±í£¬ÒÔ¼°ËüÃǵŦÄÜÊÇʲô£¬Õâ²»ÊǼ«ºÃµÄÂ𣿡±
¶àÄêÖ®ºó£¬ÎÒ±àÖÆÁËÕâÑùÒ»¸öÁÐ±í£¬²¢ÇÒ¸ø³öÁËһЩ×î¼Ñʵ¼ù£¬ÈÃÐÂÊÖÃÇÉõÖÁÖи߼¶¿ª·¢ÈËÔ±¶¼ÄÜ´ÓÖз¢ÏÖÓÐÓõĶ«Î÷¡£
ΪÁ˱£³ÖʵÓÃÐÔ£¬ÎÒ½«Õâ¸öÁбíÓëÎÒ¹ýÈ¥Ò»ÖÜʵ¼ÊʹÓÃµÄ Git ÃüÁî½øÐÐÁ˱Ƚϡ£
¼¸ºõÿ¸ö¿ª·¢ÈËÔ±¶¼ÔÚʹÓà Git£¬µ±È»ºÜ¿ÉÄÜÊÇ GitHub¡£µ«´ó¶àÊý¿ª·¢Õß´ó¸ÅÓÐ 99£¥ µÄʱ¼äÖ»ÊÇʹÓÃÕâÈý¸öÃüÁ
git add --all
git commit -am ""
git push origin master
Èç¹ûÄãÖ»Êǵ¥Ç¹Æ¥Âí£¬»òÕ߲μÓÒ»³¡ºÚ¿ÍÂíÀËÉ»ò¿ª·¢Ò»´ÎÐÔµÄÓ¦ÓÃʱ£¬Ëü¹¤×÷µÃºÜºÃ£¬µ«Êǵ±Îȶ¨ÐԺͿÉά»¤ÐÔ¿ªÊ¼³ÉΪһ¸öÓÅÏÈ¿¼ÂǵÄÊÂÇéºó£¬ÇåÀíÌá½»¡¢¼á³Ö·ÖÖ§²ßÂÔºÍÌá½»ÐÅÏ¢µÄ¹æ·¶ÐԾͱäµÃºÜÖØÒª¡£
ÎÒ½«´Ó³£ÓÃÃüÁîµÄÁÐ±í¿ªÊ¼£¬Ê¹ÐÂÊÖ¸üÈÝÒ×Á˽â Git ÄÜ×öʲô£¬È»ºó½øÈë¸ü¸ß¼¶µÄ¹¦ÄܺÍ×î¼Ñʵ¼ù¡£
¾³£Ê¹ÓõÄÃüÁî
ÒªÏëÔÚ²Ö¿âÖгõʼ»¯ Git£¬ÄãÖ»ÐèÊäÈëÒÔÏÂÃüÁî¼´¿É¡£Èç¹ûÄãûÓгõʼ»¯ Git£¬Ôò²»ÄÜÔڸòֿâÄÚÔËÐÐÈκÎÆäËûµÄ Git ÃüÁî¡£
git init
Èç¹ûÄãÔÚʹÓà GitHub£¬¶øÇÒÕýÔÚ½«´úÂëÍÆË͵½ÔÚÏß´æ´¢µÄ GitHub ²Ö¿âÖУ¬ÄÇôÄãÕýÔÚʹÓõľÍÊÇÔ¶³Ì²Ö¿â¡£¸ÃÔ¶³Ì²Ö¿âµÄĬÈÏÃû³Æ£¨Ò²³ÆΪ±ðÃû£©Îª origin¡£Èç¹ûÄãÒѾ´Ó Github ¸´ÖÆÁËÒ»¸öÏîÄ¿£¬Ëü¾ÍÓÐÁËÒ»¸ö origin¡£Äã¿ÉÒÔʹÓÃÃüÁî git remote -v ²é¿´¸Ã origin£¬¸ÃÃüÁÁгöÔ¶³Ì²Ö¿âµÄ URL¡£
Èç¹ûÄã³õʼ»¯ÁË×Ô¼ºµÄ Git ²Ö¿â£¬²¢Ï£Íû½«ÆäÓë GitHub ²Ö¿âÏà¹ØÁª£¬Ôò±ØÐëÔÚ GitHub ÉÏ´´½¨Ò»¸ö£¬¸´ÖÆвֿâÌṩµÄ URL£¬²¢Ê¹Óà git remote add origin ÃüÁÕâÀïʹÓà GitHub ÌṩµÄ URL Ìæ»» ¡£ÕâÑù£¬Äã¾Í¿ÉÒÔÌí¼Ó¡¢Ìá½»ºÍÍÆË͸ü¸Äµ½ÄãµÄÔ¶³Ì²Ö¿âÁË¡£
×îºóÒ»ÌõÃüÁîÓÃÔÚµ±ÄãÐèÒª¸ü¸ÄÔ¶³Ì²Ö¿âʱ¡£Èç¹ûÄã´ÓÆäËûÈËÄÇÀ︴ÖÆÁËÒ»¸ö²Ö¿â£¬²¢Ï£Íû½«Ô¶³Ì²Ö¿â´ÓÔʼËùÓÐÕ߸ü¸ÄΪÄã×Ô¼ºµÄ GitHub ÕÊ»§¡£³ýÁ˸ÄÓà set-url À´¸ü¸ÄÔ¶³Ì²Ö¿âÍ⣬Á÷³ÌÓë git remote add origin Ïàͬ¡£
git remote -v
git remote add origin
git remote set-url origin
¸´ÖƲֿâ×î³£¼ûµÄ·½Ê½ÊÇʹÓà git clone£¬ºó¸ú²Ö¿âµÄ URL¡£
Çë¼Çס£¬Ô¶³Ì²Ö¿â½«Á¬½Óµ½¿Ë¡²Ö¿âÔÊôÓÚµÄÕÊ»§¡£ËùÒÔ£¬Èç¹ûÄã¿Ë¡ÁËÒ»¸öÊôÓÚ±ðÈ˵IJֿ⣬Ä㽫ÎÞ·¨ÍÆË͵½ GitHub£¬³ý·ÇÄãʹÓÃÉÏÃæµÄÃüÁî¸Ä±äÁË origin¡£
git clone
ÄãºÜ¿ì¾Í»á·¢ÏÖ×Ô¼ºÕýÔÚʹÓ÷ÖÖ§¡£Èç¹ûÄ㻹²»Àí½âʲôÊÇ·ÖÖ§£¬ÓÐÐí¶àÆäËû¸üÉîÈëµÄ½Ì³Ì£¬ÄãÓ¦¸ÃÏÈÔĶÁËüÃÇ£¬ÔÙ¼ÌÐøÏÂÃæµÄ²Ù×÷¡££¨ÕâÀïÊÇÒ»¸ö½Ì³Ì£©
ÃüÁî git branch ÁгöÁ˱¾µØ»úÆ÷ÉϵÄËùÓзÖÖ§¡£Èç¹ûÒª´´½¨Ò»¸öеķÖÖ§£¬¿ÉÒÔʹÓÃÃüÁî git branch £¬ÆäÖÐ ±íʾ·ÖÖ§µÄÃû×Ö£¬±ÈÈç˵ master¡£
git checkout ÃüÁî¿ÉÒÔÇл»µ½ÏÖÓеķÖÖ§¡£ÄãÒ²¿ÉÒÔʹÓà git checkout -b ÃüÁî´´½¨Ò»¸öеķÖÖ§²¢Á¢¼´Çл»µ½Ëü¡£´ó¶àÊýÈ˶¼Ê¹ÓôËÃüÁî¶ø²»Êǵ¥¶ÀµÄ branch ºÍ checkout ÃüÁî¡£
git branch
git branch
git checkout
git checkout -b
Èç¹ûÄã¶ÔÒ»¸ö·ÖÖ§½øÐÐÁËһϵÁеĸü¸Ä£¬¼ÙÈç˵´Ë·ÖÖ§ÃûΪ develop£¬Èç¹ûÏëÒª½«¸Ã·ÖÖ§ºÏ²¢»ØÖ÷·ÖÖ§£¨master£©ÉÏ£¬ÔòʹÓà git merge ÃüÁî¡£ÄãÐèÒªÏȼì³ö£¨checkout£©Ö÷·ÖÖ§£¬È»ºóÔËÐÐ git merge develop ½« develop ºÏ²¢µ½Ö÷·ÖÖ§ÖС£
git merge
Èç¹ûÄãÕýÔÚÓë¶à¸öÈ˽øÐÐÐ×÷£¬Äã»á·¢ÏÖÓÐʱ GitHub µÄ²Ö¿âÉÏÒѾ¸üÐÂÁË£¬µ«ÄãµÄ±¾µØȴûÓÐ×öÏàÓ¦µÄ¸ü¸Ä¡£Èç¹ûÊÇÕâÑù£¬Äã¿ÉÒÔʹÓà git pull origin ÃüÁî´ÓÔ¶³Ì·ÖÖ§ÖÐÀÈ¡×îеĸü¸Ä¡£
git pull origin
Èç¹ûÄúºÃÆæµØÏë¿´µ½ÄÄЩÎļþÒѱ»¸ü¸ÄÒÔ¼°ÄÄЩÄÚ´æÕýÔÚ±»¸ú×Ù£¬¿ÉÒÔʹÓà git status ÃüÁî¡£Èç¹ûÒª²é¿´Ã¿¸öÎļþµÄ¸ü¸Ä£¬¿ÉÒÔʹÓà git diff À´²é¿´Ã¿¸öÎļþÖиü¸ÄµÄÐС£
git status
git diff --stat
¸ß¼¶ÃüÁîºÍ×î¼Ñʵ¼ù
ºÜ¿ìÄã»áµ½´ïÒ»¸ö½×¶Î£¬ÕâʱÄãÏ£ÍûÄãµÄÌá½»¿´ÆðÀ´Õû½àÒ»Ö¡£Äã¿ÉÄÜ»¹ÐèÒªµ÷ÕûÄãµÄÌá½»¼Ç¼£¬Ê¹µÃÌá½»¸üÈÝÒ×Àí½â»òÕßÄÜ»¹ÔÒ»¸öÒâÍâµÄÓÐÆÆ»µÐԵĸü¸Ä¡£
git log ÃüÁî¿ÉÒÔÊä³öÌá½»µÄÀúÊ·¼Ç¼¡£Ä㽫ʹÓÃËüÀ´²é¿´Ìá½»µÄÀúÊ·¼Ç¼¡£
ÄãµÄÌá½»»á¸½´øÏûÏ¢ºÍÒ»¸ö¹þÏ£Öµ£¬¹þÏ£ÖµÊÇÒ»´®°üº¬Êý×ÖºÍ×ÖĸµÄËæ»úÐòÁС£Ò»¸ö¹þϣֵʾÀýÈçÏ£ºc3d882aa1aa4e3d5f18b3890132670fbeac912f7¡£
git log
¼ÙÉèÄãÍÆËÍÁËһЩ¿ÉÄÜÆÆ»µÁËÄãÓ¦ÓóÌÐòµÄ¶«Î÷¡£Äã×îºÃ»ØÍËÒ»¸öÌύȻºóÔÙÌá½»Ò»´ÎÕýÈ·µÄ£¬¶ø²»ÊÇÐÞ¸´ËüºÍÍÆËÍеĶ«Î÷¡£
Èç¹ûÄãÏ£Íû¼°Ê±»ØÍ˲¢´Ó֮ǰµÄÌá½»Öмì³ö£¨checkout£©ÄãµÄÓ¦ÓóÌÐò£¬Ôò¿ÉÒÔʹÓøùþÏ£×÷Ϊ·ÖÖ§ÃûÖ±½ÓÖ´Ðд˲Ù×÷¡£Õ⽫ʹÄãµÄÓ¦ÓóÌÐòÓ뵱ǰ°æ±¾·ÖÀ루ÒòΪÄãÕýÔÚ±à¼ÀúÊ·¼Ç¼µÄ°æ±¾£¬¶ø²»Êǵ±Ç°°æ±¾£©¡£
git checkout c3d88eaa1aa4e4d5f
È»ºó£¬Èç¹ûÄãÔÚÄǸöÀúÊ··ÖÖ§ÖÐ×öÁ˸ü¸Ä£¬²¢ÇÒÏëÒªÔÙ´ÎÍÆËÍ£¬Äã±ØÐëʹÓÃÇ¿ÖÆÍÆËÍ¡£
×¢Ò⣺ǿÖÆÍÆËÍÊÇΣÏյģ¬Ö»ÓÐÔÚ¾ø¶Ô±ØÒªµÄʱºò²ÅÄÜÖ´ÐÐËü¡£Ëü½«¸²¸ÇÄãµÄÓ¦ÓóÌÐòµÄÀúÊ·¼Ç¼£¬Ä㽫ʧȥ֮ºó°æ±¾µÄÈκÎÐÅÏ¢¡£
git push -f origin master
ÔÚÆäËûʱºò£¬½«ËùÓÐÄÚÈݱ£ÁôÔÚÒ»¸öÌá½»ÖÐÊDz»ÏÖʵµÄ¡£Ò²ÐÐÄãÏëÔÚ³¢ÊÔÓÐDZÔÚ·çÏյIJÙ×÷֮ǰ±£´æµ±Ç°½ø¶È£¬»òÕßÒ²ÐíÄã·¸ÁËÒ»¸ö´íÎ󣬵«Ï£ÍûÔÚÄãµÄ°æ±¾ÀúÊ·ÖбÜÃâÞÏÞεØÁô×ÅÕâ¸ö´íÎ󡣶Դˣ¬ÎÒÃÇÓÐ git rebase¡£
¼ÙÉèÄãÔÚ±¾µØÀúÊ·¼Ç¼ÉÏÓÐ 4 ¸öÌá½»£¨Ã»ÓÐÍÆË͵½ GitHub£©£¬ÄãÒª»ØÍËÕâÊǸöÌá½»¡£ÄãµÄÌá½»¼Ç¼¿´ÆðÀ´ºÜÂÒºÜÍÏÀ¡£ÕâʱÄã¿ÉÒÔʹÓà rebase ½«ËùÓÐÕâЩÌá½»ºÏ²¢µ½Ò»¸ö¼òµ¥µÄÌá½»ÖС£
git rebase -i HEAD~4
ÉÏÃæµÄÃüÁî»á´ò¿ªÄã¼ÆËã»úµÄĬÈϱà¼Æ÷£¨Ä¬ÈÏΪ Vim£¬³ý·ÇÄ㽫ĬÈÏÐÞ¸ÄΪÆäËûµÄ£©£¬ÌṩÁ˼¸¸öÄã×¼±¸ÈçºÎÐÞ¸ÄÄãµÄÌá½»µÄÑ¡Ïî¡£Ëü¿´ÆðÀ´¾ÍÏñÏÂÃæµÄ´úÂ룺
pick 130deo9 oldest commit message
pick 4209fei second oldest commit message
pick 4390gne third oldest commit message
pick bmo0dne newest commit message
ΪÁ˺ϲ¢ÕâЩÌá½»£¬ÎÒÃÇÐèÒª½« pick Ñ¡ÏîÐÞ¸ÄΪ fixup£¨Èç´úÂëÏÂÃæµÄÎĵµËùʾ£©£¬ÒÔ½«¸ÃÌá½»ºÏ²¢²¢¶ªÆú¸ÃÌá½»ÏûÏ¢¡£Çë×¢Ò⣬ÔÚ Vim ÖУ¬ÄãÐèÒª°´Ï a »ò i ²ÅÄܱà¼Îı¾£¬Òª±£´æÍ˳ö£¬ÄãÐèÒª°´Ï Esc ¼ü£¬È»ºó°´ shift + z + z¡£²»ÒªÎÊÎÒΪʲô£¬Ëü¾ÍÊÇÕâÑù¡£
pick 130deo9 oldest commit message
fixup 4209fei second oldest commit message
fixup 4390gne third oldest commit message
fixup bmo0dne newest commit message
Õ⽫°ÑÄãµÄËùÓÐÌá½»ºÏ²¢µ½Ò»¸öÌá½»ÖУ¬Ìá½»ÏûϢΪ oldest commit message¡£
ÏÂÒ»²½ÊÇÖØÃüÃûÄãµÄÌá½»ÏûÏ¢¡£ÕâÍêÈ«ÊÇÒ»¸ö½¨ÒéµÄ²Ù×÷£¬µ«Ö»ÒªÄãÒ»Ö±×ñÑÒ»ÖµÄģʽ£¬¶¼¿ÉÒÔ×öµÃºÜºÃ¡£ÕâÀïÎÒ½¨ÒéʹÓà Google Ϊ Angular.js ÌṩµÄÌá½»Ö¸ÄÏ¡£
ΪÁ˸ü¸ÄÌá½»ÏûÏ¢£¬ÇëʹÓà amend ±êÖ¾¡£
git commit --amend
ÕâÒ²»á´ò¿ª Vim£¬Îı¾±à¼ºÍ±£´æ¹æÔòÈçÉÏËùʾ¡£ÎªÁ˸ø³öÒ»¸öÁ¼ºÃµÄÌá½»ÏûÏ¢µÄÀý×Ó£¬ÏÂÃæÊÇ×ñѸÃÖ¸ÄÏÖйæÔòµÄÌá½»ÏûÏ¢£º
feat: add stripe checkout button to payments page
- add stripe checkout button
- write tests for checkout
±£³ÖÖ¸ÄÏÖÐÁгöµÄÀàÐ͵ÄÒ»¸öÓŵãÊÇËüʹ±àд¸ü¸ÄÈÕÖ¾¸ü¼ÓÈÝÒס£Ä㻹¿ÉÒÔÔÚÒ³½Å£¨ÔٴΣ¬ÔÚÖ¸ÄÏÖй涨µÄ£©Öаüº¬ÐÅÏ¢À´ÒýÓÃÎÊÌâ¡£
×¢Ò⣺Èç¹ûÄãÕýÔÚÐ×÷Ò»¸öÏîÄ¿£¬²¢½«´úÂëÍÆË͵½ÁË GitHub£¬ÄãÓ¦¸Ã±ÜÃâÖØÐÂÒýÓã¨rebase£©²¢Ñ¹Ëõ£¨squash£©ÄãµÄÌá½»¡£Èç¹ûÄ㿪ʼÔÚÈËÃǵÄÑÛƤ×Óµ×ϸü¸Ä°æ±¾ÀúÊ·£¬ÄÇôÄã¿ÉÄÜ»áÓöµ½ÄÑÒÔ×·×ٵĴíÎ󣬴Ӷø¸øÿ¸öÈ˶¼´øÀ´Âé·³¡£
Git ÓÐÎÞÊýµÄÃüÁµ«ÕâÀï½éÉܵÄÃüÁî¿ÉÄÜÊÇÄú×î³õ¼¸Äê±à³ÌËùÐèÒªÖªµÀµÄËùÓС£
Sam Corcos ÊÇ Sightline Maps µÄÊ×ϯ¿ª·¢¹¤³ÌʦºÍÁªºÏ´´Ê¼ÈË£¬Sightline Maps ÊÇ×îÖ±¹ÛµÄ 3D ´òÓ¡µØÐÎͼµÄƽ̨£¬ÒÔ¼°ÓÃÓÚ¹¹½¨ Phoenix ºÍ React µÄ¿ÉÀ©Õ¹Éú²úÓ¦ÓóÌÐòµÄÖм¶¸ß¼¶½Ì³ÌÍøÕ¾ LearnPhoenix.io¡£Ê¹ÓÃÓÅ»ÝÂ룺freecodecamp È¡µÃ LearnPhoenix µÄ20ÃÀÔª¡£
±¾ÎÄתÔØ×Ô£ºhttp://www.linuxprobe.com/daily-git-commands.html
Ãâ·ÑÌṩ×îÐÂLinux¼¼Êõ½Ì³ÌÊé¼®£¬Îª¿ªÔ´¼¼Êõ°®ºÃÕßŬÁ¦×öµÃ¸ü¶à¸üºÃ£¬¿ªÔ´Õ¾µã£ºhttp://www.linuxprobe.com/
Ronny ÓÚ 2017-09-21 08:18:39·¢±í:
ºÜºÃµÄÎÄÕÂ