°æ±¾¿ØÖÆ
°æ±¾¿ØÖÆÊÇʲôÒѲ»ÓÃÔÚ˵ÁË£¬¾ÍÊǼǼÎÒÃǶÔÎļþ¡¢Ä¿Â¼»ò¹¤³ÌµÈµÄÐÞ¸ÄÀúÊ·£¬·½±ã²é¿´¸ü¸ÄÀúÊ·£¬±¸·ÝÒÔ±ã»Ö¸´ÒÔǰµÄ°æ±¾£¬¶àÈËÐ×÷¡£¡£¡£
Ò»¡¢Ôʼ°æ±¾¿ØÖÆ
×îÔʼµÄ°æ±¾¿ØÖÆÊÇ´¿ÊÖ¹¤µÄ°æ±¾¿ØÖÆ£ºÐÞ¸ÄÎļþ£¬±£´æÎļþ¸±±¾¡£ÓÐʱºò͵ÀÁʡʣ¬±£´æ¸±±¾Ê±ÃüÃû±È½ÏËæÒ⣬ʱ¼ä³¤Á˾Ͳ»ÖªµÀÄĸöÊÇеģ¬ÄĸöÊÇÀϵÄÁË£¬¼´Ê¹ÖªµÀоɣ¬¿ÉÄÜÒ²²»ÖªµÀÿ¸ö°æ±¾ÊÇʲôÄÚÈÝ£¬Ïà¶ÔÉÏÒ»°æ×÷ÁËʲôÐÞ¸ÄÁË£¬µ±¼¸¸ö°æ±¾¹ýÈ¥ºó£¬ºÜ¿ÉÄܾÍÊÇÏÂÃæµÄÑù×ÓÁË£º

¶þ¡¢±¾µØ°æ±¾¿ØÖÆ
ÊÖ¹¤¹ÜÀí±È½ÏÂé·³ÇÒ»ìÂÒ£¬ËùÒÔ³öÏÖÁ˱¾µØ°æ±¾¿ØÖÆÏµÍ³£¬¼Ç¼Îļþÿ´ÎµÄ¸üУ¬¿ÉÒÔ¶Ôÿ¸ö°æ±¾×öÒ»¸ö¿ìÕÕ£¬»òÊǼǼ²¹¶¡Îļþ¡£±ÈÈçRCS¡£

Èý¡¢¼¯Öа汾¿ØÖÆ
µ«ÊDZ¾µØ°æ±¾¿ØÖÆÏµÍ³Æ«ÏòÓÚ¸öÈËʹÓ㬻òÕß¶à¸öʹÓõÄÈ˱ØÐëҪʹÓÃÏàͬµÄÉ豸£¬Èç¹ûÐèÒª¶àÈËÐ×÷¾Í²»ºÃ°ìÁË£¬ÓÚÊÇ£¬¼¯Öл¯µÄ°æ±¾¿ØÖÆÏµÍ³£¨
Centralized Version Control Systems£¬¼ò³Æ CVCS £©Ó¦Ô˶øÉú£¬±ÈÈçSubversion£¬Perforce¡£
ÔÚCVCSÖУ¬ËùÓеİ汾Êý¾Ý¶¼±£´æÔÚ·þÎñÆ÷ÉÏ£¬Ò»Æð¹¤×÷µÄÈË´Ó·þÎñÆ÷ÉÏͬ²½¸üлòÉÏ´«×Ô¼ºµÄÐ޸ġ£

