±¾ÎIJ»ÊÇGitʹÓýÌѧƪ£¬¶øÊÇÆ«ÏòÀíÂÛ·½Ã棬ּÔÚ¸ü¼ÓÉî¿ÌµÄÀí½âGit£¬ÕâÑù²ÅÄܸüºÃµÄʹÓÃËü£¬Èù¤¾ß³ÉΪÎÒÃǵÃÁ¦µÄÖúÊÖ¡£
°æ±¾¿ØÖÆÏµÍ³
Git ÊÇĿǰÊÀ½çÉÏ×îÓÅÐãµÄ·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³¡£°æ±¾¿ØÖÆÏµÍ³ÊÇÄܹ»Ëæ×Åʱ¼äµÄÍÆ½ø¼Ç¼һϵÁÐÎļþµÄ±ä»¯ÒÔ±ãÓÚÄãÒÔºóÏëÒªµÄÍ˻ص½Ä³¸ö°æ±¾µÄϵͳ¡£°æ±¾¿ØÖÆÏµÍ³·ÖΪÈý´óÀࣺ±¾µØ°æ±¾¿ØÖÆÏµÍ³£¬¼¯ÖÐʽ°æ±¾¿ØÖÆÏµÍ³ºÍ·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³
±¾µØ°æ±¾¿ØÖÆ£¨Local Version Control Systems£©Êǽ«ÎļþµÄ¸÷¸ö°æ±¾ÒÔÒ»¶¨µÄÊý¾Ý¸ñʽ´æ´¢ÔÚ±¾µØµÄ´ÅÅÌ£¨ÓеÄVCS
ÊDZ£´æÎļþµÄ±ä»¯²¹¶¡£¬¼´ÔÚÎļþÄÚÈݱ仯ʱ¼ÆËã³ö²îÁ¿±£´æÆðÀ´£©£¬ÕâÖÖ·½Ê½ÔÚÒ»¶¨³Ì¶ÈÉϽâ¾öÁËÊÖ¶¯¸´ÖÆÕ³ÌùµÄÎÊÌ⣬µ«ÎÞ·¨½â¾ö¶àÈËÐ×÷µÄÎÊÌâ¡£
±¾µØ°æ±¾¿ØÖÆ

¼¯ÖÐʽ°æ±¾¿ØÖÆ£¨Centralized Version Control Systems£©Ïà±È±¾µØ°æ±¾¿ØÖÆÃ»ÓÐʲô±¾Öʵı仯£¬Ö»ÊǶàÁ˸öÒ»¸öÖÐÑë·þÎñÆ÷£¬¸÷¸ö°æ±¾µÄÊý¾Ý¿â´æ´¢ÔÚÖÐÑë·þÎñÆ÷£¬¹ÜÀíÔ±¿ÉÒÔ¿ØÖÆ¿ª·¢ÈËÔ±µÄȨÏÞ£¬¶ø¿ª·¢ÈËÔ±Ò²¿ÉÒÔ´ÓÖÐÑë·þÎñÆ÷ÀÈ¡Êý¾Ý¡£¼¯ÖÐʽ°æ±¾¿ØÖÆËäÈ»½â¾öÁËÍŶÓÐ×÷ÎÊÌ⣬µ«È±µãÒ²ºÜÃ÷ÏÔ£ºËùÓÐÊý¾Ý´æ´¢ÔÚÖÐÑë·þÎñÆ÷£¬·þÎñÆ÷Ò»µ©å´»ú»òÕß´ÅÅÌË𻵣¬»áÔì³É²»¿É¹ÀÁ¿µÄËðʧ¡£
¼¯ÖÐʽ°æ±¾¿ØÖÆ

·Ö²¼Ê½°æ±¾¿ØÖÆ£¨ Distributed Version Control System£©ÓëǰÁ½Õß¾ù²»Í¬¡£Ê×ÏÈ£¬ÔÚ·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³ÖУ¬Ïñ
Git£¬Mercurial£¬Bazaar ÒÔ¼° Darcs µÈ£¬ÏµÍ³±£´æµÄµÄ²»ÊÇÎļþ±ä»¯µÄ²îÁ¿£¬¶øÊÇÎļþµÄ¿ìÕÕ£¬¼´°ÑÎļþµÄÕûÌ叴֯ÏÂÀ´±£´æ£¬¶ø²»¹ØÐľßÌåµÄ±ä»¯ÄÚÈÝ¡£Æä´Î£¬×îÖØÒªµÄÊÇ·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³ÊÇ·Ö²¼Ê½µÄ£¬µ±Äã´ÓÖÐÑë·þÎñÆ÷¿½±´ÏÂÀ´´úÂëʱ£¬Ä㿽±´µÄÊÇÒ»¸öÍêÕûµÄ°æ±¾¿â£¬°üÀ¨ÀúÊ·¼Í¼£¬Ìá½»¼Ç¼µÈ£¬ÕâÑù¼´Ê¹Ä³Ò»Ì¨»úÆ÷å´»úÒ²ÄÜÕÒµ½ÎļþµÄÍêÕû±¸·Ý¡£
·Ö²¼Ê½°æ±¾¿ØÖÆ

