Èκΰ汾¿ØÖÆÏµÍ³µÄÒ»¸ö×îÓеÄÓÃÌØÐÔ¾ÍÊÇ¡°³·Ïú (undo)¡±ÄãµÄ´íÎó²Ù×÷µÄÄÜÁ¦¡£ÔÚ Git À¡°³·Ïú¡± Ô̺¬Á˲»ÉÙÂÔÓвî±ðµÄ¹¦ÄÜ¡£
µ±Äã½øÐÐÒ»´ÎеÄÌá½»µÄʱºò£¬Git »á±£´æÄã´úÂë¿âÔÚÄǸöÌØ¶¨Ê±¼äµãµÄ¿ìÕÕ£»Ö®ºó£¬Äã¿ÉÒÔÀûÓà Git ·µ»Øµ½ÄãµÄÏîÄ¿µÄÒ»¸öÔçÆÚ°æ±¾¡£
ÔÚ±¾Æª²©ÎÄÀÎһὲ½âijЩÄãÐèÒª¡°³·Ïú¡±ÒÑ×ö³öµÄÐ޸ĵij£¼û³¡¾°£¬ÒÔ¼°ÀûÓà Git ½øÐÐÕâЩ²Ù×÷µÄ×î¼Ñ·½·¨¡£
³·ÏúÒ»¸ö¡°Òѹ«¿ª¡±µÄ¸Ä±ä
³¡¾°: ÄãÒѾִÐÐÁË git push, °ÑÄãµÄÐ޸ķ¢Ë͵½ÁË GitHub£¬ÏÖÔÚÄãÒâʶµ½ÕâЩ commit µÄÆäÖÐÒ»¸öÊÇÓÐÎÊÌâµÄ£¬ÄãÐèÒª³·ÏúÄÇÒ»¸ö commit.
·½·¨: git revert <SHA>
ÔÀí: git revert »á²úÉúÒ»¸öÐ嵀 commit£¬ËüºÍÖ¸¶¨ SHA ¶ÔÓ¦µÄ commit ÊÇÏà·´µÄ£¨»òÕß˵ÊÇ·´×ªµÄ£©¡£Èç¹ûÔÏ鵀 commit ÊÇ¡°ÎïÖÊ¡±£¬Ð嵀 commit ¾ÍÊÇ¡°·´ÎïÖÊ¡± ¡ª ÈκδÓÔÏ鵀 commit Àïɾ³ýµÄÄÚÈÝ»áÔÚÐ嵀 commit Àï±»¼Ó»ØÈ¥£¬ÈκÎÔÚÔÏ鵀 commit Àï¼ÓÈëµÄÄÚÈÝ»áÔÚÐ嵀 commit Àﱻɾ³ý¡£
ÕâÊÇ Git ×ȫ¡¢×î»ù±¾µÄ³·Ïú³¡¾°£¬ÒòΪËü²¢²»»á¸Ä±äÀúÊ· ¡ª ËùÒÔÄãÏÖÔÚ¿ÉÒÔ git push еġ°·´×ª¡± commit À´µÖÏûÄã´íÎóÌá½»µÄ commit¡£
ÐÞÕý×îºóÒ»¸ö commit ÏûÏ¢
³¡¾°: ÄãÔÚ×îºóÒ»Ìõ commit ÏûÏ¢ÀïÓиö±ÊÎó£¬ÒѾִÐÐÁË git commit -m "Fxies bug #42"£¬µ«ÔÚ git push ֮ǰÄãÒâʶµ½ÏûÏ¢Ó¦¸ÃÊÇ ¡°Fixes bug #42¡å¡£
·½·¨: git commit --amend »ò git commit --amend -m "Fixes bug #42"
ÔÀí: git commit --amend »áÓÃÒ»¸öÐ嵀 commit ¸üв¢Ìæ»»×î½üµÄ commit £¬Õâ¸öÐ嵀 commit »á°ÑÈκÎÐÞ¸ÄÄÚÈݺÍÉÏÒ»¸ö commit µÄÄÚÈݽáºÏÆðÀ´¡£Èç¹ûµ±Ç°Ã»ÓÐÌá³öÈκÎÐ޸ģ¬Õâ¸ö²Ù×÷¾ÍÖ»»á°ÑÉÏ´ÎµÄ commit ÏûÏ¢ÖØÐ´Ò»±é¡£
³·Ïú¡°±¾µØµÄ¡±ÐÞ¸Ä
³¡¾°: һֻè´Ó¼üÅÌÉÏ×ß¹ý£¬ÎÞÒâÖб£´æÁËÐ޸ģ¬È»ºóÆÆ»µÁË±à¼Æ÷¡£²»¹ý£¬Ä㻹ûÓÐ commit ÕâЩÐ޸ġ£ÄãÏëÒª»Ö¸´±»ÐÞ¸ÄÎļþÀïµÄËùÓÐÄÚÈÝ ¡ª ¾ÍÏñÉÏ´Î commit µÄʱºòһģһÑù¡£
·½·¨: git checkout -- <bad filename>
ÔÀí: git checkout »á°Ñ¹¤×÷Ŀ¼ÀïµÄÎļþÐ޸ĵ½ Git ֮ǰ¼Ç¼µÄij¸ö״̬¡£Äã¿ÉÒÔÌṩһ¸öÄãÏë·µ»ØµÄ·ÖÖ§Ãû»òÌØ¶¨ SHA £¬»òÕßÔÚȱʡÇé¿öÏ£¬Git »áÈÏΪÄãÏ£Íû checkout µÄÊÇ HEAD£¬µ±Ç° checkout ·ÖÖ§µÄ×îºóÒ»´Î commit¡£
¼Çס£ºÄãÓÃÕâÖÖ·½·¨¡°³·Ïú¡±µÄÈκÎÐÞ¸ÄÕæµÄ»áÍêÈ«Ïûʧ¡£ÒòΪËüÃÇ´ÓÀ´Ã»Óб»Ìá½»¹ý£¬ËùÒÔÖ®ºó Git Ò²ÎÞ·¨°ïÖúÎÒÃǻָ´ËüÃÇ¡£ÄãҪȷ±£×Ô¼ºÁ˽âÄãÔÚÕâ¸ö²Ù×÷ÀïÈÓµôµÄ¶«Î÷ÊÇʲô£¡£¨Ò²Ðí¿ÉÒÔÏÈÀûÓà git diff È·ÈÏһϣ©
ÖØÖá°±¾µØµÄ¡±ÐÞ¸Ä
³¡¾°: ÄãÔÚ±¾µØÌá½»ÁËһЩ¶«Î÷£¨»¹Ã»ÓÐ push£©£¬µ«ÊÇËùÓÐÕâЩ¶«Î÷¶¼ºÜÔã¸â£¬ÄãÏ£Íû³·ÏúÇ°ÃæµÄÈý´ÎÌá½» ¡ª ¾ÍÏñËüÃÇ´ÓÀ´Ã»Óз¢Éú¹ýÒ»Ñù¡£
·½·¨: git reset <last good SHA> »ò git reset --hard <last good SHA>
ÔÀí: git reset »á°ÑÄãµÄ´úÂë¿âÀúÊ··µ»Øµ½Ö¸¶¨µÄ SHA ״̬¡£ ÕâÑù¾ÍÏñÊÇÕâЩÌá½»´ÓÀ´Ã»Óз¢Éú¹ý¡£È±Ê¡Çé¿öÏ£¬ git reset »á±£Áô¹¤×÷Ŀ¼¡£ÕâÑù£¬Ìá½»ÊÇûÓÐÁË£¬µ«ÊÇÐÞ¸ÄÄÚÈÝ»¹ÔÚ´ÅÅÌÉÏ¡£ÕâÊÇÒ»ÖÖ°²È«µÄÑ¡Ôñ£¬µ«Í¨³£ÎÒÃÇ»áÏ£ÍûÒ»²½¾Í¡°³·Ïú¡±Ìá½»ÒÔ¼°ÐÞ¸ÄÄÚÈÝ ¡ª Õâ¾ÍÊÇ --hard Ñ¡ÏîµÄ¹¦ÄÜ¡£
ÔÚ³·Ïú¡°±¾µØÐ޸ġ±Ö®ºóÔÙ»Ö¸´
³¡¾°: ÄãÌá½»Á˼¸¸ö commit£¬È»ºóÓà git reset --hard ³·ÏúÁËÕâЩÐ޸썼ûÉÏÒ»¶Î£©£¬½Ó×ÅÄãÓÖÒâʶµ½£ºÄãÏ£Íû»¹ÔÕâЩÐ޸ģ¡
·½·¨: git reflog ºÍ git reset »ò git checkout
ÔÀí: git reflog ¶ÔÓÚ»Ö¸´ÏîÄ¿ÀúÊ·ÊÇÒ»¸ö³¬°ôµÄ×ÊÔ´¡£Äã¿ÉÒÔ»Ö¸´¼¸ºõ Èκζ«Î÷ ¡ª ÈκÎÄã commit ¹ýµÄ¶«Î÷ ¡ª ֻҪͨ¹ý reflog¡£
Äã¿ÉÄÜÒѾÊìϤÁË git log ÃüÁËü»áÏÔʾ commit µÄÁÐ±í¡£ git reflog Ò²ÊÇÀàËÆµÄ£¬²»¹ýËüÏÔʾµÄÊÇÒ»¸ö HEAD ·¢Éú¸Ä±äµÄʱ¼äÁбí.
һЩעÒâÊÂÏ
- ËüÉæ¼°µÄÖ»ÊÇ HEAD µÄ¸Ä±ä¡£ÔÚÄãÇл»·ÖÖ§¡¢Óà git commit ½øÐÐÌá½»¡¢ÒÔ¼°Óà git reset ³·Ïú commit ʱ£¬HEAD »á¸Ä±ä£¬µ«µ±ÄãÓà git checkout -- <bad filename> ³·Ïúʱ£¨ÕýÈçÎÒÃÇÔÚÇ°Ãæ½²µ½µÄÇé¿ö£©£¬HEAD ²¢²»»á¸Ä±ä ¡ª ÈçǰËùÊö£¬ÕâЩÐ޸ĴÓÀ´Ã»Óб»Ìá½»¹ý£¬Òò´Ë reflog Ò²ÎÞ·¨°ïÖúÎÒÃǻָ´ËüÃÇ¡£
- git reflog ²»»áÓÀÔ¶±£³Ö¡£Git »á¶¨ÆÚÇåÀíÄÇЩ ¡°Óò»µ½µÄ¡± ¶ÔÏó¡£²»ÒªÖ¸Íû¼¸¸öÔÂǰµÄÌá½»»¹Ò»Ö±ÌÉÔÚÄÇÀï¡£
- ÄãµÄ reflog ¾ÍÊÇÄãµÄ£¬Ö»ÊÇÄãµÄ¡£Äã²»ÄÜÓà git reflog À´»Ö¸´ÁíÒ»¸ö¿ª·¢ÕßûÓÐ push ¹ýµÄ commit¡£

