±à¼ÍƼö: |
±¾ÎÄÖ÷Ҫͼ½âgitÖеÄ×î³£ÓÃÃüÁî,Èç¹ûÄãÉÔ΢Àí½âgitµÄ¹¤×÷ÔÀí£¬ÕâÆªÎÄÕÂÄܹ»ÈÃÄãÀí½âµÄ¸ü͸³¹¡£
±¾ÎÄÀ´×ÔÓÚmarklodato.github.io£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
»ù±¾Ó÷¨

ÉÏÃæµÄËÄÌõÃüÁîÔÚ¹¤×÷Ŀ¼¡¢ÔÝ´æÄ¿Â¼(Ò²½Ð×öË÷Òý)ºÍ²Ö¿âÖ®¼ä¸´ÖÆÎļþ¡£
git add files °Ñµ±Ç°Îļþ·ÅÈëÔÝ´æÇøÓò¡£
git commit ¸øÔÝ´æÇøÓòÉú³É¿ìÕÕ²¢Ìá½»¡£
git reset -- files ÓÃÀ´³·Ïú×îºóÒ»´Îgit add files£¬ÄãÒ²¿ÉÒÔÓÃgit
reset ³·ÏúËùÓÐÔÝ´æÇøÓòÎļþ¡£
git checkout -- files °ÑÎļþ´ÓÔÝ´æÇøÓò¸´ÖƵ½¹¤×÷Ŀ¼£¬ÓÃÀ´¶ªÆú±¾µØÐ޸ġ£
Äã¿ÉÒÔÓà git reset -p, git checkout -p, or git add -p½øÈë½»»¥Ä£Ê½¡£
Ò²¿ÉÒÔÌø¹ýÔÝ´æÇøÓòÖ±½Ó´Ó²Ö¿âÈ¡³öÎļþ»òÕßÖ±½ÓÌá½»´úÂë¡£

git commit -a Ï൱ÓÚÔËÐÐ git add °ÑËùÓе±Ç°Ä¿Â¼ÏµÄÎļþ¼ÓÈëÔÝ´æÇøÓòÔÙÔËÐС£git
commit.
git commit files ½øÐÐÒ»´Î°üº¬×îºóÒ»´ÎÌá½»¼ÓÉϹ¤×÷Ŀ¼ÖÐÎļþ¿ìÕÕµÄÌá½»¡£²¢ÇÒÎļþ±»Ìí¼Óµ½ÔÝ´æÇøÓò¡£
git checkout HEAD -- files »Ø¹öµ½¸´ÖÆ×îºóÒ»´ÎÌá½»¡£
Ô¼¶¨
ºóÎÄÖÐÒÔÏÂÃæµÄÐÎʽʹÓÃͼƬ¡£

ÂÌÉ«µÄ5λ×Ö·û±íʾÌá½»µÄID£¬·Ö±ðÖ¸Ïò¸¸½Úµã¡£·ÖÖ§ÓÃéÙÉ«ÏÔʾ£¬·Ö±ðÖ¸ÏòÌØ¶¨µÄÌá½»¡£µ±Ç°·ÖÖ§Óɸ½ÔÚÆäÉϵÄHEAD±êʶ¡£
ÕâÕÅͼƬÀïÏÔʾ×îºó5´ÎÌá½»£¬ed489ÊÇ×îÐÂÌá½»¡£ main·ÖÖ§Ö¸Ïò´Ë´ÎÌá½»£¬ÁíÒ»¸östable·ÖÖ§Ö¸Ïò׿¸¸Ìá½»½Úµã¡£
ÃüÁîÏê½â
Diff
ÓÐÐí¶àÖÖ·½·¨²é¿´Á½´ÎÌá½»Ö®¼äµÄ±ä¶¯¡£ÏÂÃæÊÇһЩʾÀý¡£

Commit
Ìύʱ£¬gitÓÃÔÝ´æÇøÓòµÄÎļþ´´½¨Ò»¸öеÄÌá½»£¬²¢°Ñ´ËʱµÄ½ÚµãÉèΪ¸¸½Úµã¡£È»ºó°Ñµ±Ç°·ÖÖ§Ö¸ÏòеÄÌá½»½Úµã¡£ÏÂͼÖУ¬µ±Ç°·ÖÖ§ÊÇmain¡£
ÔÚÔËÐÐÃüÁî֮ǰ£¬mainÖ¸Ïòed489£¬Ìá½»ºó£¬mainÖ¸ÏòеĽڵãf0cec²¢ÒÔed489×÷Ϊ¸¸½Úµã¡£

