±à¼ÍƼö: |
±¾ÎÄÀ´×Ôsegmentfault£¬ÎÄÕ½éÉÜÁËGitµÄÌØµã¡¢Git
ÌṩµÄÈýÖÖ¹¤×÷Á÷³ÌÒÔ¼°Git ·ÖÖ§µÄ¹ÜÀíµÈÏà¹ØÄÚÈÝ¡£ |
|
ΪʲôʹÓÃGit
Ëæ×Å»¥ÁªÍøÊ±´úµÄÀ´ÁÙÓë·¢Õ¹£¬ÓÈÆä·Ö²¼Ê½¿ª·¢µÄ´óÁ¦ÒýÈ룬¶ÔÓÚ¿ª·¢¹¤³ÌʦÀ´Ëµ£¬´úÂë¹ÜÀí±ä³ÉÁËÍ·µÈÄÑÌâ¡£10¶à¸öÈË»òÕ߸ü¶àµÄ³ÉÔ±µÄÑз¢ÍŶÓÈçºÎ¹ÜÀíͬһ·Ý´úÂ룬ÒìµØ°ì¹«ÈçºÎ¸úͬÊÂÓÐЧµÄά»¤Í¬Ò»·Ý´úÂ룿ÏÂÃæÖ±½Ó½éÉÜGit£¬¾Í²»¶ÔGitºÍÆäËûµÄ°æ±¾¹ÜÀí¹¤¾ß½øÐбȽÏÁË¡£
GitÊôÓÚ·Ö²¼Ê½µÄ°æ±¾¿ØÖÆÏµÍ³£¬Ëü¾ßÓÐÒÔÏÂÌØµã£º
GitÖÐÿ¸ö¿Ë¡(clone)µÄ°æ±¾¿â¶¼ÊÇÆ½µÈµÄ¡£Äã¿ÉÒÔ´ÓÈκÎÒ»¸ö°æ±¾¿âµÄ¿Ë¡À´´´½¨ÊôÓÚÄã×Ô¼ºµÄ°æ±¾¿â£¬Í¬Ê±ÄãµÄ°æ±¾¿âÒ²¿ÉÒÔ×÷ΪԴÌṩ¸øËûÈË£¬Ö»ÒªÄãÔ¸Òâ¡£
GitµÄÿһ´ÎÌáÈ¡²Ù×÷£¬Êµ¼ÊÉ϶¼ÊÇÒ»´Î¶Ô´úÂë²Ö¿âµÄÍêÕû±¸·Ý¡£
Ìá½»ÍêÈ«ÔÚ±¾µØÍê³É£¬ÎÞÐë±ðÈ˸øÄãÊÚȨ£¬ÄãµÄ°æ±¾¿âÄã×÷Ö÷£¬²¢ÇÒÌá½»×ÜÊÇ»á³É¹¦¡£
ÉõÖÁ»ùÓھɰ汾µÄ¸Ä¶¯Ò²¿ÉÒԳɹ¦Ìá½»£¬Ìá½»»á»ùÓھɵİ汾´´½¨Ò»¸öеķÖÖ§¡£
GitµÄÌá½»²»»á±»´ò¶Ï£¬Ö±µ½ÄãµÄ¹¤×÷ÍêÈ«ÂúÒâÁË£¬PUSH¸øËûÈË»òÕßËûÈËPULLÄãµÄ°æ±¾¿â£¬ºÏ²¢»á·¢ÉúÔÚPULLºÍPUSH¹ý³ÌÖУ¬²»ÄÜ×Ô¶¯½â¾öµÄ³åÍ»»áÌáʾÄúÊÖ¹¤Íê³É¡£
³åÍ»½â¾ö£ºÔÚÐèÒªµÄʱºò²Å½øÐкϲ¢ºÍ³åÍ»½â¾ö¡£
Git°æ±¾¿âͳһ·ÅÔÚ·þÎñÆ÷ÖÐ
¿ÉÒÔΪ Git °æ±¾¿â½øÐÐÊÚȨ£ºËÄÜ´´½¨°æ±¾¿â£¬ËÄÜÏò°æ±¾¿âPUSH£¬ËÄܹ»¶ÁÈ¡£¨¿Ë¡£©°æ±¾¿â£¬¼´È¨ÏÞÅäÖÃ
ÍŶӵijÉÔ±ÏȽ«·þÎñÆ÷µÄ°æ±¾¿â¿Ë¡µ½±¾µØ£»²¢¾³£µÄ´Ó·þÎñÆ÷µÄ°æ±¾¿âÀ£¨PULL£©×îеĸüУ»
ÍŶӵijÉÔ±½«×Ô¼ºµÄ¸Ä¶¯ÍÆ£¨PUSH£©µ½·þÎñÆ÷µÄ°æ±¾¿âÖУ¬µ±ÆäËûÈ˺Ͱ汾¿âͬ²½£¨PULL£©Ê±£¬»á×Ô¶¯»ñÈ¡¸Ä±ä
ÄãÍêÈ«¿ÉÒÔÔÚÍÑÀëGit·þÎñÆ÷ËùÔÚÍøÂçµÄÇé¿öÏ£¬ÈçÒÆ¶¯°ì¹«£¯³ö²îʱ£¬ÕÕ³£Ê¹ÓôúÂë¿â
ÄãÖ»ÐèÒªÔÚÄܹ»½ÓÈëGit·þÎñÆ÷ËùÔÚÍøÂçʱ£¬PULLºÍPUSH¼´¿ÉÍê³ÉºÍ·þÎñÆ÷ͬ²½ÒÔ¼°Ìá½»
Ñ¡ÔñÊʺÏÍŶӵŤ×÷Á÷
·Ö²¼Ê½¹¤×÷Á÷³Ì:
ͬ´«Í³µÄ¼¯ÖÐʽ°æ±¾¿ØÖÆÏµÍ³£¨CVCS£©²»Í¬£¬Git µÄ·Ö²¼Ê½ÌØÐÔʹµÃ¿ª·¢Õß¼äµÄÐ×÷±äµÃ¸ü¼ÓÁé»î¶àÑù¡£ÔÚ¼¯ÖÐʽϵͳÖУ¬Ã¿¸ö¿ª·¢Õß¾ÍÏñÊÇÁ¬½ÓÔÚ¼¯Ï߯÷ÉϵĽڵ㣬±Ë´ËµÄ¹¤×÷·½Ê½´óÌåÏàÏñ¡£¶øÔÚ
Git ÖУ¬Ã¿¸ö¿ª·¢Õßͬʱ°çÑÝ׎ڵãºÍ¼¯Ï߯÷µÄ½ÇÉ«¡ª¡ªÒ²¾ÍÊÇ˵£¬Ã¿¸ö¿ª·¢Õ߼ȿÉÒÔ½«×Ô¼ºµÄ´úÂë¹±Ï×µ½ÆäËûµÄ²Ö¿âÖУ¬Í¬Ê±Ò²ÄÜά»¤×Ô¼ºµÄ¹«¿ª²Ö¿â£¬ÈÃÆäËûÈË¿ÉÒÔÔÚÆä»ù´¡ÉϹ¤×÷²¢¹±Ï×´úÂë¡£ÓÉ´Ë£¬Git
µÄ·Ö²¼Ê½Ð×÷¿ÉÒÔΪÄãµÄÏîÄ¿ºÍÍŶÓÑÜÉú³öÖÖÖÖ²»Í¬µÄ¹¤×÷Á÷³Ì£¬½ÓÏÂÀ´µÄÕ½ڻá½éÉܼ¸ÖÖÀûÓÃÁË Git µÄÕâÖÖÁé»îÐԵij£¼ûÓ¦Ó÷½Ê½¡£ÎÒÃǽ«ÌÖÂÛÿÖÖ·½Ê½µÄÓŵãÒÔ¼°¿ÉÄܵÄȱµã£»Äã¿ÉÒÔÑ¡ÔñʹÓÃÆäÖеÄijһÖÖ£¬»òÕß½«ËüÃǵÄÌØÐÔ»ìºÏ´îÅäʹÓá£
Git ÌṩµÄÓÐÒÔÏÂÈýÖÖ¹¤×÷Á÷³Ì
¼¯ÖÐʽ¹¤×÷Á÷
¼¯³É¹ÜÀíÕß¹¤×÷Á÷
˾Áî¹ÙÓ븱¹Ù¹¤×÷Á÷
ĿǰÎÒÃÇÍŶÓʹÓõÄÊÇ×î¼òµ¥µÄ·½Ê½£¬¼¯ÖÐʽ¹¤×÷Á÷³Ì£¬Ëæ×ÅÑз¢ÍŶӵÄ׳´ó¿ÉÄÜ»áÑ¡ÔñʹÓõڶþÖÖ£¬ÏÂÃæÎÒÃÇ·Ö±ð½éÉÜÏÂÈýÖÖ¹¤×÷Á÷
1.¼¯ÖÐʽ¹¤×÷Á÷
¼¯ÖÐʽϵͳÖÐͨ³£Ê¹ÓõÄÊǵ¥µãÐ×÷Ä£ÐÍ¡ª¡ª¼¯ÖÐʽ¹¤×÷Á÷¡£Ò»¸öÖÐÐļ¯Ï߯÷£¬»òÕß˵²Ö¿â£¬¿ÉÒÔ½ÓÊÜ´úÂ룬ËùÓÐÈ˽«×Ô¼ºµÄ¹¤×÷Óë֮ͬ²½¡£Èô¸É¸ö¿ª·¢ÕßÔò×÷Ϊ½Úµã¡ª¡ªÒ²¾ÍÊÇÖÐÐIJֿâµÄÏû·ÑÕß¡ª¡ª²¢ÇÒÓëÆä½øÐÐͬ²½¡£