ÄÇô¡ÄãÔõôÀûÓà reflog À´¡°»Ö¸´¡±Ö®Ç°¡°³·Ïú¡±µÄ commit ÄØ£¿ËüÈ¡¾öÓÚÄãÏë×öµ½µÄµ½µ×ÊÇʲô£º
- Èç¹ûÄãÏ£Íû׼ȷµØ»Ö¸´ÏîÄ¿µÄÀúÊ·µ½Ä³¸öʱ¼äµã£¬Óà git reset --hard <SHA>
- Èç¹ûÄãÏ£ÍûÖØ½¨¹¤×÷Ŀ¼ÀïµÄÒ»¸ö»ò¶à¸öÎļþ£¬ÈÃËüÃǻָ´µ½Ä³¸öʱ¼äµãµÄ״̬£¬Óà git checkout <SHA> -- <filename>
- Èç¹ûÄãÏ£Íû°ÑÕâЩ commit ÀïµÄijһ¸öÖØÐÂÌá½»µ½ÄãµÄ´úÂë¿âÀÓà git cherry-pick <SHA>
ÀûÓ÷ÖÖ§µÄÁíÒ»ÖÖ×ö·¨
³¡¾°: Äã½øÐÐÁËһЩÌá½»£¬È»ºóÒâʶµ½Ä㿪ʼ check out µÄÊÇ master ·ÖÖ§¡£ÄãÏ£ÍûÕâЩÌá½»½øµ½ÁíÒ»¸öÌØÐÔ£¨feature£©·ÖÖ§Àï¡£
·½·¨: git branch feature, git reset --hard origin/master, and git checkout feature
ÔÀí: Äã¿ÉÄÜϰ¹ßÁËÓà git checkout -b <name> ´´½¨ÐµķÖÖ§ ¡ª ÕâÊÇ´´½¨Ð·ÖÖ§²¢ÂíÉÏ check out µÄÁ÷Ðнݾ¶ ¡ª µ«ÊÇÄ㲻ϣÍûÂíÉÏÇл»·ÖÖ§¡£ÕâÀ git branch feature ´´½¨Ò»¸ö½Ð×ö feature µÄзÖÖ§²¢Ö¸ÏòÄã×î½üµÄ commit£¬µ«»¹ÊÇÈÃÄã check out ÔÚ master ·ÖÖ§ÉÏ¡£
ÏÂÒ»²½£¬ÔÚÌá½»ÈκÎÐ嵀 commit ֮ǰ£¬Óà git reset --hard °Ñ master ·ÖÖ§µ¹»Ø origin/master ¡£²»¹ý±ðµ£ÐÄ£¬ÄÇЩ commit »¹ÔÚ feature ·ÖÖ§Àï¡£
×îºó£¬Óà git checkout Çл»µ½Ð嵀 feature ·ÖÖ§£¬²¢ÇÒÈÃÄã×î½üËùÓеŤ×÷³É¹û¶¼ÍêºÃÎÞËð¡£
¼°Ê±·ÖÖ§£¬Ê¡È¥·±Ëö
³¡¾°: ÄãÔÚ master ·ÖÖ§µÄ»ù´¡ÉÏ´´½¨ÁË feature ·ÖÖ§£¬µ« master ·ÖÖ§ÒѾÖͺóÓÚ origin/master ºÜ¶à¡£ÏÖÔÚ master ·ÖÖ§ÒѾºÍ origin/master ͬ²½£¬ÄãÏ£ÍûÔÚ feature ÉϵÄÌá½»ÊÇ´ÓÏÖÔÚ¿ªÊ¼£¬¶ø²»ÊÇÒ²´ÓÖͺóºÜ¶àµÄµØ·½¿ªÊ¼¡£
·½·¨: git checkout feature ºÍ git rebase master
ÔÀí: Òª´ïµ½Õâ¸öЧ¹û£¬Äã±¾À´¿ÉÒÔͨ¹ý git reset (²»¼Ó --hard, ÕâÑù¿ÉÒÔÔÚ´ÅÅÌÉϱ£ÁôÐÞ¸Ä) ºÍ git checkout -b <new branch name> È»ºóÔÙÖØÐÂÌá½»Ð޸쬲»¹ýÕâÑù×öµÄ»°£¬Äã¾Í»áʧȥÌá½»ÀúÊ·¡£ÎÒÃÇÓиüºÃµÄ°ì·¨¡£
git rebase master »á×öÈçϵÄÊÂÇ飺
-
Ê×ÏÈËü»áÕÒµ½Ä㵱ǰ check out µÄ·ÖÖ§ºÍ master ·ÖÖ§µÄ¹²Í¬×æÏÈ¡£
- È»ºóËü reset µ±Ç° check out µÄ·ÖÖ§µ½ÄǸö¹²Í¬×æÏÈ£¬ÔÚÒ»¸öÁÙʱ±£´æÇø´æ·ÅËùÓÐ֮ǰµÄÌá½»¡£
- È»ºóËü°Ñµ±Ç° check out µÄ·ÖÖ§Ìáµ½ master µÄĩβ²¿·Ö£¬²¢´ÓÁÙʱ±£´æÇøÖØÐ°Ѵæ·ÅµÄ commit Ìá½»µ½ master ·ÖÖ§µÄ×îºóÒ»¸ö commit Ö®ºó¡£
´óÁ¿µÄ³·Ïú/»Ö¸´
³¡¾°: ÄãÏòij¸ö·½Ïò¿ªÊ¼ÊµÏÖÒ»¸öÌØÐÔ£¬µ«Êǰë·ÄãÒâʶµ½ÁíÒ»¸ö·½°¸¸üºÃ¡£ÄãÒѾ½øÐÐÁËÊ®¼¸´ÎÌá½»£¬µ«ÄãÏÖÔÚÖ»ÐèÒªÆäÖеÄÒ»²¿·Ö¡£ÄãÏ£ÍûÆäËû²»ÐèÒªµÄÌύͳͳÏûʧ¡£
·½·¨: git rebase -i <earlier SHA>
ÔÀí: -i ²ÎÊýÈà rebase ½øÈë¡°½»»¥Ä£Ê½¡±¡£Ëü¿ªÊ¼ÀàËÆÓÚÇ°ÃæÌÖÂÛµÄ rebase£¬µ«ÔÚÖØÐ½øÐÐÈκÎÌύ֮ǰ£¬Ëü»áÔÝÍ£ÏÂÀ´²¢ÔÊÐíÄãÏêϸµØÐÞ¸Äÿ¸öÌá½»¡£
rebase -i »á´ò¿ªÄãµÄȱʡÎı¾±à¼Æ÷£¬ÀïÃæÁгöºòÑ¡µÄÌá½»¡£ÈçÏÂËùʾ£º