¼´±ãµ±Ç°·ÖÖ§ÊÇij´ÎÌá½»µÄ׿¸¸½Úµã£¬git»áͬÑù²Ù×÷¡£ÏÂͼÖУ¬ÔÚmain·ÖÖ§µÄ׿¸¸½Úµãstable·ÖÖ§½øÐÐÒ»´ÎÌá½»£¬Éú³ÉÁË1800b¡£
ÕâÑù£¬stable·ÖÖ§¾Í²»ÔÙÊÇmain·ÖÖ§µÄ׿¸¸½Úµã¡£´Ëʱ£¬ºÏ²¢ (»òÕß ÑܺÏ) ÊDZØÐëµÄ¡£

Èç¹ûÏë¸ü¸ÄÒ»´ÎÌá½»£¬Ê¹Óà git commit --amend¡£git»áʹÓÃÓ뵱ǰÌá½»ÏàͬµÄ¸¸½Úµã½øÐÐÒ»´ÎÐÂÌá½»£¬¾ÉµÄÌá½»»á±»È¡Ïû¡£

ÁíÒ»¸öÀý×ÓÊÇ·ÖÀëHEADÌá½»,ºóÎĽ²¡£
Checkout
checkoutÃüÁîÓÃÓÚ´ÓÀúÊ·Ìá½»£¨»òÕßÔÝ´æÇøÓò£©Öп½±´Îļþµ½¹¤×÷Ŀ¼£¬Ò²¿ÉÓÃÓÚÇл»·ÖÖ§¡£
µ±¸ø¶¨Ä³¸öÎļþÃû£¨»òÕß´ò¿ª-pÑ¡Ï»òÕßÎļþÃûºÍ-pÑ¡Ïîͬʱ´ò¿ª£©Ê±£¬git»á´ÓÖ¸¶¨µÄÌá½»Öп½±´Îļþµ½ÔÝ´æÇøÓòºÍ¹¤×÷Ŀ¼¡£±ÈÈ磬git
checkout HEAD~ foo.c»á½«Ìá½»½ÚµãHEAD~(¼´µ±Ç°Ìá½»½ÚµãµÄ¸¸½Úµã)ÖеÄfoo.c¸´ÖƵ½¹¤×÷Ŀ¼²¢ÇÒ¼Óµ½ÔÝ´æÇøÓòÖС££¨Èç¹ûÃüÁîÖÐûÓÐÖ¸¶¨Ìá½»½Úµã£¬Ôò»á´ÓÔÝ´æÇøÓòÖп½±´ÄÚÈÝ¡££©×¢Ò⵱ǰ·ÖÖ§²»»á·¢Éú±ä»¯¡£

µ±²»Ö¸¶¨ÎļþÃû£¬¶øÊǸø³öÒ»¸ö£¨±¾µØ£©·Ö֧ʱ£¬ÄÇôHEAD±êʶ»áÒÆ¶¯µ½ÄǸö·ÖÖ§£¨Ò²¾ÍÊÇ˵£¬ÎÒÃÇ¡°Çл»¡±µ½ÄǸö·ÖÖ§ÁË£©£¬È»ºóÔÝ´æÇøÓòºÍ¹¤×÷Ŀ¼ÖеÄÄÚÈÝ»áºÍHEAD¶ÔÓ¦µÄÌá½»½ÚµãÒ»Ö¡£ÐÂÌá½»½Úµã£¨ÏÂͼÖеÄa47c3£©ÖеÄËùÓÐÎļþ¶¼»á±»¸´ÖÆ£¨µ½ÔÝ´æÇøÓòºÍ¹¤×÷Ŀ¼ÖУ©£»Ö»´æÔÚÓÚÀϵÄÌá½»½Úµã£¨ed489£©ÖеÄÎļþ»á±»É¾³ý£»²»ÊôÓÚÉÏÊöÁ½ÕßµÄÎļþ»á±»ºöÂÔ£¬²»ÊÜÓ°Ïì¡£

Èç¹û¼ÈûÓÐÖ¸¶¨ÎļþÃû£¬Ò²Ã»ÓÐÖ¸¶¨·ÖÖ§Ãû£¬¶øÊÇÒ»¸ö±êÇ©¡¢Ô¶³Ì·ÖÖ§¡¢SHA-1Öµ»òÕßÊÇÏñmain~3ÀàËÆµÄ¶«Î÷£¬¾ÍµÃµ½Ò»¸öÄäÃû·ÖÖ§£¬³Æ×÷detached
HEAD£¨±»·ÖÀëµÄHEAD±êʶ£©¡£ÕâÑù¿ÉÒԺܷ½±ãµØÔÚÀúÊ·°æ±¾Ö®¼ä»¥ÏàÇл»¡£±ÈÈç˵ÄãÏëÒª±àÒë1.6.6.1°æ±¾µÄgit£¬Äã¿ÉÒÔÔËÐÐgit
checkout v1.6.6.1£¨ÕâÊÇÒ»¸ö±êÇ©£¬¶ø·Ç·ÖÖ§Ãû£©£¬±àÒ룬°²×°£¬È»ºóÇл»»ØÁíÒ»¸ö·ÖÖ§£¬±ÈÈç˵git
checkout main¡£È»¶ø£¬µ±Ìá½»²Ù×÷Éæ¼°µ½¡°·ÖÀëµÄHEAD¡±Ê±£¬ÆäÐÐΪ»áÂÔÓв»Í¬£¬ÏêÇé¼ûÔÚÏÂÃæ¡£