ÕâÒâζ×ÅÈç¹ûÁ½¸ö¿ª·¢Õß´ÓÖÐÐIJֿâ¿Ë¡´úÂëÏÂÀ´£¬Í¬Ê±×÷ÁËһЩÐ޸ģ¬ÄÇôֻÓеÚÒ»¸ö¿ª·¢Õß¿ÉÒÔ˳ÀûµØ°ÑÊý¾ÝÍÆËͻع²Ïí·þÎñÆ÷¡£µÚ¶þ¸ö¿ª·¢ÕßÔÚÍÆËÍÐÞ¸Ä֮ǰ£¬±ØÐëÏȽ«µÚÒ»¸öÈ˵Ť×÷ºÏ²¢½øÀ´£¬ÕâÑù²Å²»»á¸²¸ÇµÚÒ»¸öÈ˵ÄÐ޸ġ£ÕâºÍ
Subversion £¨»òÈκΠCVCS£©ÖеĸÅÄîÒ»Ñù£¬¶øÇÒÕâ¸öģʽҲ¿ÉÒԺܺõØÔËÓõ½ Git ÖС£Èç¹ûÔÚ¹«Ë¾»òÕßÍŶÓÖУ¬ÄãÒѾϰ¹ßÁËʹÓÃÕâÖÖ¼¯ÖÐʽ¹¤×÷Á÷³Ì£¬ÍêÈ«¿ÉÒÔ¼ÌÐø²ÉÓÃÕâÖÖ¼òµ¥µÄģʽ¡£Ö»ÐèÒª´î½¨ºÃÒ»¸öÖÐÐIJֿ⣬²¢¸ø¿ª·¢ÍŶÓÖеÄÿ¸öÈËÍÆËÍÊý¾ÝµÄȨÏÞ£¬¾Í¿ÉÒÔ¿ªÕ¹¹¤×÷ÁË¡£Git
²»»áÈÃÓû§¸²¸Ç±Ë´ËµÄÐ޸ġ£ÀýÈç John ºÍ Jessica ͬʱ¿ªÊ¼¹¤×÷¡£ JohnÍê³ÉÁËËûµÄÐ޸IJ¢ÍÆË͵½·þÎñÆ÷¡£½Ó×Å
Jessica ³¢ÊÔÌá½»Ëý×Ô¼ºµÄÐ޸ģ¬È´Ôâµ½·þÎñÆ÷¾Ü¾ø¡£Ëý±»¸æÖªËýµÄÐÞ¸ÄÕýͨ¹ý·Ç¿ì½øÊ½£¨non-fast-forward£©µÄ·½Ê½ÍÆËÍ£¬Ö»Óн«Êý¾ÝץȡÏÂÀ´²¢ÇҺϲ¢ºó·½ÄÜÍÆËÍ¡£ÕâÖÖģʽµÄ¹¤×÷Á÷³ÌµÄʹÓ÷dz£¹ã·º£¬ÒòΪ´ó¶àÊýÈË¶ÔÆäºÜÊìϤҲºÜϰ¹ß¡£µ±È»Õâ²¢²»¾ÖÏÞÓÚСÍŶӡ£ÀûÓÃ
Git µÄ·ÖÖ§Ä£ÐÍ£¬Í¨¹ýͬʱÔÚ¶à¸ö·ÖÖ§ÉϹ¤×÷µÄ·½Ê½£¬¼´Ê¹ÊÇÉϰÙÈ˵Ŀª·¢ÍŶÓÒ²¿ÉÒԺܺõØÔÚµ¥¸öÏîÄ¿ÉÏÐ×÷¡£
2.¼¯³É¹ÜÀíÕß¹¤×÷Á÷
Git ÔÊÐí¶à¸öÔ¶³Ì²Ö¿â´æÔÚ£¬Ê¹µÃÕâÑùÒ»ÖÖ¹¤×÷Á÷³ÉΪ¿ÉÄÜ£ºÃ¿¸ö¿ª·¢ÕßÓµÓÐ×Ô¼º²Ö¿âµÄдȨÏÞºÍÆäËûËùÓÐÈ˲ֿâµÄ¶ÁȨÏÞ¡£ÕâÖÖÇéÐÎÏÂͨ³£»áÓиö´ú±í``¹Ù·½''ÏîÄ¿µÄȨÍþµÄ²Ö¿â¡£ÒªÎªÕâ¸öÏîÄ¿×ö¹±Ï×£¬ÄãÐèÒª´Ó¸ÃÏîÄ¿¿Ë¡³öÒ»¸ö×Ô¼ºµÄ¹«¿ª²Ö¿â£¬È»ºó½«×Ô¼ºµÄÐÞ¸ÄÍÆËÍÉÏÈ¥¡£½Ó×ÅÄã¿ÉÒÔÇëÇó¹Ù·½²Ö¿âµÄά»¤ÕßÀÈ¡¸üкϲ¢µ½Ö÷ÏîÄ¿¡£Î¬»¤Õß¿ÉÒÔ½«ÄãµÄ²Ö¿â×÷ΪԶ³Ì²Ö¿âÌí¼Ó½øÀ´£¬ÔÚ±¾µØ²âÊÔÄãµÄ±ä¸ü£¬½«ÆäºÏ²¢ÈëËûÃǵķÖÖ§²¢ÍÆËͻعٷ½²Ö¿â¡£ÕâÒ»Á÷³ÌµÄ¹¤×÷·½Ê½ÈçÏÂËùʾ£º
ÏîĿά»¤ÕßÍÆË͵½Ö÷²Ö¿â¡£
¹±Ï×Õ߿ˡ´Ë²Ö¿â£¬×ö³öÐ޸ġ£
¹±Ï×Õß½«Êý¾ÝÍÆË͵½×Ô¼ºµÄ¹«¿ª²Ö¿â¡£
¹±Ï×Õ߸øÎ¬»¤Õß·¢ËÍÓʼþ£¬ÇëÇóÀÈ¡×Ô¼ºµÄ¸üС£
ά»¤ÕßÔÚ×Ô¼º±¾µØµÄ²Ö¿âÖУ¬½«¹±Ï×ÕߵIJֿâ¼ÓΪԶ³Ì²Ö¿â²¢ºÏ²¢Ð޸ġ£
ά»¤Õß½«ºÏ²¢ºóµÄÐÞ¸ÄÍÆË͵½Ö÷²Ö¿â¡£