Git»ù´¡
GitÊÇÒ»¸ö·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³£¬±£´æµÄÊÇÎļþµÄÍêÕû¿ìÕÕ£¬¶ø²»ÊDzîÒì±ä»¯»òÕßÎļþ²¹¶¡¡£
±£´æÃ¿Ò»´Î±ä»¯ÎļþµÄÍêÕûÄÚÈÝ

Gitÿһ´ÎÌá½»¶¼ÊǶÔÏîÄ¿ÎļþµÄÒ»¸öÍêÕû¿½±´£¬Òò´ËÄã¿ÉÒÔÍêÈ«»Ö¸´µ½ÒÔǰµÄÈÎÒ»¸öÌá½»¶ø²»»á·¢ÉúÈκÎÇø±ð¡£ÕâÀïÓÐÒ»¸öÎÊÌ⣺Èç¹ûÎÒµÄÏîÄ¿´óСÊÇ10M£¬ÄÇGitÕ¼ÓõĿռäÊDz»ÊÇËæ×ÅÌá½»´ÎÊýµÄÔö¼ÓÏßÐÔÔö¼ÓÄØ£¿ÎÒÌá½»£¨commit£©ÁË10´Î£¬Õ¼ÓÿռäÊDz»ÊÇ100MÄØ£¿ºÜÏÔÈ»²»ÊÇ£¬GitÊǺÜÖÇÄܵģ¬Èç¹ûÎļþûÓб仯£¬ËüÖ»»á±£´æÒ»¸öÖ¸ÏòÉÏÒ»¸ö°æ±¾µÄÎļþµÄÖ¸Õ룬¼´£¬¶ÔÓÚÒ»¸öÌØ¶¨°æ±¾µÄÎļþ£¬GitÖ»»á±£´æÒ»¸ö¸±±¾£¬µ«¿ÉÒÔÓжà¸öÖ¸Ïò¸ÃÎļþµÄÖ¸Õë¡£
ÁíÍâ×¢Ò⣬Git×îÊʺϱ£´æÎı¾Îļþ£¬ÊÂʵÉÏGit¾ÍÊDZ»Éè¼Æ³öÀ´¾ÍÊÇΪÁ˱£´æÎı¾ÎļþµÄ£¬Ïñ¸÷ÖÖÓïÑÔµÄÔ´´úÂ룬ÒòΪGit¿ÉÒÔ¶ÔÎı¾Îļþ½øÐкܺõÄѹËõºÍ²îÒì·ÖÎö£¨´ó¼Ò¶¼¼ûʶ¹ýÁË£¬GitµÄ²îÒì·ÖÎö¿ÉÒÔ¾«È·µ½ÄãÌí¼Ó»òÕßɾ³ýÁËij¸ö×Öĸ£©¡£¶ø¶þ½øÖÆÎļþÏñÊÓÆµ£¬Í¼Æ¬µÈ£¬GitÒ²ÄܹÜÀí£¬µ«²»ÄÜÈ¡µÃ½ÏºÃµÄЧ¹û£¨Ñ¹Ëõ±ÈÂʵͣ¬²»ÄܲîÒì·ÖÎö£©¡£ÊµÑéÖ¤Ã÷£¬Ò»¸ö
500k µÄÎı¾Îļþ¾GitѹËõºó½ö 50k ×óÓÒ£¬ÉÔ΢¸Ä±äÄÚÈݺóÁ½´ÎÌá½»£¬»áÓÐÁ½¸ö 50k ×óÓÒµÄÎļþ£¬Ã»´íµÄ£¬±£´æµÄÊÇÍêÕû¿ìÕÕ¡£¶ø¶ÔÓÚ¶þ½øÖÆÎļþ£¬ÏñÊÓÆµ£¬Í¼Æ¬£¬Ñ¹ËõÂʷdz£Ð¡£¬
Git Õ¼Óÿռ伸ºõËæ×ÅÌá½»´ÎÊýÏßÐÔÔö³¤¡£
δ±ä»¯µÄÎļþÖ»±£´æÉÏÒ»¸ö°æ±¾µÄÖ¸Õë

Git¹¤³ÌÓÐÈý¸ö¹¤×÷ÇøÓò£º¹¤×÷Ŀ¼£¬ÔÝ´æÇøÓò£¬ÒÔ¼°±¾µØ²Ö¿â¡£¹¤×÷Ŀ¼ÊÇÄ㵱ǰ½øÐй¤×÷µÄÇøÓò£»ÔÝ´æÇøÓòÊÇÄãÔËÐÐgit
addÃüÁîºóÎļþ±£´æµÄÇøÓò£¬Ò²ÊÇÏ´ÎÌá½»½«Òª±£´æµÄÎļþ£¨×¢Ò⣺Git Ìύʵ¼Ê¶ÁÈ¡µÄÊÇÔÝ´æÇøÓòµÄÄÚÈÝ£¬¶øÓ빤×÷ÇøÓòµÄÎļþÎ޹أ¬ÕâÒ²Êǵ±ÄãÐÞ¸ÄÁËÎļþÖ®ºó£¬Èç¹ûûÓÐÌí¼Ógit
addµ½ÔÝ´æÇøÓò£¬²¢²»»á±£´æµ½°æ±¾¿âµÄÔÒò£©£»±¾µØ²Ö¿â¾ÍÊǰ汾¿â£¬¼Ç¼ÁËÄ㹤³Ìij´ÎÌá½»µÄÍêÕû״̬ºÍÄÚÈÝ£¬ÕâÒâζ×ÅÄãµÄÊý¾ÝÓÀÔ¶²»»á¶ªÊ§¡£