HEAD±êʶ´¦ÓÚ·ÖÀë״̬ʱµÄÌá½»²Ù×÷
µ±HEAD´¦ÓÚ·ÖÀë״̬£¨²»ÒÀ¸½ÓÚÈÎÒ»·ÖÖ§£©Ê±£¬Ìá½»²Ù×÷¿ÉÒÔÕý³£½øÐУ¬µ«ÊDz»»á¸üÐÂÈκÎÒÑÃüÃûµÄ·ÖÖ§¡£(Äã¿ÉÒÔÈÏΪÕâÊÇÔÚ¸üÐÂÒ»¸öÄäÃû·ÖÖ§¡£)

Ò»µ©´ËºóÄãÇл»µ½±ðµÄ·ÖÖ§£¬±ÈÈç˵main£¬ÄÇôÕâ¸öÌá½»½Úµã£¨¿ÉÄÜ£©ÔÙÒ²²»»á±»ÒýÓõ½£¬È»ºó¾Í»á±»¶ªÆúµôÁË¡£×¢ÒâÕâ¸öÃüÁîÖ®ºó¾Í²»»áÓж«Î÷ÒýÓÃ2eecb¡£

µ«ÊÇ£¬Èç¹ûÄãÏë±£´æÕâ¸ö״̬£¬¿ÉÒÔÓÃÃüÁîgit checkout -b nameÀ´´´½¨Ò»¸öеķÖÖ§¡£

Reset
resetÃüÁî°Ñµ±Ç°·ÖÖ§Ö¸ÏòÁíÒ»¸öλÖ㬲¢ÇÒÓÐÑ¡ÔñµÄ±ä¶¯¹¤×÷Ŀ¼ºÍË÷Òý¡£Ò²ÓÃÀ´ÔÚ´ÓÀúÊ·²Ö¿âÖи´ÖÆÎļþµ½Ë÷Òý£¬¶ø²»¶¯¹¤×÷Ŀ¼¡£
Èç¹û²»¸øÑ¡ÏÄÇôµ±Ç°·ÖÖ§Ö¸Ïòµ½ÄǸöÌá½»¡£Èç¹ûÓÃ--hardÑ¡ÏÄÇô¹¤×÷Ŀ¼Ҳ¸üУ¬Èç¹ûÓÃ--softÑ¡ÏÄÇô¶¼²»±ä¡£

Èç¹ûûÓиø³öÌá½»µãµÄ°æ±¾ºÅ£¬ÄÇôĬÈÏÓÃHEAD¡£ÕâÑù£¬·ÖÖ§Ö¸Ïò²»±ä£¬µ«ÊÇË÷Òý»á»Ø¹öµ½×îºóÒ»´ÎÌá½»£¬Èç¹ûÓÃ--hardÑ¡Ï¹¤×÷Ŀ¼ҲͬÑù¡£

Èç¹û¸øÁËÎļþÃû(»òÕß -pÑ¡Ïî), ÄÇô¹¤×÷Ч¹ûºÍ´øÎļþÃûµÄcheckout²î²»¶à£¬³ýÁËË÷Òý±»¸üС£

Merge
merge ÃüÁî°Ñ²»Í¬·ÖÖ§ºÏ²¢ÆðÀ´¡£ºÏ²¢Ç°£¬Ë÷Òý±ØÐëºÍµ±Ç°Ìá½»Ïàͬ¡£Èç¹ûÁíÒ»¸ö·ÖÖ§Êǵ±Ç°Ìá½»µÄ׿¸¸½Úµã£¬ÄÇôºÏ²¢ÃüÁʲôҲ²»×ö¡£
ÁíÒ»ÖÖÇé¿öÊÇÈç¹ûµ±Ç°Ìá½»ÊÇÁíÒ»¸ö·ÖÖ§µÄ׿¸¸½Úµã£¬¾Íµ¼ÖÂfast-forwardºÏ²¢¡£Ö¸ÏòÖ»ÊǼòµ¥µÄÒÆ¶¯£¬²¢Éú³ÉÒ»¸öеÄÌá½»¡£

