Ïê½âÏÈÈÝɾ³ýGitÀúÊ·µÄ²î±ðÒªÁì
gitÊÇÒ»¸öºÜÊÇÊ¢Ðеİ汾¿ØÖÆϵͳ£¬ËüÌṩÁËÐí¶àÀû±ãµÄÏÂÁîºÍ¹¦Ð§À´ÖÎÀí´úÂëµÄ¸÷¸ö°æ±¾¡£ÆäÖÐÒ»¸öºÜÊÇÓÐÓõĹ¦Ð§ÊÇɾ³ýÀúÊ·¼Í¼µÄÄÜÁ¦¡£gitÔÊÐíÄãɾ³ýij¸öÌض¨µÄcommit£¬ËüÉÐÓÐһЩ¸ß¼¶µÄÑ¡ÏîÀ´ÕûÀíÀúÊ·¼Í¼²¢¼á³ÖÄãµÄ´úÂë¿âÇå½àÕûÆë¡£±¾ÎĽ«ÏÈÈÝɾ³ýgitÀúÊ·µÄ²î±ðÒªÁìÒÔ¼°ËüÃǵÄÓÅÈõµã¡£
ɾ³ýij¸öcommit
ÈôÊÇÄãÏëҪɾ³ýGitÀúÊ·ÖеÄij¸öÌض¨commit£¬¿ÉÒÔʹÓÃÒÔÏÂÏÂÁ
git rebase -i <commit></commit>
µÇ¼ºó¸´ÖÆ
ÆäÖÐ ÊÇÄãÏëÒª´ÓÖÐɾ³ýµÄ×î½üµÄcommitµÄ¹þÏ£Öµ¡£ÕâÌõÏÂÁÆô¶¯½»»¥Ê½rebase£¬Äã¿ÉÒÔÔÚÆäÖбà¼Ìá½»µÄÀúÊ·¼Í¼¡£ÈôÊÇÄãÏëҪɾ³ýÒ»¸öÌá½»£¬¿ÉÒÔ½«Æä¸ü¸ÄΪdrop¡£ÈôÊÇÄã¸ü¸ÄÁËÌá½»ÀúÊ·¼Í¼£¬Git½«ÖØÐÂÓ¦ÓÃÐ޸ĺóµÄÌá½»ÒÔ½¨ÉèеÄÀúÊ·¼Í¼¡£Çë×¢ÖØ£¬¸ü¸ÄÌá½»ÀúÊ·¼Í¼¿ÉÄÜ»áÆÆËðGitÀúÊ·£¬Òò´ËÇëÉóÉ÷ʹÓô˹¦Ð§¡£
ɾ³ýij¸öÎļþµÄÀúÊ·¼Í¼
ÓÐʱÄã¿ÉÄÜÐèÒª´ÓGitÀúÊ·¼Í¼ÖÐɾ³ýij¸öÎļþµÄËùÓÐÀúÊ·¼Í¼¡£Õâ¿ÉÒÔͨ¹ýÒÔÏÂÏÂÁîÍê³É£º
git filter-branch --tree-filter 'rm -rf path/to/file' -- --all
µÇ¼ºó¸´ÖÆ
ÆäÖÐpath/to/fileÊÇÄãÏëҪɾ³ýÀúÊ·¼Í¼µÄÎļþµÄ·¾¶¡£´ËÏÂÁ¸´ÖÆÿ¸öÌá½»£¬²¢ÔÚÿ¸öÌá½»ÉÏÔËÐиø¶¨µÄÏÂÁî¡£ÔÚÕâÖÖÇéÐÎÏ£¬¸ø¶¨µÄÏÂÁîÊÇɾ³ýÖ¸¶¨µÄÎļþ¡£Çë×¢ÖØ£¬Õâ¸ö²Ù×÷¿ÉÄÜ»áºÜÊǺÄʱ£¬ÓÉÓÚËüÐèÒªÖØÐÂдÈëÕû¸öGitÀúÊ·¡£ÔÚ²Ù×÷֮ǰ£¬ÇëÈ·±£±¸·ÝËùÓÐÊý¾Ý²¢×ÐϸÔĶÁÎĵµ¡£
ʹÓÃGit reset
Ä㻹¿ÉÒÔʹÓÃgit resetÏÂÁîÀ´×÷·ÏÌá½»²¢É¾³ýÀúÊ·¼Í¼¡£Õâ¸öÏÂÁîµÄ»ù±¾Óï·¨ÊÇ£º
git reset --hard <commit></commit>
µÇ¼ºó¸´ÖÆ
ÔÚÕâÀ ÊÇÄãÏëÒª»Ø¹öµ½µÄÌض¨µÄÌá½»¡£Õâ¸öÏÂÁî»á½«HEADÒƶ¯µ½¸ø¶¨µÄÌá½»£¬²¢½«ÊÂÇéÊ÷״̬ÖØÖÃΪ¸ÃÌá½»µÄ״̬¡£Òò´Ë£¬Ëü»áɥʧËùÓÐÒÔ¸ÃÌá½»Ö®ºóµÄÌá½»¡£
ʹÓÃGit revert
git revertÏÂÁîÔÊÐíÄã×÷·Ïij¸öÌá½»£¬µ«±£´æÆäÀúÊ·¼Í¼¡£ËüµÄ»ù±¾Óï·¨ÈçÏ£º
git revert <commit></commit>
µÇ¼ºó¸´ÖÆ
Õ⽫½¨ÉèÒ»¸öеÄÌá½»£¬ÒÔ¡°×÷·Ï¡±¸ø¶¨Ìá½»µÄ¸ü¸Ä¡£Õâ¸ö²Ù×÷²»»á¸Ä±äÀúÊ·¼Í¼£¬²¢ÇÒËü¸üÇå¾²£¬ÓÉÓÚËü²»»áÍêȫɾ³ýÌá½»¡£È»¶ø£¬ËüÒ²»áÔöÌíÌá½»ÀúÊ·¼Í¼µÄÔÓÂÒºÍÖØ´óÐÔ¡£
×ܽá
ɾ³ýGitÀúÊ·¼Í¼µÄÄÜÁ¦ºÜÓÐÓ㬵«Ò²ÐèÒªºÜÊÇ×ÐϸµØʹÓá£ÔÚ¾öÒéɾ³ýÀúÊ·¼Í¼֮ǰ£¬ÇëÈ·±£±¸·ÝËùÓÐÊý¾Ý£¬ÒÔ±ÜÃâ²»¿É»Ö¸´µÄÊý¾Ýɥʧ¡£±ðµÄ£¬Çë¼Ç×Å£¬¸ü¸ÄGitÀúÊ·¼Í¼¿ÉÄÜ»á¶ÔÆäËûÍŶӳÉÔ±±¬·¢Ó°Ï죬Òò´ËÇëÔÚɾ³ý»ò¸ü¸ÄÀúÊ·¼Í¼֮ǰÓëËûÃǾÙÐÐÌÖÂÛ¡£×îºó£¬Æ¾Ö¤ÄãµÄÏêϸÐèÇóºÍÇéÐÎÑ¡Ôñ×îºÏÊʵÄɾ³ýÀúÊ·¼Í¼µÄÒªÁì¡£
ÒÔÉϾÍÊÇÏê½âÏÈÈÝɾ³ýGitÀúÊ·µÄ²î±ðÒªÁìµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