ÏàÓ¦µÄ£¬ÎļþÒ²ÓÐÈýÖÖ״̬£ºÒÑÌá½»£¨committed£©£¬ÒÑÐ޸ģ¨modified£©ºÍÒÑÔݴ棨staged£©¡£ÒÑÌá½»±íʾ¸ÃÎļþÒѾ±»°²È«µØ±£´æÔÚ±¾µØ°æ±¾¿âÖÐÁË£»ÒÑÐ޸ıíʾÐÞ¸ÄÁËij¸öÎļþ£¬µ«»¹Ã»ÓÐÌá½»±£´æ£»ÒÑÔÝ´æ±íʾ°ÑÒÑÐ޸ĵÄÎļþ·ÅÔÚÏ´ÎÌύʱҪ±£´æµÄÇåµ¥ÖУ¬¼´ÔÝ´æÇøÓò¡£ËùÒÔʹÓÃGitµÄ»ù±¾¹¤×÷Á÷³Ì¾ÍÊÇ£º
1.ÔÚ¹¤×÷ÇøÓòÔö¼Ó£¬É¾³ý»òÕßÐÞ¸ÄÎļþ¡£
2.ÔËÐÐgit add£¬½«Îļþ¿ìÕÕ±£´æµ½ÔÝ´æÇøÓò¡£
3.Ìá½»¸üУ¬½«ÎļþÓÀ¾Ã°æ±£´æµ½°æ±¾¿âÖС£

Git¶ÔÏó
ÏÖÔÚÒѾÃ÷°×GitµÄ»ù±¾Á÷³Ì£¬µ«GitÊÇÔõôÍê³ÉµÄÄØ£¿GitÔõÃ´Çø·ÖÎļþÊÇ·ñ·¢Éú±ä»¯£¿ÏÂÃæ¼òµ¥½éÉÜÒ»ÏÂGitµÄ»ù±¾ÔÀí¡£
SHA-1 УÑéºÍ
Git ÊÇÒ»Ì×ÄÚÈÝѰַÎļþϵͳ¡£Òâ˼¾ÍÊÇGit ´ÓºËÐÄÉÏÀ´¿´²»¹ýÊǼòµ¥µØ´æ´¢¼üÖµ¶Ô£¨key-value£©£¬valueÊÇÎļþµÄÄÚÈÝ£¬¶økeyÊÇÎļþÄÚÈÝÓëÎļþÍ·ÐÅÏ¢µÄ
40¸ö×Ö·û³¤¶ÈµÄ SHA-1 УÑéºÍ£¬ÀýÈ磺5453545dccD33565a585ffe5f53fda3e067b84d8¡£GitʹÓøÃУÑéºÍ²»ÊÇΪÁ˼ÓÃÜ£¬¶øÊÇΪÁËÊý¾ÝµÄÍêÕûÐÔ£¬Ëü¿ÉÒÔ±£Ö¤£¬ÔںܶàÄêºó£¬ÄãÖØÐÂcheckoutij¸öcommitʱ£¬Ò»¶¨ÊÇËü¶àÄêǰµÄµ±Ê±µÄ״̬£¬ÍêȫһÃþÒ»Ñù¡£µ±Äã¶ÔÎļþ½øÐÐÁËÄÄÅÂÒ»¶¡µã¶ùµÄÐ޸ģ¬Ò²»á¼ÆËã³öÍêÈ«²»Í¬µÄ
SHA-1 УÑéºÍ£¬ÕâÖÖÏÖÏó½Ð×ö¡°Ñ©±ÀЧӦ¡±£¨Avalanche effect£©¡£
SHA-1 УÑéºÍÒò´Ë¾ÍÊÇÉÏÎÄÌáµ½µÄÎļþµÄÖ¸Õ룬ÕâºÍCÓïÑÔÖеÄÖ¸ÕëºÜÓÐЩ²»Í¬£ºCÓïÑÔ½«Êý¾ÝÔÚÄÚ´æÖеĵØÖ·×÷ΪָÕ룬Git½«ÎļþµÄ
SHA-1 УÑéºÍ×÷ΪָÕ룬ĿµÄ¶¼ÊÇΪÁËÎ¨Ò»Çø·Ö²»Í¬µÄ¶ÔÏó¡£µ«Êǵ±CÓïÑÔÖ¸ÕëÖ¸ÏòµÄÄÚ´æÖеÄÄÚÈÝ·¢Éú±ä»¯Ê±£¬Ö¸Õë²¢²»·¢Éú±ä»¯£¬µ«GitÖ¸ÕëÖ¸ÏòµÄÎļþÄÚÈÝ·¢Éú±ä»¯Ê±£¬Ö¸ÕëÒ²»á·¢Éú±ä»¯¡£ËùÒÔ£¬GitÖÐÿһ¸ö°æ±¾µÄÎļþ£¬¶¼ÓÐÒ»¸öΨһµÄÖ¸ÕëÖ¸ÏòËü¡£
Îļþ(blob)¶ÔÏó£¬Ê÷(tree)¶ÔÏó£¬Ìá½»(commit)¶ÔÏó
blob ¶ÔÏó±£´æµÄ½ö½öÊÇÎļþµÄÄÚÈÝ£¬tree ¶ÔÏó¸üÏñÊDzÙ×÷ϵͳÖеÄÎļþ¼Ð£¬Ëü¿ÉÒÔ±£´æblob¶ÔÏóºÍtree
¶ÔÏó¡£Ò»¸öµ¥¶ÀµÄ tree ¶ÔÏó°üº¬Ò»Ìõ»ò¶àÌõ tree ¼Ç¼£¬Ã¿Ò»Ìõ¼Ç¼º¬ÓÐÒ»¸öÖ¸Ïò blob ¶ÔÏó»ò×Ó
tree ¶ÔÏóµÄ SHA-1 Ö¸Õ룬²¢¸½ÓиöÔÏóµÄȨÏÞģʽ (mode)¡¢ÀàÐͺÍÎļþÃûÐÅÏ¢µÈ£º