Ç°ÃæÁ½ÁÐÊǼü£ºµÚÒ»¸öÊÇÑ¡¶¨µÄÃüÁ¶ÔÓ¦µÚ¶þÁÐÀïµÄ SHA È·¶¨µÄ commit¡£È±Ê¡Çé¿öÏ£¬ rebase -i ¼Ù¶¨Ã¿¸ö commit ¶¼ÒªÍ¨¹ý pick ÃüÁî±»ÔËÓá£
Òª¶ªÆúÒ»¸ö commit£¬Ö»ÒªÔÚ±à¼Æ÷Àïɾ³ýÄÇÒ»ÐоÍÐÐÁË¡£Èç¹ûÄã²»ÔÙÐèÒªÏîÄ¿ÀïµÄÄǼ¸¸ö´íÎóµÄÌá½»£¬Äã¿ÉÒÔɾ³ýÉÏÀýÖеÄ1¡¢3¡¢4ÐС£
Èç¹ûÄãÐèÒª±£Áô commit µÄÄÚÈÝ£¬¶øÊÇ¶Ô commit ÏûÏ¢½øÐб༣¬Äã¿ÉÒÔʹÓà reword ÃüÁî¡£ °ÑµÚÒ»ÁÐÀïµÄ pick Ìæ»»Îª reword (»òÕßÖ±½ÓÓà r)¡£ÓÐÈË»á¾õµÃÔÚÕâÀïÖ±½ÓÖØÐ´ commit ÏûÏ¢¾ÍÐÐÁË£¬µ«ÊÇÕâÑù²»¹ÜÓà ¡ªrebase -i »áºöÂÔ SHA ÁÐÇ°ÃæµÄÈκζ«Î÷¡£ËüºóÃæµÄÎı¾Ö»ÊÇÓÃÀ´°ïÖúÎÒÃǼÇס 0835fe2 ÊǸÉɶµÄ¡£µ±ÄãÍê³É rebase -i µÄ²Ù×÷Ö®ºó£¬Äã»á±»ÌáʾÊäÈëÐèÒª±àдµÄÈκΠcommit ÏûÏ¢¡£
Èç¹ûÄãÐèÒª°ÑÁ½¸ö commit ºÏ²¢µ½Ò»Æð£¬Äã¿ÉÒÔʹÓà squash »ò fixup ÃüÁÈçÏÂËùʾ£º