ÕâÊÇ GitHub ºÍ GitLab µÈ¼¯Ï߯÷ʽ£¨hub-based£©¹¤¾ß×î³£ÓõŤ×÷Á÷³Ì¡£ÈËÃÇ¿ÉÒÔÈÝÒ׵ؽ«Ä³¸öÏîÄ¿ÅÉÉú³ÉΪ×Ô¼ºµÄ¹«¿ª²Ö¿â£¬ÏòÕâ¸ö²Ö¿âÍÆËÍ×Ô¼ºµÄÐ޸쬲¢ÎªÃ¿¸öÈËËù¼û¡£Õâô×ö×îÖ÷ÒªµÄÓŵãÖ®Ò»ÊÇÄã¿ÉÒÔ³ÖÐøµØ¹¤×÷£¬¶øÖ÷²Ö¿âµÄά»¤Õß¿ÉÒÔËæÊ±ÀÈ¡ÄãµÄÐ޸ġ£¹±Ï×Õß²»±ØµÈ´ýά»¤Õß´¦ÀíÍêÌá½»µÄ¸üСª¡ªÃ¿Ò»·½¶¼¿ÉÒÔ°´ÕÕ×Ô¼º½Ú×๤×÷¡£
3.˾Áî¹ÙÓ븱¹Ù¹¤×÷Á÷
ÕâÆäʵÊǶà²Ö¿â¹¤×÷Á÷³ÌµÄ±äÖÖ¡£Ò»°ãÓµÓÐÊý°ÙλÐ×÷¿ª·¢Õߵij¬´óÐÍÏîÄ¿²Å»áÓõ½ÕâÑùµÄ¹¤×÷·½Ê½£¬ÀýÈçÖøÃûµÄ
Linux ÄÚºËÏîÄ¿¡£±»³ÆÎª¸±¹Ù£¨lieutenant£©µÄ¸÷¸ö¼¯³É¹ÜÀíÕß·Ö±ð¸ºÔ𼯳ÉÏîÄ¿ÖеÄÌØ¶¨²¿·Ö¡£ËùÓÐÕâЩ¸±¹ÙÍ·ÉÏ»¹ÓÐһλ³ÆÎªË¾Áî¹Ù£¨dictator£©µÄ×ܼ¯³É¹ÜÀíÕ߸ºÔðͳ³ï¡£Ë¾Áî¹Ùά»¤µÄ²Ö¿â×÷Ϊ²Î¿¼²Ö¿â£¬ÎªËùÓÐÐ×÷ÕßÌṩËûÃÇÐèÒªÀÈ¡µÄÏîÄ¿´úÂë¡£Õû¸öÁ÷³Ì¿´ÆðÀ´ÊÇÕâÑùµÄ
ÆÕͨ¿ª·¢ÕßÔÚ×Ô¼ºµÄÌØÐÔ·ÖÖ§ÉϹ¤×÷£¬²¢¸ù¾Ýmaster·ÖÖ§½øÐбä»ù¡£ÕâÀïÊÇ˾Áî¹ÙµÄmaster·ÖÖ§¡£
¸±¹Ù½«ÆÕͨ¿ª·¢ÕßµÄÌØÐÔ·ÖÖ§ºÏ²¢µ½×Ô¼ºµÄmaster·ÖÖ§ÖС£
˾Áî¹Ù½«ËùÓи±¹ÙµÄmaster·ÖÖ§²¢Èë×Ô¼ºµÄmaster·ÖÖ§ÖС£
˾Áî¹Ù½«¼¯³ÉºóµÄmaster·ÖÖ§ÍÆË͵½²Î¿¼²Ö¿âÖУ¬ÒÔ±ãËùÓÐÆäËû¿ª·¢ÕßÒÔ´ËΪ»ù´¡½øÐбä»ù¡£