µ±Äã¶ÔÎļþ½øÐÐÐ޸IJ¢Ìύʱ£¬±ä»¯µÄÎļþ»áÉú³ÉÒ»¸öеÄblob¶ÔÏ󣬼ǼÎļþµÄÍêÕûÄÚÈÝ£¨ÊÇÈ«²¿ÄÚÈÝ£¬²»ÊDZ仯ÄÚÈÝ£©£¬È»ºóÕë¶Ô¸ÃÎļþÓÐÒ»¸öΨһµÄ
SHA-1 УÑéºÍ£¬Ð޸Ĵ˴ÎÌá½»¸ÃÎļþµÄÖ¸ÕëΪ¸Ã SHA-1 УÑéºÍ£¬¶ø¶ÔÓÚûÓб仯µÄÎļþ£¬¼òµ¥¿½±´ÉÏÒ»´Î°æ±¾µÄÖ¸Õë¼´
SHA-1 УÑéºÍ£¬¶ø²»»áÉú³ÉÒ»¸öȫеÄblob¶ÔÏó£¬ÕâÒ²½âÊÍÁË10M´óСµÄÏîÄ¿½øÐÐ10´ÎÌá½»×Ü´óСԶԶСÓÚ100MµÄÔÒò¡£
ÁíÍ⣬ÿ´ÎÌá½»¿ÉÄܲ»½ö½öÖ»ÓÐÒ»¸ö tree ¶ÔÏó£¬ËüÃÇÖ¸Ã÷ÁËÏîÄ¿µÄ²»Í¬¿ìÕÕ£¬µ«Äã±ØÐë¼ÇסËùÓжÔÏóµÄ SHA-1
УÑéºÍ²ÅÄÜ»ñµÃÍêÕûµÄ¿ìÕÕ£¬¶øÇÒûÓÐ×÷Õߣ¬ºÎʱ£¬ÎªÊ²Ã´±£´æÕâЩ¿ìÕÕµÄÔÒò¡£commit¶ÔÏó¾ÍÊÇÎÊÁ˽â¾öÕâЩÎÊÌâµ®ÉúµÄ£¬commit
¶ÔÏóµÄ¸ñʽºÜ¼òµ¥£ºÖ¸Ã÷Á˸Ãʱ¼äµãÏîÄ¿¿ìÕյĶ¥²ãtree¶ÔÏó¡¢×÷Õß/Ìá½»ÕßÐÅÏ¢£¨´Ó Git ÉèÖÃµÄ user.name
ºÍ user.emailÖлñµÃ)ÒÔ¼°µ±Ç°Ê±¼ä´Á¡¢Ò»¸ö¿ÕÐУ¬ÉÏÒ»´ÎµÄÌá½»¶ÔÏóµÄIDÒÔ¼°Ìá½»×¢ÊÍÐÅÏ¢¡£Äã¿ÉÒÔ¼òµ¥µÄÔËÐÐgit
logÀ´»ñÈ¡ÕâÐÂÐÅÏ¢£º
$ git log commit 2cb0bb475c34a48957d18f67d0623e3304a26489 Author: lufficc <luffy.lcc@gmail.com> Date: Sun Oct 2 17:29:30 2016 +0800
fix some font size
commit f0c8b4b31735b5e5e96e456f9b0c8d5fc7a3e68a
Author: lufficc <luffy.lcc@gmail.com>
Date: Sat Oct 1 02:55:48 2016 +0800
fix post show css
***********Ê¡ÂÔ*********** |

