ºìÁªLinuxÃÅ»§
Linux°ïÖú

ËùÓõÄÈÕ³£ Git ÃüÁ

·¢²¼Ê±¼ä:2017-09-21 08:17:51À´Ô´:ºìÁª×÷Õß:Ronny
µ¼¶Á Ïñ´ó¶àÊýÐÂÊÖÒ»Ñù£¬ÎÒÒ»¿ªÊ¼ÊÇÔÚ 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/
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 1 ÌõÆÀÂÛ

  1. Ronny ÓÚ 2017-09-21 08:18:39·¢±í:

    ºÜºÃµÄÎÄÕÂ