·ñÔò¾ÍÊÇÒ»´ÎÕæÕýµÄºÏ²¢¡£Ä¬Èϰѵ±Ç°Ìá½»(ed489 ÈçÏÂËùʾ)ºÍÁíÒ»¸öÌá½»(33104)ÒÔ¼°ËûÃǵĹ²Í¬×游½Úµã(b325c)½øÐÐÒ»´ÎÈý·½ºÏ²¢¡£½á¹ûÊÇÏȱ£´æµ±Ç°Ä¿Â¼ºÍË÷Òý£¬È»ºóºÍ¸¸½Úµã33104Ò»Æð×öÒ»´ÎÐÂÌá½»¡£

Cherry Pick
cherry-pickÃüÁî"¸´ÖÆ"Ò»¸öÌá½»½Úµã²¢ÔÚµ±Ç°·ÖÖ§×öÒ»´ÎÍêȫһÑùµÄÐÂÌá½»¡£

Rebase
ÑܺÏÊǺϲ¢ÃüÁîµÄÁíÒ»ÖÖÑ¡Ôñ¡£ºÏ²¢°ÑÁ½¸ö¸¸·ÖÖ§ºÏ²¢½øÐÐÒ»´ÎÌá½»£¬Ìá½»ÀúÊ·²»ÊÇÏßÐԵġ£ÑܺÏÔÚµ±Ç°·ÖÖ§ÉÏÖØÑÝÁíÒ»¸ö·ÖÖ§µÄÀúÊ·£¬Ìá½»ÀúÊ·ÊÇÏßÐԵġ£
±¾ÖÊÉÏ£¬ÕâÊÇÏßÐÔ»¯µÄ×Ô¶¯µÄ cherry-pick

ÉÏÃæµÄÃüÁî¶¼ÔÚtopic·ÖÖ§ÖнøÐУ¬¶ø²»ÊÇmain·ÖÖ§£¬ÔÚmain·ÖÖ§ÉÏÖØÑÝ£¬²¢ÇÒ°Ñ·ÖÖ§Ö¸ÏòеĽڵ㡣עÒâ¾ÉÌύûÓб»ÒýÓ㬽«±»»ØÊÕ¡£
ÒªÏÞÖÆ»Ø¹ö·¶Î§£¬Ê¹ÓÃ--ontoÑ¡Ïî¡£ÏÂÃæµÄÃüÁîÔÚmain·ÖÖ§ÉÏÖØÑݵ±Ç°·ÖÖ§´Ó169a6ÒÔÀ´µÄ×î½ü¼¸¸öÌá½»£¬¼´2c33a¡£

ͬÑùÓÐgit rebase --interactiveÈÃÄã¸ü·½±ãµÄÍê³ÉһЩ¸´ÔÓ²Ù×÷£¬±ÈÈ綪Æú¡¢ÖØÅÅ¡¢Ð޸ġ¢ºÏ²¢Ìá½»¡£Ã»ÓÐͼƬÌåÏÖÕâЩ£¬Ï¸½Ú¿´ÕâÀï:git-rebase(1)
¼¼Êõ˵Ã÷
ÎļþÄÚÈݲ¢Ã»ÓÐÕæÕý´æ´¢ÔÚË÷Òý(.git/index)»òÕßÌá½»¶ÔÏóÖУ¬¶øÊÇÒÔblobµÄÐÎʽ·Ö±ð´æ´¢ÔÚÊý¾Ý¿âÖÐ(.git/objects)£¬²¢ÓÃSHA-1ÖµÀ´Ð£Ñé¡£
Ë÷ÒýÎļþÓÃʶ±ðÂëÁгöÏà¹ØµÄblobÎļþÒÔ¼°±ðµÄÊý¾Ý¡£¶ÔÓÚÌá½»À´Ëµ£¬ÒÔÊ÷(tree)µÄÐÎʽ´æ´¢£¬Í¬ÑùÓöÔÓڵĹþϣֵʶ±ð¡£Ê÷¶ÔӦ׏¤×÷Ŀ¼ÖеÄÎļþ¼Ð£¬Ê÷Öаüº¬µÄ
Ê÷»òÕßblob¶ÔÏó¶ÔÓ¦×ÅÏàÓ¦µÄ×ÓĿ¼ºÍÎļþ¡£Ã¿´ÎÌá½»¶¼´æ´¢ÏÂËüµÄÉÏÒ»¼¶Ê÷µÄʶ±ðÂë¡£
Èç¹ûÓÃdetached HEADÌá½»£¬ÄÇô×îºóÒ»´ÎÌá½»»á±»the reflog for HEADÒýÓᣵ«ÊǹýÒ»¶Îʱ¼ä¾ÍʧЧ£¬×îÖÕ±»»ØÊÕ£¬Óëgit
commit --amend»òÕßgit rebaseºÜÏñ¡£
|