ÉÏͼµÄTest.txtÊǵÚÒ»´ÎÌύ֮ǰÉú³ÉµÄ£¬µÚÒ»´ÎËüµÄ³õʼ SHA-1 УÑéºÍÒÔ3c4e9c¿ªÍ·¡£Ëæºó¶ÔËü½øÐÐÁËÐ޸ģ¬ËùÒÔµÚ¶þ´ÎÌύʱÉú³ÉÁËÒ»¸öÈ«ÐÂblob¶ÔÏó£¬Ð£ÑéºÍÒÔ1f7a7a¿ªÍ·¡£¶øµÚÈý´ÎÌύʱTest.txt²¢Ã»Óб仯£¬ËùÒÔÖ»ÊDZ£´æ×î½ü°æ±¾µÄ
SHA-1 УÑéºÍ¶ø²»Éú³ÉȫеÄblob¶ÔÏó¡£ÔÚÏîÄ¿¿ª·¢¹ý³ÌÖÐÐÂÔö¼ÓµÄÎļþÔÚÌá½»ºó¶¼»áÉú³ÉÒ»¸öȫеÄblob¶ÔÏóÀ´±£´æËü¡£×¢Òâ³ýÁ˵ÚÒ»´Îÿ¸öÌá½»¶ÔÏó¶¼ÓÐÒ»¸öÖ¸ÏòÉÏÒ»´ÎÌá½»¶ÔÏóµÄÖ¸Õë¡£
Òò´Ë¼òµ¥À´Ëµ£¬blob¶ÔÏó±£´æÎļþµÄÄÚÈÝ£»tree¶ÔÏóÀàËÆÎļþ¼Ð£¬±£´æblob¶ÔÏóºÍÆäËütree¶ÔÏó£»commit¶ÔÏó±£´ætree¶ÔÏó£¬Ìá½»ÐÅÏ¢£¬×÷Õߣ¬ÓÊÏäÒÔ¼°ÉÏÒ»´ÎµÄÌá½»¶ÔÏóµÄID£¨µÚÒ»´ÎÌύûÓУ©¡£¶øGit¾ÍÊÇͨ¹ý×éÖ¯ºÍ¹ÜÀíÕâЩ¶ÔÏóµÄ״̬ÒÔ¼°¸´ÔӵĹØÏµÊµÏֵİ汾¿ØÖÆÒÔ¼°ÒÔ¼°ÆäËû¹¦ÄÜÈç·ÖÖ§¡£
GitÒýÓÃ
ÏÖÔÚÔÙÀ´¿´ÒýÓ㬾ͻáºÜ¼òµ¥ÁË¡£Èç¹ûÎÒÃÇÏëÒª¿´Ä³¸öÌá½»¼Ç¼֮ǰµÄÍêÕûÀúÊ·£¬¾Í±ØÐë¼ÇסÕâ¸öÌá½»ID£¬µ«Ìá½»IDÊÇÒ»¸ö40λµÄ
SHA-1 УÑéºÍ£¬ÄѼǡ£ËùÒÔÒýÓþÍÊÇSHA-1 УÑéºÍµÄ±ðÃû£¬´æ´¢ÔÚ.git/refsÎļþ¼ÐÖС£
×î³£¼ûµÄÒýÓÃÒ²Ðí¾ÍÊÇmasterÁË£¬ÒòΪÕâÊÇGitĬÈÏ´´½¨µÄ£¨¿ÉÒÔÐ޸쬵«Ò»°ã²»Ð޸ģ©£¬ËüʼÖÕÖ¸ÏòÄãÏîÄ¿Ö÷·ÖÖ§µÄ×îºóÒ»´ÎÌá½»¼Ç¼¡£Èç¹ûÔÚÏîÄ¿¸ùĿ¼ÔËÐÐcat
.git/refs/heads£¬»áÊä³öÒ»¸öSHA-1 УÑéºÍ£¬ÀýÈ磺
$ cat .git/refs/heads/master 4f3e6a6f8c62bde818b4b3d12c8cf3af45d6dc00 |
Òò´ËmasterÖ»ÊÇÒ»¸ö40λSHA-1 УÑéºÍµÄ±ðÃû°ÕÁË¡£
»¹ÓÐÒ»¸öÎÊÌ⣬GitÈçºÎÖªµÀÄ㵱ǰ·ÖÖ§µÄ×îºóÒ»´ÎµÄÌá½»ID?ÔÚ.gitÎļþ¼ÐÏÂÓÐÒ»¸öHEADÎļþ£¬ÏñÕâÑù£º
$ cat .git/HEAD ref: refs/heads/master |
HEADÎļþÆäʵ²¢²»°üº¬ SHA-1 Öµ£¬¶øÊÇÒ»¸öÖ¸Ïòµ±Ç°·ÖÖ§µÄÒýÓã¬ÄÚÈÝ»áËæ×ÅÇл»·ÖÖ§¶ø±ä»¯£¬ÄÚÈݸñʽÏñÕâÑù£ºref:
refs/heads/<branch-name>¡£µ±ÄãÖ´ÐÐgit commitÃüÁîʱ£¬Ëü¾Í´´½¨ÁËÒ»¸öcommit¶ÔÏ󣬰ÑÕâ¸öcommit¶ÔÏóµÄ¸¸¼¶ÉèÖÃΪHEAD
Ö¸ÏòµÄÒýÓÃµÄ SHA-1 Öµ¡£
ÔÙÀ´ËµËµ Git µÄ tag£¬±êÇ©¡£±êÇ©´ÓijÖÖÒâÒåÉÏÏñÊÇÒ»¸öÒýÓ㬠ËüÖ¸ÏòÒ»¸ö commit ¶ÔÏó¶ø²»ÊÇÒ»¸ö
tree£¬°üº¬Ò»¸ö±êÇ©£¬Ò»×éÊý¾Ý£¬Ò»¸öÏûÏ¢ºÍÒ»¸öcommit ¶ÔÏóµÄÖ¸Õë¡£µ«ÊÇÇø±ð¾ÍÊÇÒýÓÃËæ×ÅÏîÄ¿½øÐÐËüµÄÖµÔÚ²»¶ÏÏòÇ°ÍÆ½ø±ä»¯£¬µ«ÊDZêÇ©²»»á±ä»¯¡ª¡ªÓÀÔ¶Ö¸Ïòͬһ¸ö
commit£¬½ö½öÊÇÌṩһ¸ö¸ü¼ÓÓѺõÄÃû×Ö¡£
Git·ÖÖ§
·ÖÖ§
·ÖÖ§ÊÇGitµÄɱÊÖ¼¶ÌØÕ÷£¬¶øÇÒGit¹ÄÀøÔÚ¹¤×÷Á÷³ÌÖÐÆµ·±Ê¹Ó÷ÖÖ§ÓëºÏ²¢£¬ÄÄÅÂÒ»ÌìÖ®ÄÚ½øÐÐÐí¶à´Î¶¼Ã»ÓйØÏµ¡£ÒòΪGit·ÖÖ§·Ç³£ÇáÁ¿¼¶£¬²»ÏñÆäËûµÄ°æ±¾¿ØÖÆ£¬´´½¨·ÖÖ§Òâζ×ÅÒª°ÑÏîÄ¿ÍêÕûµÄ¿½±´Ò»·Ý£¬¶øGit´´½¨·ÖÖ§ÊÇÔÚ˲¼äÍê³ÉµÄ£¬¶øÓëÄ㹤³ÌµÄ¸´Ôӳ̶ÈÎ޹ء£
ÒòΪÔÚÉÏÎÄÖÐÒѾ˵µ½£¬Git±£´æÎļþµÄ×î»ù±¾µÄ¶ÔÏóÊÇblob¶ÔÏó£¬Git±¾ÖÊÉÏÖ»ÊÇÒ»¿Ã¾Þ´óµÄÎļþÊ÷£¬Ê÷µÄÿһ¸ö½Úµã¾ÍÊÇblob¶ÔÏ󣬶ø·ÖÖ§Ö»ÊÇÊ÷µÄÒ»¸ö·Ö²æ¡£Ëµ°×ÁË£¬·ÖÖ§¾ÍÊÇÒ»¸öÓÐÃû×ÖµÄÒýÓã¬Ëü°üº¬Ò»¸öÌá½»¶ÔÏóµÄµÄ40λУÑéºÍ£¬ËùÒÔ´´½¨·ÖÖ§¾ÍÊÇÏòÒ»¸öÎļþдÈë
41 ¸ö×Ö½Ú£¨Íâ¼ÓÒ»¸ö»»Ðзû£©ÄÇô¼òµ¥£¬ËùÒÔ×ÔÈ»¾Í¿ìÁË£¬¶øÇÒÓëÏîÄ¿µÄ¸´Ôӳ̶ÈÎ޹ء£
GitµÄĬÈÏ·ÖÖ§ÊÇmaster£¬´æ´¢ÔÚ.git\refs\heads\masterÎļþÖУ¬¼ÙÉèÄãÔÚmaster·ÖÖ§ÔËÐÐgit
branch dev´´½¨ÁËÒ»¸öÃû×ÖΪdevµÄ·ÖÖ§£¬ÄÇôgitËù×öµÄʵ¼Ê²Ù×÷ÊÇ£º
1.ÔÚ.git\refs\headsÎļþ¼ÐÏÂн¨Ò»¸öÎļþÃûΪdev£¨Ã»ÓÐÀ©Õ¹Ãû£©µÄÎı¾Îļþ¡£
2.½«HEADÖ¸ÏòµÄµ±Ç°·ÖÖ§£¨µ±Ç°Îªmaster£©µÄ40λSHA-1 УÑéºÍÍâ¼ÓÒ»¸ö»»ÐзûдÈëdevÎļþ¡£
3. ½áÊø¡£