squash ºÍ fixup »á¡°ÏòÉÏ¡±ºÏ²¢ ¡ª ´øÓÐÕâÁ½¸öÃüÁîµÄ commit »á±»ºÏ²¢µ½ËüµÄǰһ¸ö commit Àï¡£ÔÚÕâ¸öÀý×ÓÀ 0835fe2 ºÍ 6943e85 »á±»ºÏ²¢³ÉÒ»¸ö commit£¬ 38f5e4e ºÍ af67f82 »á±»ºÏ²¢³ÉÁíÒ»¸ö¡£
Èç¹ûÄãÑ¡ÔñÁË squash£¬ Git »áÌáʾÎÒÃǸøÐºϲ¢µÄ commit Ò»¸öÐ嵀 commit ÏûÏ¢£» fixup Ôò»á°ÑºÏ²¢Çåµ¥ÀïµÚÒ»¸ö commit µÄÏûÏ¢Ö±½Ó¸øÐºϲ¢µÄ commit ¡£ ÕâÀÄãÖªµÀ af67f82 ÊÇÒ»¸ö¡°ÍêÁËÍêÁË¡.¡± µÄ commit£¬ËùÒÔÄã»áÁô×Å 38f5e4e asµÄ commit ÏûÏ¢£¬µ«Äã»á¸øºÏ²¢ÁË 0835fe2 ºÍ 6943e85 µÄРcommit ±àдһ¸öеÄÏûÏ¢¡£
ÔÚÄã±£´æ²¢Í˳ö±à¼Æ÷µÄʱºò£¬Git »á°´´Ó¶¥²¿µ½µ×²¿µÄ˳ÐòÔËÓÃÄãµÄ commit¡£Äã¿ÉÒÔͨ¹ýÔÚ±£´æÇ°ÐÞ¸Ä commit ˳ÐòÀ´¸Ä±äÔËÓõÄ˳Ðò¡£Èç¹ûÄãÔ¸Ò⣬ÄãÒ²¿ÉÒÔͨ¹ýÈçϰ²ÅÅ°Ñ af67f82 ºÍ 0835fe2 ºÏ²¢µ½Ò»Æð£º