µ«ÊÇ£¬ËùÓеİ汾Êý¾Ý¶¼´æÔÚ·þÎñÆ÷ÉÏ£¬Óû§µÄ±¾µØÉ豸¾ÍÖ»ÓÐ×Ô¼ºÒÔǰËùͬ²½µÄ°æ±¾£¬Èç¹û²»Á¬ÍøµÄ»°£¬Óû§¾Í¿´²»µ½ÀúÊ·°æ±¾£¬Ò²ÎÞ·¨Çл»°æ±¾ÑéÖ¤ÎÊÌ⣬»òÔÚ²»Í¬·ÖÖ§¹¤×÷¡£¡£
¶øÇÒ£¬ËùÓÐÊý¾Ý¶¼±£´æÔÚµ¥Ò»µÄ·þÎñÆ÷ÉÏ£¬ÓкܴóµÄ·çÏÕÕâ¸ö·þÎñÆ÷»áË𻵣¬ÕâÑù¾Í»á¶ªÊ§ËùÓеÄÊý¾Ý£¬µ±È»¿ÉÒÔ¶¨ÆÚ±¸·Ý¡£
ËÄ¡¢·Ö²¼Ê½°æ±¾¿ØÖÆ
Õë¶ÔCVCSµÄÒÔÉÏȱµã£¬³öÏÖÁË·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³( Distributed Version Control
System,¼ò³Æ DVCS )£¬ÈçGIT£¬Mercurial¡£
DVCS²»ÊǸ´ÖÆÖ¸¶¨°æ±¾µÄ¿ìÕÕ£¬¶øÊǰÑËùÓеİ汾ÐÅÏ¢²Ö¿âÈ«²¿Í¬²½µ½±¾µØ£¬ÕâÑù¾Í¿ÉÒÔÔÚ±¾µØ²é¿´ËùÓа汾ÀúÊ·£¬¿ÉÒÔÀëÏßÔÚ±¾µØÌá½»£¬Ö»ÐèÔÚÁ¬ÍøÊ±pushµ½ÏàÓ¦µÄ·þÎñÆ÷»òÆäËûÓû§ÄÇÀï¡£ÓÉÓÚÿ¸öÓû§ÄÇÀï±£´æµÄ¶¼ÊÇËùÓеİ汾Êý¾Ý£¬ËùÒÔ£¬Ö»ÒªÓÐÒ»¸öÓû§µÄÉ豸ûÓÐÎÊÌâ¾Í¿ÉÒÔ»Ö¸´ËùÓеÄÊý¾Ý¡£
µ±È»£¬ÕâÔö¼ÓÁ˱¾µØ´æ´¢¿Õ¼äµÄÕ¼Óá£