´´½¨·ÖÖ§¾ÍÊÇÕâô¼òµ¥£¬ÄÇôÇл»·ÖÖ§ÄØ£¿¸ü¼òµ¥£º
ÐÞ¸Ä.gitÎļþϵÄHEADÎļþΪref: refs/heads/<·ÖÖ§Ãû³Æ>¡£
°´ÕÕ·ÖÖ§Ö¸ÏòµÄÌá½»¼Ç¼½«¹¤×÷ÇøµÄÎļþ»Ö¸´ÖÁһģһÑù¡£
½áÊø¡£
¼Çס£¬HEADÎļþÖ¸Ïòµ±Ç°·ÖÖ§µÄ×îºóÒ»´ÎÌá½»£¬Í¬Ê±£¬ËüÒ²ÊÇÒÔµ±Ç°·ÖÖ§Ôٴδ´½¨Ò»¸ö·Ö֧ʱ£¬½«ÒªÐ´ÈëµÄÄÚÈÝ¡£
·ÖÖ§ºÏ²¢
ÔÙÀ´ËµÒ»ËµºÏ²¢£¬Ê×ÏÈÊÇFast-forward£¬»»¾ä»°Ëµ£¬Èç¹û˳×ÅÒ»¸ö·ÖÖ§×ßÏÂÈ¥¿ÉÒÔµ½´ïÁíÒ»¸ö·ÖÖ§µÄ»°£¬ÄÇô
Git Ôںϲ¢Á½Õßʱ£¬Ö»»á¼òµ¥µØ°ÑÖ¸ÕëÓÒÒÆ£¬ÒòΪÕâÖÖµ¥ÏßµÄÀúÊ··ÖÖ§²»´æÔÚÈκÎÐèÒª½â¾öµÄ·ÖÆç£¬ËùÒÔÕâÖֺϲ¢¹ý³Ì¿ÉÒÔ³ÆÎª¿ì½ø£¨Fast
forward£©¡£±ÈÈ磺

