ÔÚÈÕ³£¹¤×÷ÖУ¬¾³£»áÓõ½Git²Ù×÷¡£µ«ÊǶÔÓÚÐÂÈËÀ´½²£¬¸ÕÉÏÀ´¶ÔGitºÜİÉú£¬²Ù×÷ÆðÀ´Ò²ºÜã±ơ£±¾ÆªÎÄÕÂÖ÷ÒªÕë¶Ô¸Õ¿ªÊ¼½Ó´¥GitµÄÐÂÈË£¬Àí½âGitµÄ»ù±¾ÔÀí£¬ÕÆÎÕ³£ÓõÄһЩÃüÁî¡£
Ò»¡¢Git¹¤×÷Á÷³Ì
ÒÔÉϰüÀ¨Ò»Ð©¼òµ¥¶ø³£ÓõÄÃüÁµ«ÊÇÏȲ»¹ØÐÄÕâЩ£¬ÏÈÀ´Á˽âÏÂÃæÕâ4¸öרÓÐÃû´Ê¡£
- Workspace£º¹¤×÷Çø
- Index / Stage£ºÔÝ´æÇø
- Repository£º²Ö¿âÇø£¨»ò±¾µØ²Ö¿â£©
- Remote£ºÔ¶³Ì²Ö¿â
¹¤×÷Çø
³ÌÐòÔ±½øÐпª·¢¸Ä¶¯µÄµØ·½£¬ÊÇÄ㵱ǰ¿´µ½µÄ£¬Ò²ÊÇ×îеġ£
ƽ³£ÎÒÃÇ¿ª·¢¾ÍÊÇ¿½±´Ô¶³Ì²Ö¿âÖеÄÒ»¸ö·ÖÖ§£¬»ùÓڸ÷ÖÖ§½øÐпª·¢¡£ÔÚ¿ª·¢¹ý³ÌÖоÍÊǶԹ¤×÷ÇøµÄ²Ù×÷¡£
ÔÝ´æÇø
.gitĿ¼ÏµÄindexÎļþ, ÔÝ´æÇø»á¼Ç¼git addÌí¼ÓÎļþµÄÏà¹ØÐÅÏ¢(ÎļþÃû¡¢´óС¡¢timestamp...)£¬²»±£´æÎļþʵÌå, ͨ¹ýidÖ¸Ïòÿ¸öÎļþʵÌå¡£¿ÉÒÔʹÓÃgit status²é¿´ÔÝ´æÇøµÄ״̬¡£ÔÝ´æÇø±ê¼ÇÁËÄ㵱ǰ¹¤×÷ÇøÖУ¬ÄÄЩÄÚÈÝÊDZ»git¹ÜÀíµÄ¡£
µ±ÄãÍê³Éij¸öÐèÇó»ò¹¦ÄܺóÐèÒªÌá½»µ½Ô¶³Ì²Ö¿â£¬ÄÇôµÚÒ»²½¾ÍÊÇͨ¹ýgit addÏÈÌá½»µ½ÔÝ´æÇø£¬±»git¹ÜÀí¡£
±¾µØ²Ö¿â
±£´æÁ˶ÔÏó±»Ìá½» ¹ýµÄ¸÷¸ö°æ±¾£¬±ÈÆð¹¤×÷ÇøºÍÔÝ´æÇøµÄÄÚÈÝ£¬ËüÒª¸ü¾ÉһЩ¡£
git commitºóͬ²½indexµÄĿ¼Ê÷µ½±¾µØ²Ö¿â£¬·½±ã´ÓÏÂÒ»²½Í¨¹ýgit pushͬ²½±¾µØ²Ö¿âÓëÔ¶³Ì²Ö¿âµÄͬ²½¡£
Ô¶³Ì²Ö¿â
Ô¶³Ì²Ö¿âµÄÄÚÈÝ¿ÉÄܱ»·Ö²¼ÔÚ¶à¸öµØµãµÄ´¦ÓÚÐ×÷¹ØÏµµÄ±¾µØ²Ö¿âÐ޸ģ¬Òò´ËËü¿ÉÄÜÓë±¾µØ²Ö¿âͬ²½£¬Ò²¿ÉÄܲ»Í¬²½£¬µ«ÊÇËüµÄÄÚÈÝÊÇ×î¾ÉµÄ¡£
С½á
ÈκζÔÏó¶¼ÊÇÔÚ¹¤×÷ÇøÖе®ÉúºÍ±»Ð޸ģ»
ÈκÎÐ޸ͼÊÇ´Ó½øÈëindexÇø²Å¿ªÊ¼±»°æ±¾¿ØÖÆ£»
Ö»ÓаÑÐÞ¸ÄÌá½»µ½±¾µØ²Ö¿â£¬¸ÃÐ޸IJÅÄÜÔÚ²Ö¿âÖÐÁôϺۼ££»
ÓëÐ×÷Õß·ÖÏí±¾µØµÄÐ޸ģ¬¿ÉÒÔ°ÑËüÃÇpushµ½Ô¶³Ì²Ö¿âÀ´¹²Ïí¡£
ÏÂÃæÕâ·ùͼ¸ü¼ÓÖ±½Ó²ûÊöÁËËĸöÇøÓòÖ®¼äµÄ¹ØÏµ£¬¿ÉÄÜÓÐЩÃüÁ̫Çå³þ£¬Ã»¹ØÏµ£¬Ï²¿·Ö»áÏêϸ½éÉÜ¡£
¶þ¡¢³£ÓÃGitÃüÁî
ÍøÉÏÕÒÁ˸öͼ£¬±ðÈËÕûÀíµÄÒ»ÕÅͼ£¬ºÜÈ«ºÜºÃ£¬½èÀ´ÓÃÏ¡£ÏÂÃæÏêϸ½âÊÍһЩ³£ÓÃÃüÁî¡£
HEAD
ÔÚÕÆÎÕ¾ßÌåÃüÁîǰ£¬ÏÈÀí½âÏÂHEAD¡£
HEAD£¬ËüʼÖÕÖ¸Ïòµ±Ç°Ëù´¦·ÖÖ§µÄ×îеÄÌá½»µã¡£ÄãËù´¦µÄ·ÖÖ§±ä»¯ÁË£¬»òÕß²úÉúÁËеÄÌá½»µã£¬HEAD¾Í»á¸úןı䡣
add
addÏà¹ØÃüÁîºÜ¼òµ¥£¬Ö÷ҪʵÏÖ½«¹¤×÷ÇøÐ޸ĵÄÄÚÈÝÌá½»µ½ÔÝ´æÇø£¬½»ÓÉgit¹ÜÀí¡£
commit
commitÏà¹ØÃüÁîÒ²ºÜ¼òµ¥£¬Ö÷ҪʵÏÖ½«ÔÝ´æÇøµÄÄÚÈÝÌá½»µ½±¾µØ²Ö¿â£¬²¢Ê¹µÃµ±Ç°·ÖÖ§µÄHEADÏòºóÒÆ¶¯Ò»¸öÌá½»µã¡£
branch
Éæ¼°µ½Ð×÷£¬×ÔÈ»»áÉæ¼°µ½·ÖÖ§£¬¹ØÓÚ·ÖÖ§£¬´ó¸ÅÓÐչʾ·ÖÖ§£¬Çл»·ÖÖ§£¬´´½¨·ÖÖ§£¬É¾³ý·ÖÖ§ÕâËÄÖÖ²Ù×÷¡£
¹ØÓÚ·ÖÖ§µÄ²Ù×÷ËäÈ»±È½Ï¶à£¬µ«¶¼±È½Ï¼òµ¥ºÃ¼Ç¡£
merge
mergeÃüÁî°Ñ²»Í¬µÄ·ÖÖ§ºÏ²¢ÆðÀ´¡£ÈçÉÏͼ£¬ÔÚʵ¼Ê¿ª·ÅÖУ¬ÎÒÃÇ¿ÉÄÜ´Ómaster·ÖÖ§ÖÐÇгöÒ»¸ö·ÖÖ§£¬È»ºó½øÐпª·¢Íê³ÉÐèÇó£¬Öм侹ýR3,R4,R5µÄcommit¼Ç¼£¬×îºó¿ª·¢Íê³ÉÐèÒªºÏÈëmasterÖУ¬Õâ±ãÓõ½ÁËmerge¡£
Ò»°ãÔÚmergeÖ®ºó£¬»á³öÏÖconflict£¬ÐèÒªÕë¶Ô³åÍ»Çé¿ö£¬ÊÖ¶¯½â³ý³åÍ»¡£Ö÷ÒªÊÇÒòΪÁ½¸öÓû§ÐÞ¸ÄÁËͬһÎļþµÄͬһ¿éÇøÓò¡£ÈçÏÂͼËùʾ£¬ÐèÒªÊÖ¶¯½â³ý¡£
rebase
rebaseÓÖ³ÆÎªÑܺϣ¬ÊǺϲ¢µÄÁíÍâÒ»ÖÖÑ¡Ôñ¡£
ÔÚ¿ªÊ¼½×¶Î£¬ÎÒÃÇ´¦ÓÚnew·ÖÖ§ÉÏ£¬Ö´ÐÐgit rebase dev£¬ÄÇônew·ÖÖ§ÉÏеÄcommit¶¼ÔÚmaster·ÖÖ§ÉÏÖØÑÝÒ»±é£¬×îºócheckoutÇл»»Øµ½new·ÖÖ§¡£ÕâÒ»µãÓëmergeÊÇÒ»ÑùµÄ£¬ºÏ²¢Ç°ºóËù´¦µÄ·ÖÖ§²¢Ã»Óиı䡣git rebase dev£¬Í¨Ë׵ĽâÊ;ÍÊÇnew·ÖÖ§ÏëÕ¾ÔÚdevµÄ¼ç°òÉϼÌÐøÏÂÈ¥¡£rebaseÒ²ÐèÒªÊÖ¶¯½â¾ö³åÍ»¡£
rebaseÓëmergeµÄÇø±ð
ÏÖÔÚÎÒÃÇÓÐÕâÑùµÄÁ½¸ö·ÖÖ§,testºÍmaster£¬Ìá½»ÈçÏ£º
ÔÚmasterÖ´ÐÐgit merge test,È»ºó»áµÃµ½ÈçϽá¹û£º
ÔÚmasterÖ´ÐÐgit rebase test£¬È»ºóµÃµ½ÈçϽá¹û£º
¿ÉÒÔ¿´µ½£¬merge²Ù×÷»áÉú³ÉÒ»¸öеĽڵ㣬֮ǰµÄÌá½»·Ö¿ªÏÔʾ¡£¶ørebase²Ù×÷²»»áÉú³ÉеĽڵ㣬Êǽ«Á½¸ö·ÖÖ§ÈںϳÉÒ»¸öÏßÐÔµÄÌá½»¡£
Èç¹ûÄãÏëÒªÒ»¸ö¸É¾»µÄ£¬Ã»ÓÐmerge commitµÄÏßÐÔÀúÊ·Ê÷£¬ÄÇôÄãÓ¦¸ÃÑ¡Ôñgit rebase
Èç¹ûÄãÏë±£ÁôÍêÕûµÄÀúÊ·¼Ç¼£¬²¢ÇÒÏëÒª±ÜÃâÖØÐ´commit historyµÄ·çÏÕ£¬ÄãÓ¦¸ÃÑ¡ÔñʹÓÃgit merge
reset
resetÃüÁî°Ñµ±Ç°·ÖÖ§Ö¸ÏòÁíÒ»¸öλÖ㬲¢ÇÒÏàÓ¦µÄ±ä¶¯¹¤×÷ÇøºÍÔÝ´æÇø¡£
revert
git revertÓÃÒ»¸öÐÂÌá½»À´Ïû³ýÒ»¸öÀúÊ·Ìá½»Ëù×öµÄÈκÎÐ޸ġ£
revertÓëresetµÄÇø±ð
git revertÊÇÓÃÒ»´ÎеÄcommitÀ´»Ø¹ö֮ǰµÄcommit£¬git resetÊÇÖ±½Óɾ³ýÖ¸¶¨µÄcommit¡£ÔڻعöÕâÒ»²Ù×÷ÉÏ¿´£¬Ð§¹û²î²»¶à¡£µ«ÊÇÔÚÈÕºó¼ÌÐømergeÒÔǰµÄÀϰ汾ʱÓÐÇø±ð¡£ÒòΪgit revertÊÇÓÃÒ»´ÎÄæÏòµÄcommit¡°Öк͡±Ö®Ç°µÄÌá½»£¬Òò´ËÈÕºóºÏ²¢ÀϵÄbranchʱ£¬µ¼ÖÂÕⲿ·Ö¸Ä±ä²»»áÔٴγöÏÖ£¬¼õÉÙ³åÍ»¡£µ«ÊÇgit resetÊÇÖ®¼ä°ÑijЩcommitÔÚij¸öbranchÉÏɾ³ý£¬Òò¶øºÍÀϵÄbranchÔÙ´Îmergeʱ£¬ÕâЩ±»»Ø¹öµÄcommitÓ¦¸Ã»¹»á±»ÒýÈ룬²úÉúºÜ¶à³åÍ»¡£
git reset ÊǰÑHEADÏòºóÒÆ¶¯ÁËһϣ¬¶øgit revertÊÇHEAD¼ÌÐøÇ°½ø£¬Ö»ÊÇеÄcommitµÄÄÚÈݺÍÒªrevertµÄÄÚÈÝÕýºÃÏà·´£¬Äܹ»µÖÏûÒª±»revertµÄÄÚÈÝ¡£
pushÉÏ´«±¾µØ²Ö¿â·ÖÖ§µ½Ô¶³Ì²Ö¿â·ÖÖ§£¬ÊµÏÖͬ²½¡£
ÆäËûÃüÁî
ÒÔÉϾÍÊǹØÓÚGitµÄһЩ³£ÓÃÃüÁî¼°Ïêϸ²ûÊö£¬ÏàÐÅÄܶÔGitÓÐÒ»¸ö³õ²½µÄÈÏʶ¡£ |