ÐÞ¸´¸üÔçÆÚµÄ commit
³¡¾°: ÄãÔÚÒ»¸ö¸üÔçÆÚµÄ commit ÀïÍü¼ÇÁ˼ÓÈëÒ»¸öÎļþ£¬Èç¹û¸üÔçµÄ commit Äܰüº¬Õâ¸öÍü¼ÇµÄÎļþ¾ÍÌ«°ôÁË¡£Ä㻹ûÓÐ push£¬µ«Õâ¸ö commit ²»ÊÇ×î½üµÄ£¬ËùÒÔÄãû·¨Óà commit --amend.
·½·¨: git commit --squash <SHA of the earlier commit> ºÍ git rebase --autosquash -i <even earlier SHA>
ÔÀí: git commit --squash »á´´½¨Ò»¸öÐ嵀 commit £¬Ëü´øÓÐÒ»¸ö commit ÏûÏ¢£¬ÀàËÆÓÚ squash! Earlier commit¡£ (ÄãÒ²¿ÉÒÔÊÖ¹¤´´½¨Ò»¸ö´øÓÐÀàËÆ commit ÏûÏ¢µÄ commit£¬µ«ÊÇ commit --squash ¿ÉÒÔ°ïÄãÊ¡ÏÂÊäÈëµÄ¹¤×÷¡£)
Èç¹ûÄã²»Ïë±»ÌáʾΪкϲ¢µÄ commit ÊäÈëÒ»ÌõÐ嵀 commit ÏûÏ¢£¬ÄãÒ²¿ÉÒÔÀûÓà git commit --fixup ¡£ÔÚÕâ¸öÇé¿öÏ£¬ÄãºÜ¿ÉÄÜ»áÓÃcommit --fixup £¬ÒòΪÄãÖ»ÊÇÏ£ÍûÔÚ rebase µÄʱºòʹÓÃÔçÆÚ commit µÄ commit ÏûÏ¢¡£
rebase --autosquash -i »á¼¤»îÒ»¸ö½»»¥Ê½µÄ rebase ±à¼Æ÷£¬µ«ÊÇ±à¼Æ÷´ò¿ªµÄʱºò£¬ÔÚ commit Çåµ¥ÀïÈκΠsquash! ºÍ fixup! µÄ commit ¶¼ÒѾÅä¶Ôµ½Ä¿±ê commit ÉÏÁË£¬ÈçÏÂËùʾ£º