×¢Òâ¼ýÍ··½Ïò£¬ÒòΪÿһ´ÎÌá½»¶¼ÓÐÒ»¸öÖ¸ÏòÉÏÒ»´ÎÌá½»µÄÖ¸Õ룬ËùÒÔ¼ýÍ··½ÏòÏò×󣬸üΪºÏÀí
µ±ÔÚmaster·ÖÖ§ºÏ²¢dev·Ö֧ʱ£¬ÒòΪËûÃÇÔÚÒ»ÌõÏßÉÏ£¬ÕâÖÖµ¥ÏßµÄÀúÊ··ÖÖ§²»´æÔÚÈκÎÐèÒª½â¾öµÄ·ÖÆç£¬ËùÒÔÖ»ÐèÒªmaster·ÖÖ§Ö¸Ïòdev·ÖÖ§¼´¿É£¬ËùÒԷdz£¿ì¡£
µ±·ÖÖ§³öÏÖ·Ö²æÊ±£¬¾ÍÓпÉÄܳöÏÖ³åÍ»£¬¶øÕâʱGit¾Í»áÒªÇóÄãÈ¥½â¾ö³åÍ»£¬±ÈÈçÏñÏÂÃæµÄÀúÊ·£º

ÒòΪmaster·ÖÖ§ºÍdev·ÖÖ§²»ÔÚÒ»ÌõÏßÉÏ£¬¼´v7²»ÊÇv5µÄÖ±½Ó׿ÏÈ£¬Git ²»µÃ²»½øÐÐһЩ¶îÍâ´¦Àí¡£¾Í´ËÀý¶øÑÔ£¬Git
»áÓÃÁ½¸ö·ÖÖ§µÄÄ©¶Ë£¨v7 ºÍ v5£©ÒÔ¼°ËüÃǵĹ²Í¬×æÏÈ£¨v3£©½øÐÐÒ»´Î¼òµ¥µÄÈý·½ºÏ²¢¼ÆËã¡£ºÏ²¢Ö®ºó»áÉú³ÉÒ»¸öºÍ²¢Ìá½»v8£º

×¢Ò⣺ºÍ²¢Ìá½»ÓÐÁ½¸ö׿ÏÈ£¨v7ºÍv5£©¡£
·ÖÖ§µÄ±ä»ùrebase
°ÑÒ»¸ö·ÖÖ§ÖеÄÐÞ¸ÄÕûºÏµ½ÁíÒ»¸ö·ÖÖ§µÄ°ì·¨ÓÐÁ½ÖÖ£ºmerge ºÍ rebase¡£Ê×ÏÈmerge ºÍ rebase×îÖյĽá¹ûÊÇÒ»ÑùµÄ£¬µ«rebaseÄܲúÉúÒ»¸ö¸üΪÕû½àµÄÌá½»ÀúÊ·¡£ÈÔÈ»ÒÔÉÏͼΪÀý£¬Èç¹û¼òµ¥µÄmerge£¬»áÉú³ÉÒ»¸öÌá½»¶ÔÏóv8£¬ÏÖÔÚÎÒÃdz¢ÊÔʹÓñä»ùºÏ²¢·ÖÖ§£¬Çл»µ½dev£º
$ git checkout dev $ git rebase master First, rewinding head to replay your work on top of it... Applying: added staged command |