ÕâÖÖ¹¤×÷Á÷³Ì²¢²»³£Óã¬Ö»Óе±ÏîÄ¿¼«ÎªÅÓÔÓ£¬»òÕßÐèÒª¶à¼¶±ð¹ÜÀíʱ£¬²Å»áÌåÏÖ³öÓÅÊÆ¡£ÀûÓÃÕâÖÖ·½Ê½£¬ÏîÄ¿×ܸºÔðÈË£¨¼´Ë¾Áî¹Ù£©¿ÉÒÔ°Ñ´óÁ¿·ÖÉ¢µÄ¼¯³É¹¤×÷ίÍиø²»Í¬µÄС×鸺ÔðÈË·Ö±ð´¦Àí£¬È»ºóÔÚ²»Í¬Ê±¿Ì½«´ó¿éµÄ´úÂë×Ó¼¯Í³³ïÆðÀ´£¬ÓÃÓÚÖ®ºóµÄÕûºÏ¡£
½éÉÜÁËÉÏÃæÈýÖÖ¹¤×÷Á÷£¬Ïë±ØÄãÒ»¶¨ÓÐÏ뷨ʹÓÃÄÄÒ»ÖÖÁË£¬Ñ¡ÔñÒ»¸öÊʺÏ×Ô¼ºÍŶӵŤ×÷Á÷£¬Ö»ÒªÊÇÑϸñ°´ÕÕÕâÖÖ¹æÔòÖ´Ðеϰ£¬ÏàÐÅÄãµÄÑз¢ÍŶӶÔÓÚ´úÂëµÄ¹ÜÀíÒ»¶¨²»»áÔÙ»ìÂÒÁË£¬ÕâÒ²»á´ó´óÌáÉýÍŶӵŤ×÷ЧÂÊ¡£
¹ÜÀí Git ·ÖÖ§
¼¸ºõËùÓеİ汾¿ØÖÆÏµÍ³¶¼ÒÔijÖÖÐÎʽ֧³Ö·ÖÖ§¡£Ê¹Ó÷ÖÖ§Òâζ×ÅÄã¿ÉÒÔ°ÑÄãµÄ¹¤×÷´Ó¿ª·¢Ö÷ÏßÉÏ·ÖÀ뿪À´£¬ÒÔÃâÓ°Ï쿪·¢Ö÷Ïß¡£ÔÚºÜ¶à°æ±¾¿ØÖÆÏµÍ³ÖУ¬ÕâÊÇÒ»¸öÂÔ΢µÍЧµÄ¹ý³Ì¡ª¡ª³£³£ÐèÒªÍêÈ«´´½¨Ò»¸öÔ´´úÂëĿ¼µÄ¸±±¾¡£¶ÔÓÚ´óÏîÄ¿À´Ëµ£¬ÕâÑùµÄ¹ý³Ì»áºÄ·ÑºÜ¶àʱ¼ä¡£
ÓÐÈ衄 Git µÄ·ÖÖ§Ä£ÐͳÆÎªËüµÄ``±ØÉ±¼¼ÌØÐÔ''£¬Ò²ÕýÒòΪÕâÒ»ÌØÐÔ£¬Ê¹µÃ Git ´ÓÖÚ¶à°æ±¾¿ØÖÆÏµÍ³ÖÐÍÑÓ±¶ø³ö¡£ÎªºÎ
Git µÄ·ÖÖ§Ä£ÐÍÈç´Ë³öÖÚÄØ£¿ Git ´¦Àí·ÖÖ§µÄ·½Ê½¿ÉνÊÇÄÑÒÔÖÃÐŵÄÇáÁ¿£¬´´½¨Ð·ÖÖ§ÕâÒ»²Ù×÷¼¸ºõÄÜÔÚ˲¼äÍê³É£¬²¢ÇÒÔÚ²»Í¬·ÖÖ§Ö®¼äµÄÇл»²Ù×÷Ò²ÊÇÒ»Ñù±ã½Ý¡£ÓëÐí¶àÆäËü°æ±¾¿ØÖÆÏµÍ³²»Í¬£¬Git
¹ÄÀøÔÚ¹¤×÷Á÷³ÌÖÐÆµ·±µØÊ¹Ó÷ÖÖ§ÓëºÏ²¢£¬ÄÄÅÂÒ»ÌìÖ®ÄÚ½øÐÐÐí¶à´Î¡£Àí½âºÍ¾«Í¨ÕâÒ»ÌØÐÔ£¬Äã±ã»áÒâʶµ½ Git
ÊÇÈç´ËµÄÇ¿´ó¶øÓÖ¶ÀÌØ£¬²¢ÇÒ´Ó´ËÕæÕý¸Ä±äÄãµÄ¿ª·¢·½Ê½¡£
Git ´´½¨·ÖÖ§
Git ÊÇÔõô´´½¨Ð·ÖÖ§µÄÄØ£¿ºÜ¼òµ¥£¬ËüÖ»ÊÇΪÄã´´½¨ÁËÒ»¸ö¿ÉÒÔÒÆ¶¯µÄеÄÖ¸Õë¡£±ÈÈ磬´´½¨Ò»¸ö testing
·ÖÖ§£¬ÄãÐèҪʹÓÃgit branchÃüÁ
Õâ»áÔÚµ±Ç°ËùÔÚµÄÌá½»¶ÔÏóÉÏ´´½¨Ò»¸öÖ¸Õë