ÔÚʹÓà --squash ºÍ --fixup µÄʱºò£¬Äã¿ÉÄܲ»¼ÇµÃÏëÒªÐÞÕýµÄ commit µÄ SHA ÁË¡ª Ö»¼ÇµÃËüÊÇÇ°ÃæµÚ 1 ¸ö»òµÚ 5 ¸ö commit¡£Äã»á·¢ÏÖ Git µÄ ^ ºÍ ~ ²Ù×÷·ûÌØ±ðºÃÓá£HEAD^ ÊÇ HEAD µÄǰһ¸ö commit¡£ HEAD~4 ÊÇ HEAD ÍùǰµÚ 4 ¸ö ¨C »òÕßÒ»ÆðË㣬µ¹ÊýµÚ 5 ¸ö commit¡£
Í£Ö¹×·×ÙÒ»¸öÎļþ
³¡¾°: ÄãżȻ°Ñ application.log ¼Óµ½´úÂë¿âÀïÁË£¬ÏÖÔÚÿ´ÎÄãÔËÐÐÓ¦Óã¬Git ¶¼»á±¨¸æÔÚ application.log ÀïÓÐδÌá½»µÄÐ޸ġ£Äã°Ñ *.login ·Åµ½ÁË .gitignore ÎļþÀ¿ÉÎļþ»¹ÊÇÔÚ´úÂë¿âÀï ¡ª ÄãÔõô²ÅÄܸæËß Git ¡°³·Ïú¡± ¶ÔÕâ¸öÎļþµÄ×·×ÙÄØ£¿
·½·¨: git rm --cached application.log
ÔÀí: ËäÈ» .gitignore »á×èÖ¹ Git ×·×ÙÎļþµÄÐ޸ģ¬ÉõÖÁ²»¹Ø×¢ÎļþÊÇ·ñ´æÔÚ£¬µ«ÕâÖ»ÊÇÕë¶ÔÄÇЩÒÔǰ´ÓÀ´Ã»ÓÐ×·×Ù¹ýµÄÎļþ¡£Ò»µ©ÓиöÎļþ±»¼ÓÈë²¢Ìá½»ÁË£¬Git ¾Í»á³ÖÐø¹Ø×¢¸ÃÎļþµÄ¸Ä±ä¡£ÀàËÆµØ£¬Èç¹ûÄãÀûÓà git add -f À´Ç¿ÖÆ»ò¸²¸ÇÁË .gitignore£¬ Git »¹»á³ÖÐø×·×ٸıäµÄÇé¿ö¡£Ö®ºóÄã¾Í²»±ØÓÃ-f À´Ìí¼ÓÕâ¸öÎļþÁË¡£
Èç¹ûÄãÏ£Íû´Ó Git µÄ×·×Ù¶ÔÏóÖÐɾ³ýÄǸö±¾Ó¦ºöÂÔµÄÎļþ£¬ git rm --cached »á´Ó×·×Ù¶ÔÏóÖÐɾ³ýËü£¬µ«ÈÃÎļþÔÚ´ÅÅÌÉϱ£³ÖÔ·â²»¶¯¡£ÒòΪÏÖÔÚËüÒѾ±»ºöÂÔÁË£¬ÄãÔÚ git status Àï¾Í²»»áÔÙ¿´¼ûÕâ¸öÎļþ£¬Ò²²»»áÔÙżȻÌá½»¸ÃÎļþµÄÐÞ¸ÄÁË¡£
|