Õâ¶Î´úÂëµÄÒâ˼ÊÇ£º»Øµ½Á½¸ö·ÖÖ§×î½üµÄ¹²Í¬×æÏÈv3£¬¸ù¾Ýµ±Ç°·ÖÖ§£¨Ò²¾ÍÊÇÒª½øÐбä»ùµÄ·ÖÖ§ dev£©ºóÐøµÄÀú´ÎÌá½»¶ÔÏ󣨰üÀ¨v4£¬v5£©£¬Éú³ÉһϵÁÐÎļþ²¹¶¡£¬È»ºóÒÔ»ùµ×·ÖÖ§£¨Ò²¾ÍÊÇÖ÷¸É·ÖÖ§
master£©×îºóÒ»¸öÌá½»¶ÔÏó£¨v7£©ÎªÐµijö·¢µã£¬Öð¸öÓ¦ÓÃ֮ǰ׼±¸ºÃµÄ²¹¶¡Îļþ£¬×îºó»áÉú³ÉÁ½¸öеĺϲ¢Ìá½»¶ÔÏó£¨v4'£¬v5'£©,´Ó¶ø¸Äд
dev µÄÌá½»ÀúÊ·£¬Ê¹Ëü³ÉΪ master ·ÖÖ§µÄÖ±½ÓÏÂÓΣ¬ÈçÏÂͼ£º

ÏÖÔÚ£¬¾Í¿ÉÒԻص½master·ÖÖ§½øÐпìËٺϲ¢Fast-forwardÁË£¬ÒòΪmaster·ÖÖ§ºÍdev·ÖÖ§ÔÚÒ»ÌõÏßÉÏ£º
$ git checkout master $ git merge dev |

ÏÖÔÚµÄv5'¶ÔÓ¦µÄ¿ìÕÕ£¬ÆäʵºÍÆÕͨµÄÈý·½ºÏ²¢£¬¼´ÉϸöÀý×ÓÖÐµÄ v8 ¶ÔÓ¦µÄ¿ìÕÕÄÚÈÝһģһÑù¡£ËäÈ»×îºóÕûºÏµÃµ½µÄ½á¹ûûÓÐÈκÎÇø±ð£¬µ«±ä»ùÄܲúÉúÒ»¸ö¸üΪÕû½àµÄÌá½»ÀúÊ·¡£Èç¹ûÊÓ²ìÒ»¸ö±ä»ù¹ýµÄ·ÖÖ§µÄÀúÊ·¼Ç¼£¬¿´ÆðÀ´»á¸üÇå³þ£º·Â·ðËùÓÐÐ޸ͼÊÇÔÚÒ»¸ùÏßÉÏÏȺó½øÐе쬾¡¹Üʵ¼ÊÉÏËüÃÇÔ±¾ÊÇͬʱ²¢Ðз¢ÉúµÄ¡£
×ܽá
1¡¢Git±£´æÎļþµÄÍêÕûÄÚÈÝ£¬²»±£´æ²îÁ¿±ä»¯¡£
2¡¢GitÒÔ´¢¼üÖµ¶Ô£¨key-value£©µÄ·½Ê½±£´æÎļþ¡£
3¡¢Ã¿Ò»¸öÎļþ£¬ÏàͬÎļþµÄ²»Í¬°æ±¾£¬¶¼ÓÐÒ»¸öΨһµÄ40λµÄ SHA-1 УÑéºÍÓëÖ®¶ÔÓ¦¡£
4¡¢SHA-1 УÑéºÍÊÇÎļþµÄÖ¸Õ룬GitÒÀ¿¿ËüÀ´Çø·ÖÎļþ¡£
5¡¢Ã¿Ò»¸öÎļþ¶¼»áÔÚGitµÄ°æ±¾¿âÀïÉú³Éblob¶ÔÏóÀ´±£´æ¡£
6¡¢¶ÔÓÚûÓб仯µÄÎļþ£¬GitÖ»»á±£ÁôÉÏÒ»¸ö°æ±¾µÄÖ¸Õë¡£
7¡¢Gitʵ¼ÊÉÏÊÇͨ¹ýά³Ö¸´ÔÓµÄÎļþÊ÷À´ÊµÏÖ°æ±¾¿ØÖƵġ£
8¡¢Ê¹ÓÃGitµÄ¹¤×÷Á÷³Ì»ù±¾¾ÍÊǾÍÊÇÎļþÔÚÈý¸ö¹¤×÷ÇøÓòÖ®¼äµÄÁ÷¶¯¡£
9¡¢Ó¦¸Ã´óÁ¿Ê¹Ó÷ÖÖ§½øÐÐÍŶÓÐ×÷¡£
10¡¢·ÖÖ§Ö»ÊǶÔÌá½»¶ÔÏóµÄÒ»¸öÒýÓá£
|