GIT
±ØÐëÒªÁ˽âGITµÄÔÀí£¬²ÅÄÜÖªµÀÿ¸ö²Ù×÷µÄÒâÒåÊÇʲô£¬²ÅÄܸüÈÝÒ×µØÀí½âÔÚʲôÇé¿öÏÂÓÃʲô²Ù×÷£¬¶ø²»ÊÇËÀ¼ÇÃüÁî¡£µ±È»£¬µÚÒ»²½ÊÇÒª»ñµÃÒ»¸öGIT²Ö¿â¡£
Ò»¡¢»ñµÃGIT²Ö¿â
ÓÐÁ½ÖÖ»ñµÃGIT²Ö¿âµÄ·½·¨£¬Ò»ÊÇÔÚÐèÒªÓÃGIT¹ÜÀíµÄÏîÄ¿µÄ¸ùĿ¼ִÐУº
Ö´Ðкó¿ÉÒÔ¿´µ½£¬½ö½öÔÚÏîĿĿ¼¶à³öÁËÒ»¸ö.gitĿ¼£¬¹ØÓÚ°æ±¾µÈµÄËùÓÐÐÅÏ¢¶¼ÔÚÕâ¸öĿ¼ÀïÃæ¡£
ÁíÒ»ÖÖ·½Ê½ÊǿˡԶ³ÌĿ¼£¬ÓÉÓÚÊǽ«Ô¶³Ì·þÎñÆ÷ÉϵIJֿâÍêÈ«¾µÏñÒ»·ÝÖÁ±¾µØ£¬¶ø²»ÊÇȡijһ¸öÌØ¶¨°æ±¾£¬ËùÒÔÓÃclone¶ø²»ÊÇcheckout£º
¶þ¡¢GITÖа汾µÄ±£´æ
¼Ç¼°æ±¾ÐÅÏ¢µÄ·½Ê½Ö÷ÒªÓÐÁ½ÖÖ£º
1.¼Ç¼Îļþÿ¸ö°æ±¾µÄ¿ìÕÕ
2.¼Ç¼Îļþÿ¸ö°æ±¾Ö®¼äµÄ²îÒì
GIT²ÉÓõÚÒ»ÖÖ·½Ê½¡£ÏñSubversionºÍPerforceµÈ°æ±¾¿ØÖÆÏµÍ³¶¼ÊǼǼÎļþÿ¸ö°æ±¾Ö®¼äµÄ²îÒ죬Õâ¾ÍÐèÒª¶Ô±ÈÎļþÁ½°æ±¾Ö®¼äµÄ¾ßÌå²îÒ죬µ«ÊÇGIT²»¹ØÐÄÎļþÁ½¸ö°æ±¾Ö®¼äµÄ¾ßÌå²î±ð£¬¶øÊǹØÐÄÎļþµÄÕûÌåÊÇ·ñÓиı䣬ÈôÎļþ±»¸Ä±ä£¬ÔÚÌí¼ÓÌύʱ¾ÍÉú³ÉÎļþа汾µÄ¿ìÕÕ£¬¶øÅжÏÎļþÕûÌåÊÇ·ñ¸Ä±äµÄ·½·¨¾ÍÊÇÓÃSHA-1Ëã·¨¼ÆËãÎļþµÄУÑéºÍ¡£
GITÄÜÕý³£¹¤×÷ÍêÈ«ÐÅÀµÓÚÕâÖÖSHA-1УÑéºÍ£¬µ±Ò»¸öÎļþµÄijһ¸ö°æ±¾±»¼Ç¼֮ºó»áÉú³ÉÕâ¸ö°æ±¾µÄÒ»¸ö¿ìÕÕ£¬µ«ÊÇÒ»ÑùÒªÄÜÒýÓõ½Õâ¸ö¿ìÕÕ£¬GITÖжԿìÕÕµÄÒýÓ㬶Ôÿ¸ö°æ±¾µÄ¼Ç¼±êʶȫÊÇͨ¹ýSHA-1УÑéºÍÀ´ÊµÏֵġ£
µ±Ò»¸öÎļþ±»¸Ä±äʱ£¬ËüµÄУÑéºÍÒ»¶¨»á±»¸Ä±ä£¨ÀíÂÛÉÏ´æÔÚÁ½¸öÎļþУÑéºÍÏàͬ£¬µ«»úÂÊСµ½¿ÉÒÔºöÂÔ²»¼Æ£©£¬GIT¾ÍÒÔ´ËÅжÏÎļþÊÇ·ñ±»Ð޸쬼°ÒÔЩ¼Ç¼²»Í¬°æ±¾¡£
ÔÚ¹¤×÷Ŀ¼µÄÎļþ¿ÉÒÔ´¦ÓÚ²»Í¬µÄ״̬£¬±ÈÈç˵ÐÂÌí¼ÓÁËÒ»¸öÎļþ£¬GIT·¢¾õÁËÕâ¸öÎļþ£¬µ«Õâ¸öÎļþÊÇ·ñÒªÄÉÈëGITµÄ°æ±¾¿ØÖÆ»¹ÊÇÒªÓÉÎÒÃÇ×Ô¼º¾ö¶¨£¬±ÈÈç±àÒëÉú³ÉµÄÖмäÎļþ£¬ÎÒÃǿ϶¨²»ÏëÄÉÈë°æ±¾¿ØÖÆ¡£ÏÂÃæ¾ÍÀ´¿´ÏÂÎļþ״̬¡£
Èý¡¢GITÎļþ²Ù×÷
°æ±¾¿ØÖƾÍÊǶÔÎļþµÄ°æ±¾¿ØÖÆ£¬¶ÔÓÚLinuxÀ´Ëµ£¬É豸£¬Ä¿Â¼µÈÈ«ÊÇÎļþ£¬Òª¶ÔÎļþ½øÐÐÐ޸ġ¢Ìá½»µÈ²Ù×÷£¬Ê×ÏÈÒªÖªµÀÎļþµ±Ç°ÔÚʲô״̬£¬²»È»¿ÉÄÜ»áÌá½»ÁËÏÖÔÚ»¹²»ÏëÌá½»µÄÎļþ£¬»òÕßÒªÌá½»µÄÎļþûÌá½»ÉÏ¡£
Îļþ״̬
GIT²Ö¿âËùÔÚµÄĿ¼³ÆÎª¹¤×÷Ŀ¼£¬Õâ¸öºÜºÃÀí½â£¬ÎÒÃǵŤ³Ì¾ÍÔÚÕâÀ¹¤×÷ʱҲÊÇÔÚÕâÀï×öÐ޸ġ£
ÔÚ¹¤×÷Ŀ¼ÖеÄÎļþ±»·ÖΪÁ½ÖÖ״̬£¬Ò»ÖÖÊÇÒѸú×Ù״̬(tracked)£¬ÁíÒ»ÖÖÊÇδ¸ú×Ù״̬(untracked)¡£Ö»Óд¦ÓÚÒѸú×Ù״̬µÄÎļþ²Å±»ÄÉÈëGITµÄ°æ±¾¿ØÖÆ¡£ÈçÏÂͼ£º