ÄÇô£¬Git ÓÖÊÇÔõô֪µÀµ±Ç°ÔÚÄÄÒ»¸ö·ÖÖ§ÉÏÄØ£¿Ò²ºÜ¼òµ¥£¬ËüÓÐÒ»¸öÃûΪHEADµÄÌØÊâÖ¸Õë¡£Çë×¢ÒâËüºÍÐí¶àÆäËü°æ±¾¿ØÖÆÏµÍ³£¨Èç
Subversion »ò CVS£©ÀïµÄHEAD¸ÅÄîÍêÈ«²»Í¬¡£ÔÚ Git ÖУ¬ËüÊÇÒ»¸öÖ¸Õ룬ָÏòµ±Ç°ËùÔڵı¾µØ·ÖÖ§¡£ÔÚ±¾ÀýÖУ¬ÄãÈÔÈ»ÔÚmaster·ÖÖ§ÉÏ¡£ÒòΪgit
branchÃüÁî½ö½ö´´½¨Ò»¸öзÖÖ§£¬²¢²»»á×Ô¶¯Çл»µ½Ð·ÖÖ§ÖÐÈ¥¡£

Äã¿ÉÒÔ¼òµ¥µØÊ¹ÓÃgit logÃüÁî²é¿´¸÷¸ö·ÖÖ§µ±Ç°ËùÖ¸µÄ¶ÔÏó¡£ÌṩÕâÒ»¹¦ÄܵIJÎÊýÊÇ--decorate¡£
$ git log --oneline
--decoratef30ab (HEAD, master, testing) add feature
#32 - ability to add new
34ac2 fixed bug #1328 - stack overflow under certain
conditions
98ca9 initial commit of my project |
ÕýÉÏ£¬µ±Ç°master ºÍtesting ·ÖÖ§¾ùÖ¸ÏòУÑéºÍÒÔf30ab¿ªÍ·µÄÌá½»¶ÔÏó¡£
·ÖÖ§Çл»
ÒªÇл»µ½Ò»¸öÒÑ´æÔڵķÖÖ§£¬ÄãÐèҪʹÓÃgit checkoutÃüÁî¡£ÎÒÃÇÏÖÔÚÇл»µ½Ð´´½¨µÄtesting·ÖÖ§È¥£º
ÕâÑùHEAD¾ÍÖ¸Ïòtesting·ÖÖ§ÁË¡£

ÄÇô£¬ÕâÑùµÄʵÏÖ·½Ê½»á¸øÎÒÃÇ´øÀ´Ê²Ã´ºÃ´¦ÄØ£¿ÏÖÔÚ²»·ÁÔÙÌá½»Ò»´Î£º
$ vim test.rb
$ git commit -a -m 'made a change' |

ÈçÉÏͼËùʾ£¬ÄãµÄtesting·ÖÖ§ÏòÇ°ÒÆ¶¯ÁË£¬µ«ÊÇmaster·Ö֧ȴûÓУ¬ËüÈÔȻָÏòÔËÐÐgit
checkoutʱËùÖ¸µÄ¶ÔÏó¡£Õâ¾ÍÓÐÒâ˼ÁË£¬ÏÖÔÚÎÒÃÇÇл»»Ømaster·ÖÖ§¿´¿´£º