µ±ÎÒÃÇÍù¹¤×÷Ŀ¼Ìí¼ÓÒ»¸öÎļþµÄʱºò£¬Õâ¸öÎļþĬÈÏÊÇδ¸ú×Ù״̬µÄ£¬ÎÒÃǿ϶¨²»Ï£Íû±àÒëÉú³ÉµÄÒ»´ó¶ÑÁÙʱÎļþĬÈϱ»¸ú×Ù»¹ÒªÎÒÃÇÿ´ÎÊÖ¶¯½«ÕâЩÎļþÇå³ý³öÈ¥¡£ÓÃÒÔÏÂÃüÁî¿ÉÒÔ¸ú×ÙÎļþ£º
git add <file>
ÉÏͼÖÐÓÒ±ß3¸ö״̬¶¼ÊÇÒѸú×Ù״̬£¬ÆäÖеĻÒÉ«¼ýÍ·Ö»±íʾuntracked<-->trackedµÄת»»¶ø²»ÊÇuntracked<-->unmodifiedµÄת»»£¬ÐÂÌí¼ÓµÄÎļþ¿Ï¶¨ËãÊDZ»Ð޸ĹýµÄ¡£ÄÇô£¬staged״̬ÓÖÊÇÊ²Ã´ÄØ£¿Õâ¾ÍÒª¸ãÇå³þGITµÄÈý¸ö¹¤×÷ÇøÓò£º±¾µØÊý¾Ý£¨²Ö¿â£©Ä¿Â¼£¬¹¤×÷Ŀ¼£¬ÔÝ´æÇø£¬ÈçÏÂͼËùʾ£º

git directory¾ÍÊÇÎÒÃǵı¾µØ²Ö¿â.gitĿ¼£¬ÀïÃæ±£´æÁËËùÓеİ汾ÐÅÏ¢µÈÄÚÈÝ¡£
working driectory£¬¹¤×÷Ŀ¼£¬¾ÍÊÇÎÒÃǵŤ×÷Ŀ¼£¬ÆäÖаüÀ¨Î´¸ú×ÙÎļþ¼°ÒѸú×ÙÎļþ£¬¶øÒѸú×ÙÎļþ¶¼ÊÇ´Ógit
directoryÈ¡³öÀ´µÄÎļþµÄijһ¸ö°æ±¾»òиú×ÙµÄÎļþ¡£
staging area£¬ÔÝ´æÇø£¬²»¶ÔÓ¦Ò»¸ö¾ßÌåĿ¼£¬ÆäʱֻÊÇgit directoryÖеÄÒ»¸öÌØÊâÎļþ¡£
µ±ÎÒÃÇÐÞ¸ÄÁËһЩÎļþºó£¬Òª½«Æä·ÅÈëÔÝ´æÇøÈ»ºó²ÅÄÜÌá½»£¬Ã¿´ÎÌύʱÆäʵ¶¼ÊÇÌá½»ÔÝ´æÇøµÄÎļþµ½git²Ö¿â£¬È»ºóÇå³ýÔÝ´æÇø¡£¶øcheckoutijһ°æ±¾Ê±£¬ÕâÒ»°æ±¾µÄÎļþ¾Í´Ógit²Ö¿âÈ¡³öÀ´·Åµ½ÁËÎÒÃǵŤ×÷Ŀ¼¡£
Îļþ״̬µÄ²é¿´
ÄÇô£¬ÎÒÃÇÔõô֪µÀµ±Ç°¹¤×÷Ŀ¼µÄ×´Ì¬ÄØ£¿ÄÄЩÎļþÒѱ»Ôݴ棿ÓÐÄÄЩδ¸ú×ÙµÄÎļþ£¿ÄÄЩÎļþ±»ÐÞ¸ÄÁË£¿ËùÓÐÕâЩֻÐèÒªÒ»¸öÃüÁgit
status£¬ÈçÏÂͼËùʾ:

GITÔÚÕâÒ»µã×öµÃºÜºÃ£¬ÔÚÊä³öÿ¸öÎļþ״̬µÄͬʱ»¹ËµÃ÷ÁËÔõô²Ù×÷£¬ÏñÉÏͼ¾ÍÓÐÔõôÔÝ´æ¡¢Ôõô¸ú×ÙÎļþ¡¢ÔõôȡÏûÔÝ´æµÄ˵Ã÷¡£
ÎļþÔÝ´æ
ÔÚÉÏͼÖÐÎÒÃÇ¿ÉÒÔºÜÇå³þµØ¿´µ½£¬fileaδ¸ú×Ù£¬filebÒѱ»Ôݴ棨changes to be committed£©£¬µ«ÊÇÔõô»¹ÓÐÒ»¸öfilebÊÇmodifiedµ«unstagedÄØ£¿ÕâÊÇÒòΪµ±ÎÒÃÇÔÝ´æÒ»´Ó´ËÎļþʱ£¬ÔÝ´æµÄÊÇÄÇÒ»Îļþµ±Ê±µÄ°æ±¾£¬µ±ÔÝ´æºóÔÙ´ÎÐÞ¸ÄÁËÕâ¸öÎļþºó¾Í»áÌáʾÕâ¸öÎļþÔÝ´æºóµÄÐÞ¸ÄÊÇδ±»ÔÝ´æµÄ¡£
½ÓÏÂÀ´ÎÒÃǾͿ´ÔõôÔÝ´æÎļþ£¬ÆäʵҲºÜ¼òµ¥£¬´ÓÉÏͼÖпÉÒÔ¿´µ½GITÒѾÌáʾÎÒÃÇÁË£ºuse "git
add <file>..." to update what will be committed£¬Í¨¹ý
git add <file>...
¾Í¿ÉÒÔÔÝ´æÎļþ£¬¸ú×ÙÎļþͬÑùÊÇÕâÒ»¸öÃüÁî¡£ÔÚÕâ¸öÃüÁîÖпÉÒÔʹÓÃglobģʽƥÅ䣬±ÈÈç"file[ab]"£¬Ò²¿ÉÒÔʹÓÃ"git
add ."Ìí¼Óµ±Ç°Ä¿Â¼ÏµÄËùÓÐÎļþ¡£
È¡ÏûÔÝ´æÎļþÊÇ
git reset HEAD <file>...
ÈôÐÞ¸ÄÁËÒ»¸öÎļþÏ뻹ÔÐ޸ĿÉÓÃ
git checkout -- <file>...
²é¿´ÎļþÐ޸ĺóµÄ²îÒì
µ±ÎÒÃÇÐ޸ĹýһЩÎļþÖ®ºó£¬ÎÒÃÇ¿ÉÄÜÏë²é¿´ÎÒÃǶ¼ÐÞ¸ÄÁËʲô¶«Î÷£¬ÓÃ"git status"Ö»Äܲ鿴¶ÔÄÄЩÎļþ×öÁ˸͝£¬Èç¹ûÒª¿´¸Ä¶¯ÁËʲô£¬¿ÉÒÔÓãº
git diff
±ÈÈçÏÂͼ£º

---a±íʾÐÞ¸Ä֮ǰµÄÎļþ£¬+++b±íʾÐ޸ĺóµÄÎļþ£¬ÉÏͼ±íʾÔÚfilebµÄµÚÒ»ÐкóÌí¼ÓÁËÒ»ÐÐ"bb"£¬ÔÀ´ÎļþµÄµÚÒ»ÐÐÀ©Õ¹ÎªÁËÐ޸ĺóµÄ1¡¢2ÐС£
µ«ÊÇ£¬Ç°ÃæÎÒÃÇÃ÷Ã÷ÓÃ"git status"¿´µ½filesb×öÁËһЩÐ޸ĺóÔÝ´æÁË£¬È»ºóÓÖÐÞ¸ÄÁËfileb£¬ÀíÓ¦ÓÐÁ½´ÎÐ޸ĵģ¬ÔõôֻÓÐÒ»¸ö£¿
ÒòΪ"git diff"ÏÔʾµÄÊÇÎļþÐ޸ĺó»¹Ã»ÓÐÔÝ´æÆðÀ´µÄÄÚÈÝ£¬ÄÇÈç¹ûÒª±È½ÏÔÝ´æÇøµÄÎļþÓë֮ǰÒѾÌá½»¹ýµÄÎļþÄØ£¬±Ï¾¹Êµ¼ÊÌá½»µÄÊÇÔÝ´æÇøµÄÄÚÈÝ£¬¿ÉÒÔÓÃÒÔÏÂÃüÁ

/dev/null±íʾ֮ǰûÓÐÌá½»¹ýÕâÒ»¸öÎļþ£¬ÕâÊǽ«ÊǵÚÒ»´ÎÌá½»£¬Óãº
git diff --staged
ÊǵÈЧµÄ£¬µ«GITµÄ°æ±¾Òª´óÓÚ1.6.1¡£
ÔÙ´ÎÖ´ÐÐ"git add"½«¸²¸ÇÔÝ´æÇøµÄÄÚÈÝ¡£
ºöÂÔһЩÎļþ
Èç¹ûÓÐһЩ²¿¼þÎÒÃDz»ÏëÄÉÈë°æ±¾¿ØÖÆ£¬Ò²²»ÏëÔÚÿ´Î"git status"ʱ¿´µ½ÕâЩÎļþµÄÌáʾ£¬»òÕߺܶàʱºòÎÒÃÇΪÁË·½±ã»áʹÓÃ"git
add ."Ìí¼ÓËùÓÐÐ޸ĵÄÎļþ£¬Õâʱ¾Í»áÌí¼ÓÉÏһЩÎÒÃDz»ÏëÌí¼ÓµÄÎļþ£¬ÔõôºöÂÔÕâЩÎļþÄØ£¿
GITµ±È»ÌṩÁË·½·¨£¬Ö»ÐèÔÚÖ÷Ŀ¼Ï½¨Á¢".gitignore"Îļþ£¬´ËÎļþÓÐÈçϹæÔò£º
ËùÓÐÒÔ#¿ªÍ·µÄÐлᱻºöÂÔ ¿ÉÒÔʹÓÃglobģʽƥÅä Æ¥Åäģʽºó¸ú·´Ð±¸Ü£¨/£©±íʾҪºöÂÔµÄÊÇĿ¼ Èç¹û²»ÒªºöÂÔijģʽµÄÎļþÔÚģʽǰ¼Ó"!" ±ÈÈ磺
# ´ËΪעÊÍ ¨C ½«±» Git ºöÂÔ *.a # ºöÂÔËùÓÐ .a ½áβµÄÎļþ !lib.a # µ« lib.a ³ýÍâ /TODO # ½ö½öºöÂÔÏîÄ¿¸ùĿ¼Ï嵀 TODO Îļþ,²»°üÀ¨ subdir/TODO build/ # ºöÂÔ build/ Ŀ¼ÏµÄËùÓÐÎļþ doc/*.txt # »áºöÂÔ doc/notes.txt µ«²»°üÀ¨ doc/server/arch.txt
ÒÆ³ýÎļþ
µ±ÎÒÃÇҪɾ³ýÒ»¸öÎļþʱ£¬ÎÒÃÇ¿ÉÄܾÍÖ±½ÓÓÃGUIɾ³ý»òÕßÖ±½Órm [file]ÁË£¬µ«ÊÇ¿´Í¼£º