ÕâÌõÃüÁî×öÁËÁ½¼þÊ¡£Ò»ÊÇʹ HEAD Ö¸»Ømaster·ÖÖ§£¬¶þÊǽ«¹¤×÷Ŀ¼»Ö¸´³Émaster·ÖÖ§ËùÖ¸ÏòµÄ¿ìÕÕÄÚÈÝ¡£Ò²¾ÍÊÇ˵£¬ÄãÏÖÔÚ×öÐ޸ĵϰ£¬ÏîÄ¿½«Ê¼ÓÚÒ»¸ö½Ï¾ÉµÄ°æ±¾¡£±¾ÖÊÉÏÀ´½²£¬Õâ¾ÍÊǺöÂÔtesting·ÖÖ§Ëù×öµÄÐ޸ģ¬ÒÔ±ãÓÚÏòÁíÒ»¸ö·½Ïò½øÐпª·¢¡£
ÏÖÔÚÎÒÃÇÉÔ΢ÔÙ×öЩÐ޸IJ¢commit:
$ vim test.rb
$ git commit -a -m 'made other changes' |
ÏÖÔÚ£¬Õâ¸öÏîÄ¿µÄÌá½»ÀúÊ·ÒѾ²úÉúÁ˷ֲ档ÒòΪ¸Õ²ÅÄã´´½¨ÁËÒ»¸öзÖÖ§£¬²¢Çл»¹ýÈ¥½øÐÐÁËһЩ¹¤×÷£¬ËæºóÓÖÇл»»Ø
master ·ÖÖ§½øÐÐÁËÁíÍâһЩ¹¤×÷¡£ÉÏÊöÁ½´Î¸Ä¶¯Õë¶ÔµÄÊDz»Í¬·ÖÖ§£ºÄã¿ÉÒÔÔÚ²»Í¬·ÖÖ§¼ä²»¶ÏµØÀ´»ØÇл»ºÍ¹¤×÷£¬²¢ÔÚʱ»ú³ÉÊìʱ½«ËüÃǺϲ¢ÆðÀ´¡£¶øËùÓÐÕâЩ¹¤×÷£¬ÄãÐèÒªµÄÃüÁîÖ»ÓÐbranch¡¢checkoutºÍcommit¡£

Git ºÏ²¢·ÖÖ§
½ÓÏÂÀ´ÔÛÃǾٸöÉÔ΢¸´ÔÓµãµÄÀý×Ó£¬Èý¸ö·ÖÖ§µÄ·Ö±ð´¦Àí²»Í¬µÄÊÂÇ飬×îºóºÏ²¢µ½Ò»¿é
Ê×ÏÈ£¬ÎÒÃǼÙÉèÄãÕýÔÚÄãµÄÏîÄ¿ÉϹ¤×÷£¬²¢ÇÒÒѾÓÐһЩÌá½»£¬ ÈçÏÂͼ:

ÏÖÔÚ£¬ÄãÒѾ¾ö¶¨Òª½â¾öÄãµÄ¹«Ë¾Ê¹ÓõÄÎÊÌâ×·×ÙϵͳÖÐµÄ #53 ÎÊÌâ¡£ÏëҪн¨Ò»¸ö·ÖÖ§²¢Í¬Ê±Çл»µ½ÄǸö·ÖÖ§ÉÏ£¬Äã¿ÉÒÔÔËÐÐÒ»¸ö´øÓÐ-b²ÎÊýµÄgit
checkoutÃüÁ
$ git checkout
-b iss53
Switched to a new branch "iss53" |
ËüÊÇÏÂÃæÁ½ÌõÃüÁîµÄ¼òд£º
$ git branch
iss53
$ git checkout iss53 |

Äã¼ÌÐøÔÚ #53 ÎÊÌâÉϹ¤×÷£¬²¢ÇÒ×öÁËһЩÌá½»¡£Ôڴ˹ý³ÌÖУ¬iss53·ÖÖ§ÔÚ²»¶ÏµÄÏòÇ°ÍÆ½ø£¬ÒòΪÄãÒѾ¼ì³öµ½¸Ã·ÖÖ§£¨Ò²¾ÍÊÇ˵£¬ÄãµÄHEADÖ¸ÕëÖ¸ÏòÁËiss53·ÖÖ§£©
$ vim index.html
$ git commit -a -m 'added a new footer [issue
53]' |

µ±ÄãÔÚiss53Õâ¸ö·ÖÖ§ÉÏÕýÔÚ˳³©µÄ¹¤×÷£¬ÕâʱºòÓиöÌØ±ð½ô¼±µÄÎÊÌâÐèÒªÄãÀ´ÐÞ¸´£¬ÄÇôΪÁ˲»Ó°Ïìiss53µÄÕý³£¹¤×÷£¬ÄãÐèÒª×öµÄÊÇÖØÐÂÇл»µ½master·ÖÖ§ÉÏÀ´£¬ÔÚmaster·ÖÖ§µÄ»ù´¡ÉÏÔÙ´´½¨Ò»¸öеķÖÖ§
hotfix £¬È»ºóÔÚhotfix·ÖÖ§½â¾ö½ô¼±µÄÎÊÌâ¡£
$ git checkout
-b hotfix
Switched to a new branch 'hotfix'
$ vim index.html
$ git commit -a -m 'fixed the broken email address'
[hotfix 1fb7853] fixed the broken email address
1 file changed, 2 insertions(+) |