ÎÒÃÇÐèÒª½«ÎļþÌí¼Óµ½ÔÝ´æÇø²ÅÄÜÌá½»£¬¶øÒƳýÎļþºóÊÇÎÞ·¨Ìí¼Óµ½ÔÝ´æÇøµÄ£¬ÄÇôÔõÃ´ÒÆ³ýÒ»¸öÎļþÈÃGIT²»ÔÙ½«ÆäÄÉÈë°æ±¾¿ØÖÆÄØ£¿ÉÏͼÖÐGITÒѾ¸ø³öÁË˵Ã÷£º
git rm <file>...
Ö´ÐÐÒÔÉÏÃüÁîºóÌá½»¾Í¿ÉÒÔÁË£¬ÓÐʱÎÒÃÇÖ»ÊÇÏ뽫һЩÎļþ´Ó°æ±¾¿ØÖÆÖÐÌÞ³ý³öÈ¥£¬µ«ÈÔ±£ÁôÕâЩÎļþÔÚ¹¤×÷Ŀ¼ÖУ¬±ÈÈçÎÒÃÇÒ»²»Ð¡ÐĽ«±àÒëÉú³ÉµÄÖмäÎļþÄÉÈëÁ˰汾¿ØÖÆ£¬Ï뽫Æä´Ó°æ±¾¿ØÖÆÖÐÌÞ³ý³öÈ¥µ«ÔÚ¹¤×÷Ŀ¼Öб£ÁôÕâЩÎļþ£¨²»È»ÔٴαàÒë¿ÉÒª»¨·Ñ¸ü¶àʱ¼äÁË£©£¬ÕâʱֻÐèÒªÌí¼Ó"--cached"²ÎÊý¡£
Èç¹ûÎÒÃÇ֮ǰ²»ÊÇͨ¹ý"git rm"ɾ³ýÁ˺ܶàÎļþÄØ£¿±ÈÈç˵ͨ¹ýpatch»òÕßͨ¹ýGUI£¬Èç¹ûÕâЩÎļþÃüÃûûÓйæÔò£¬Ò»¸öÒ»¸öµØÖ´ÐÐ"git
rm"»á¸ãËÀÈ˵ģ¬Õâʱ¿ÉÒÔÓÃÒÔÏÂÃüÁ

ÒÆ¶¯Îļþ
ºÍÒÆ³ýÎļþÒ»Ñù£¬Òƶ¯Îļþ²»¿ÉÒÔͨ¹ýGUIÖ±½ÓÖØÃüÁî»òÓÃ"mv"ÃüÁ¶øÊÇÒªÓÃ"git
mv"£¬²»È»Í¬ÒƳýÎļþÒ»ÑùÄã»áµÃµ½ÈçϽá¹û£º

Èç¹ûÒªÖØÃüÃûÎļþ¿ÉÒÔʹÓÃ
git mv old_name new_name
Õâ¸öÃüÁîµÈЧÓÚ
mv old_name new_name
git rm old_name
git add new_name
½»»¥Ê½ÔÝ´æ
ʹÓÃgit add -i¿ÉÒÔ¿ªÆô½»»¥Ê½Ôݴ棬ÈçͼËùʾ£¬ÏµÍ³»áÁгöÒ»¸ö¹¦Äܲ˵¥ÈÃÑ¡Ôñ½«ÒªÖ´ÐеIJÙ×÷¡£

ÒÆ³ýËùÓÐδ¸ú×ÙÎļþ
git clean [options] Ò»°ã»á¼ÓÉϲÎÊý-df£¬-d±íʾ°üº¬Ä¿Â¼£¬-f±íÊ¾Ç¿ÖÆÇå³ý¡£
´¢²Ø-Stashing
¿ÉÄÜ»áÓöµ½ÕâÑùµÄÇé¿ö£¬ÄãÕýÔÚÒ»¸ö·ÖÖ§ÉϽøÐÐÒ»¸öÌØÐԵĿª·¢£¬»òÕßÒ»¸öBugµÄÐÞÕý£¬µ«ÊÇÕâʱͻȻÓÐÆäËûµÄÊÂÇé¼±Ðè´¦Àí£¬Õâʱ¸ÃÔõô°ì£¿²»¿ÉÄܾÍÔÚÕâ¸ö¹¤×÷½øÐе½Ò»°ëµÄ·ÖÖ§ÉÏÒ»Æð´¦Àí£¬ÏȰÑÐ޸ĵÄCopy³öÈ¥£¿Ì«Âé·³ÁË¡£ÕâÖÖÇé¿öϾÍÒªÓõ½StashingÁË¡£¼ÙÈçÎÒÃÇÏÖÔڵŤ×÷Ŀ¼ÊÇÕâÑù×ÓµÄ
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: index.html # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # # modified: lib/simplegit.rb |
´ËʱÈç¹ûÏëÇл»·ÖÖ§¾Í¿ÉÒÔÖ´ÐÐÒÔÏÂÃüÁî
$ git stash Saved working directory and index state \ "WIP on master: 049d078 added the index file" HEAD is now at 049d078 added the index file (To restore them type "git stash apply") |
ÕâʱÄã»á·¢ÏÖÄãµÄ¹¤×÷Ŀ¼±äµÃºÜ¸É¾»ÁË£¬¾Í¿ÉÒÔËæÒâÇзÖÖ§½øÐÐÆäËûÊÂÇéµÄ´¦ÀíÁË¡£
ÎÒÃÇ¿ÉÄܲ»Ö»Ò»´Î½øÐÐ"git stash"£¬Í¨¹ýÒÔÏÂÃüÁî¿ÉÒԲ鿴ËùÓÐstashÁбí
$ git stash list stash@{0}: WIP on master: 049d078 added the index file stash@{1}: WIP on master: c264051... Revert "added file_size" |
µ±½ô¼±ÊÂÇé´¦ÀíÍêÁË£¬ÐèÒªÖØÐ»ØÀ´ÕâÀï½øÐÐÔÀ´µÄ¹¤×÷ʱ£¬Ö»Ðè°ÑStashÇøÓòµÄÄÚÈÝÈ¡³öÀ´Ó¦Óõ½µ±Ç°¹¤×÷Ŀ¼¾ÍÐУ¬ÃüÁî¾ÍÊÇ
Èç¹û²»»ù²ÎÊý¾ÍÓ¦ÓÃ×îеÄstash£¬»òÕß¿ÉÒÔÖ¸¶¨stashµÄÃû×Ö£¬È磺stash@{1}£¬¿ÉÄÜͨ¹ý
ÏÔʾstashµÄÄÚÈݾßÌåÊÇʲô£¬Í¬git stash applyÒ»Ñù£¬¿ÉÒÔÑ¡ÔñÖ¸¶¨stashµÄÃû×Ö¡£
¡¡¡¡git stash applyÖ®ºóÔÙgit stash list»á·¢ÏÖ£¬applyºóµÄstash»¹ÔÚstashÁбíÖУ¬Èç¹ûÒª½«Æä´ÓstashÁбíÖÐɾ³ý¿ÉÒÔÓÃ
¡¡¶ªÆúÕâ¸östash£¬stashµÄÃüÁî²ÎÊý¶¼¿ÉÑ¡ÔñÖ¸¶¨stashÃû×Ö£¬·ñÔò¾ÍÊÇ×îеÄstash¡£
¡¡¡¡Ò»°ãÇé¿öÏÂapply stashºóÓ¦¸Ã¾Í¿ÉÒÔ°ÑËü´ÓstashÁбíɾ³ýÁË£¬ÏÈapplyÔÙdrop»¹ÊDZȽϷ±ËöµÄ£¬Ê¹ÓÃÒÔÏÂÒ»ÌõÃüÁî¾Í¿ÉÒÔͬʱÍê³ÉÕâÁ½¸ö²Ù×÷
Èç¹ûÎÒÃÇÖ´ÐÐgit stashʱ¹¤×÷Ŀ¼µÄ״̬ÊDz¿·ÖÎļþÒѾ¼ÓÈëÁËÔÝ´æÇø£¬²¿·ÖÎļþûÓУ¬µ±ÎÒÃÇÖ´ÐÐgit
stash applyÖ®ºó»á·¢ÏÖËùÓÐÎļþ¶¼±ä³ÉÁËδÔÝ´æµÄ£¬Èç¹ûÏëά³ÖÔÀ´µÄÑù×Ó²Ù³ÖÔÀ´ÔÝ´æµÄÎļþÈÔÈ»ÊÇÔÝ´æ×´Ì¬£¬¿ÉÒÔ¼ÓÉÏ--index²ÎÊý
»¹ÓÐÕâôһÖÖÇé¿ö£¬ÎÒÃǰÑÔÀ´µÄÐÞ¸ÄstashÁË£¬È»ºóÐÞ¸´ÁËÆäËûһЩ¶«Î÷²¢½øÐÐÁËÌá½»£¬µ«ÊÇ£¬ÕâЩÌá½»µÄÎļþÓÐЩÔÚ֮ǰÒѾ±»stashÁË£¬ÄÇôgit
stash applyʱ¾ÍºÜ¿ÉÄÜ»áÓöµ½³åÍ»£¬ÕâÖÖÇé¿öϾͿÉÒÔÔÚstashʱËùÒÔÌá½»µÄ»ù´¡ÉÏн¨Ò»¸ö·ÖÖ§£¬È»ºóÔÙapply
stash£¬µ±È»£¬ÕâÁ½¸ö²½ÖèÓÐÒ»È˼òµ¥µÄÍê³É·½·¨
git stash branch <branch name> |
|