Õâ¸öʱºòhotfix·ÖÖ§ÉϵÄÎÊÌâ³¹µ×½â¾öÁË£¬ÄãÐèÒªºÏ²¢µ½master·ÖÖ§£¬²¢ÇÒ²¿ÊðÉÏÏߣ¬
ÄÇôÄãÖ»ÐèÒªÔÚmaster·Ö֧ʹÓÃgit mergeÃüÁî¾Í¿ÉÒÔÁË
$ git checkout
master
$ git merge hotfix
Updating f42c576..3a0874c
Fast-forward index.html | 2 ++
1 file changed, 2 insertions(+) |
Ôںϲ¢µÄʱºò£¬ÄãÓ¦¸Ã×¢Òâµ½ÁË"¿ì½ø£¨fast-forward£©"Õâ¸ö´Ê¡£ÓÉÓÚµ±Ç°master·ÖÖ§ËùÖ¸ÏòµÄÌá½»ÊÇÄ㵱ǰÌá½»£¨ÓйØ
hotfix µÄÌá½»£©µÄÖ±½ÓÉÏÓΣ¬ËùÒÔ Git Ö»ÊǼòµ¥µÄ½«Ö¸ÕëÏòÇ°ÒÆ¶¯¡£»»¾ä»°Ëµ£¬µ±ÄãÊÔͼºÏ²¢Á½¸ö·Ö֧ʱ£¬Èç¹û˳×ÅÒ»¸ö·ÖÖ§×ßÏÂÈ¥Äܹ»µ½´ïÁíÒ»¸ö·ÖÖ§£¬ÄÇô
Git Ôںϲ¢Á½ÕßµÄʱºò£¬Ö»»á¼òµ¥µÄ½«Ö¸ÕëÏòÇ°ÍÆ½ø£¨Ö¸ÕëÓÒÒÆ£©£¬ÒòΪÕâÖÖÇé¿öϵĺϲ¢²Ù×÷ûÓÐÐèÒª½â¾öµÄ·ÖÆç¡ª¡ªÕâ¾Í½Ð×ö
¡°¿ì½ø£¨fast-forward£©¡±¡£ÏÖÔÚ£¬×îеÄÐÞ¸ÄÒѾÔÚmaster·ÖÖ§ËùÖ¸ÏòµÄÌá½»¿ìÕÕÖÐÁË¡£

¹ØÓÚÕâ¸ö½ô¼±ÎÊÌâµÄ½â¾ö·½°¸·¢²¼Ö®ºó£¬Äã×¼±¸»Øµ½±»´ò¶Ï֮ǰʱµÄ¹¤×÷ÖС£È»¶ø£¬ÄãÓ¦¸ÃÏÈɾ³ýhotfix·ÖÖ§£¬ÒòΪÄãÒѾ²»ÔÙÐèÒªËüÁË£¬
master·ÖÖ§ÒѾָÏòÁËͬһ¸öλÖá£Äã¿ÉÒÔʹÓôø-dÑ¡ÏîµÄgit branchÃüÁîÀ´É¾³ý·ÖÖ§£º
$ git branch
-d hotfix
Deleted branch hotfix (3a0874c). |
ÏÖÔÚÄã¿ÉÒÔÇл»»ØÄãÕýÔÚ¹¤×÷µÄ·ÖÖ§¼ÌÐøÄãµÄ¹¤×÷£¬Ò²¾ÍÊÇÕë¶Ôiss53·ÖÖ§
$ git checkout
iss53
Switched to branch "iss53"
$ vim index.html
$ git commit -a -m 'finished the new footer [issue
53]'
[iss53 ad82d7a] finished the new footer [issue
53]
1 file changed, 1 insertion(+) |

Õâ¸öʱºò #53 ÎÊÌâ½â¾öºóÄã¾Í¿ÉÒÔ°Ñ´úÂëºÏ²¢µ½masterÁË£¬²Ù×÷¸ú¸Õ²ÅµÄhtofix·ÖÖ§´¦Àí·½Ê½Ò»Ñù
$ git checkout
master
Switched to branch 'master'
$ git merge iss53
Merge made by the 'recursive' strategy.index.html
| 1 +
1 file changed, 1 insertion(+) |
µ«ÊÇÕâºÍÄã֮ǰºÏ²¢hotfix·ÖÖ§µÄʱºò¿´ÆðÀ´ÓÐÒ»µã²»Ò»Ñù¡£ÔÚÕâÖÖÇé¿öÏ£¬ÄãµÄ¿ª·¢ÀúÊ·´ÓÒ»¸ö¸üÔçµÄµØ·½¿ªÊ¼·Ö²æ¿ªÀ´£¨diverged£©¡£ÒòΪ£¬master·ÖÖ§ËùÔÚÌá½»²¢²»ÊÇiss53·ÖÖ§ËùÔÚÌá½»µÄÖ±½Ó׿ÏÈ£¬Git
²»µÃ²»×öһЩ¶îÍâµÄ¹¤×÷¡£³öÏÖÕâÖÖÇé¿öµÄʱºò£¬Git »áʹÓÃÁ½¸ö·ÖÖ§µÄÄ©¶ËËùÖ¸µÄ¿ìÕÕ£¨C4ºÍC5£©ÒÔ¼°ÕâÁ½¸ö·ÖÖ§µÄ¹¤×÷׿ÏÈ£¨C2£©£¬×öÒ»¸ö¼òµ¥µÄÈý·½ºÏ²¢¡£

ºÍÖ®¼ä½«·ÖÖ§Ö¸ÕëÏòÇ°ÍÆ½øËù²»Í¬µÄÊÇ£¬Git ½«´Ë´ÎÈý·½ºÏ²¢µÄ½á¹û×öÁËÒ»¸öеĿìÕÕ²¢ÇÒ×Ô¶¯´´½¨Ò»¸öеÄÌá½»Ö¸ÏòËü¡£Õâ¸ö±»³Æ×÷Ò»´ÎºÏ²¢Ìá½»£¬ËüµÄÌØ±ðÖ®´¦ÔÚÓÚËûÓв»Ö¹Ò»¸ö¸¸Ìá½»¡£

Õâ¸öʱºòÈçºÎ²»ÐèÒªiss53·ÖÖ§µÄ»°£¬ÄãÒ²¿ÉÒÔɾ³ýiss53·ÖÖ§ÁË
Ô¶³Ì·ÖÖ§
ÒÔgithubΪÀý£¬Ä¿Ç°ºÜ¶à¿ªÔ´ÏîÄ¿ÒÔ¼°¹«Ë¾µÄÑз¢ÏîÄ¿´úÂëÒ»°ã¶¼ÍйÜÔÚgithub£¬ÄÇô¾Í³öÏÖÁËÔ¶³Ì²Ö¿â£¬Ô¶³Ì·ÖÖ§µÈÕâЩ¸ÅÄî¡£
ÏÂÃæÎÒÃÇ´ÓgithubÔ¶³Ì²Ö¿âcloneÏÂÀ´Ò»·Ý´úÂë

Èç¹ûÄãÔÚ±¾µØµÄmaster·ÖÖ§×öÁËһЩ¹¤×÷£¬È»¶øÔÚͬһʱ¼ä£¬ÆäËûÈËÍÆËÍÌá½»µ½git@github.com:glj1102/git_test.git
²¢¸üÐÂÁËËüµÄmaster·ÖÖ§£¬ÄÇôÄãµÄÌá½»ÀúÊ·½«Ïò²»Í¬µÄ·½Ïòǰ½ø¡£Ò²Ðí£¬Ö»ÒªÄã²»Óë origin ·þÎñÆ÷Á¬½Ó£¬ÄãµÄorigin/masterÖ¸Õë¾Í²»»áÒÆ¶¯¡£

Èç¹ûҪͬ²½ÄãµÄ¹¤×÷£¬ÔËÐÐgit pullÃüÁî¡£Õâ¸öÃüÁîÊÇץȡԶ³Ì·ÖÖ§Êý¾Ýµ½±¾µØ·ÖÖ§£¬²¢ÇÒ¸üб¾µØÊý¾Ý¿â£¬Òƶ¯origin/masterÖ¸ÕëÖ¸Ïòеġ¢¸üкóµÄλÖá£Í¬Ê±ÄãÒ²¿ÉÒÔÖ´ÐÐ
git pushÃüÁî°ÑÄã±¾µØÐ޸ĵÄÊý¾ÝÌá½»µ½Ô¶³Ì·ÖÖ§¡£
ʵʱ¸ú×ÙºÍ¼à¿ØÍŶӴúÂë²Ù×÷¼Ç¼
ÎÒÃÇʹÓõÄÊÇ Worktile + github À´¹ÜÀíÍŶӵ쬯½Ê±ÍŶӹµÍ¨£¬ÈÎÎñ·ÖÅä¶¼ÊÇͨ¹ýWorktileÀ´×öµÄ£¬ÄÇô
Worktile ÓëgithubÈçºÎ¹ØÁªµÄÄØ£¿
Worktile°ó¶¨github´úÂë²Ö´¢
ÔÚWorktileµÄºǫ́¹ÜÀí > ·þÎñ¹ÜÀíÖÐÕÒµ½github£¬µã»÷Ìí¼Ó

ÏÂÒ»²½»áÈÃÄãÑ¡ÔñWorktileµÄÒ»¸öÁÄÌìȺ×飬֮ºógithubµÄÌá½»¼Ç¼¾Í»á·¢Ë͵½Õâ¸öȺ×éÖУº

Ìí¼Ó·þÎñÖ®ºóÐèÒª½øÐÐһЩÅäÖã¬ÅäÖ÷½Ê½ÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇÊÚȨģʽ£¬Ñ¡Ôñ²Ö´¢£¬Ñ¡Ôñʼþ£¬ ÁíÒ»ÖÖÊÇÆÕͨģʽ£¬ÕâÖÖģʽWorktile»áÉú³ÉÒ»¸öWebhookÁ´½Ó£¬Äõ½Õâ¸öÁ´½Ó¿ÉÒÔÖ±½ÓÔÚgithub²Ö´¢ÖнøÐÐWebhookÅäÖãº


¾ßÌåµÄÅäÖÃWorktileºǫ́github·þÎñÉèÖÃÖÐÓн̡̳£
Worktile½ÓÊÕgithub·¢Ë͵IJÙ×÷¼Ç¼
¸ù¾Ý²»ÅäÖÃʱѡÔñµÄʼþ²»Í¬£¬github»á·¢ËͲ»Í¬µÄ¼Ç¼ÏûÏ¢

ÏëÁ˽â¸ü¶à¹ØÓÚWorktile£¬¿ÉÒÔµã»÷Worktile²é¿´¸ü¶àŶ~
×ܽá
ͨ¹ýÉÏÃæ¶ÔGitµÄ½éÉÜ£¬¶ÔÓÚÍŶӹÜÀíÕßÀ´Ëµ£¬ÈçºÎʹÓÃGitÀ´ÓÐЧµÄ¹ÜÀíÍŶӴúÂëÓ¦¸Ã»áÓÐ×î»ù±¾µÄ¸ÅÄÄǽÓÏÂÀ´¾ÍÐèÒªÄãÕæÕýµÄ»¨Ê±¼äÀ´Êµ¼ùÁË¡£ |