gitÊÇÔõô°ü¹ÜÊý¾ÝÈßÓàµÄ
gitÊÇÒ»ÖÖ°æ±¾¿ØÖÆϵͳ£¬ÊÇÓÉlinus torvaldsÔÚ2005Ä꽨ÉèµÄ¡£gitÒÔÆä¸ßЧµÄÂþÑÜʽ°æ±¾¿ØÖÆϵͳ£¬³ÉΪĿ½ñ×îÊ¢ÐеÄÔ´´úÂëÖÎÀí¹¤¾ßÖ®Ò»¡£ÔÚgitÖУ¬Êý¾ÝÈßÓàÊÇÒ»ÏîºÜÊÇÖ÷ÒªµÄÌØÕ÷£¬ËüµÄʵÏÖ·½·¨ÊÇͨ¹ý¹¤¾ß´æ´¢ºÍ¹þÏ£Ëã·¨¡£
Ò»¡¢¹¤¾ß´æ´¢
ÔÚGitÖУ¬Ã¿¸ö°æ±¾µÄÊý¾Ý±»´æ´¢ÎªÒ»¸ö¹¤¾ß£¬³ÆΪ¡°Git¹¤¾ß¡±¡£ÕâЩ¹¤¾ß°üÀ¨Îļþ¡¢´úÂë¡¢ÀúÊ·¼Í¼µÈ¡£ËùÓÐGit¹¤¾ß¶¼±»´æ´¢ÔÚÒ»¸ö³ÆΪ¡°¹¤¾ß¿â¡±µÄµØ·½¡£¹¤¾ß¿âͨ³£°üÀ¨ÈýÖÖÀàÐ͵Ť¾ß£ºblob¹¤¾ß¡¢tree¹¤¾ßºÍcommit¹¤¾ß¡£
Blob¹¤¾ßÊÇGitÖÐ×î»ù±¾µÄ¹¤¾ßÀàÐÍ£¬Ëü´ú±íÎļþ¡£µ±ÎÒÃDZà¼Îļþ²¢½«ÆäÌí¼Óµ½Git¿Íջʱ£¬Git½«¸ÃÎļþת»»ÎªÒ»¸öblob¹¤¾ß£¬²¢½«Æä´æ´¢ÔÚ¹¤¾ß¿âÖС£ÕâÑù£¬Ã¿¸ö°æ±¾µÄÎļþ¶¼ÓÐÒ»¸öΨһµÄSHA-1É¢ÁÐÖµÓëÖ®¶ÔÓ¦£¬Òò´Ë×ÝÈ»ÐÞ¸ÄÁËÄÚÈÝ£¬Ò²»áÌìÉúеÄblob¹¤¾ß¡£
Tree¹¤¾ßÒ²³ÆΪÎļþ¼Ð£¬ËüÊÇÒ»¸ö°üÀ¨¶à¸öblob¹¤¾ßºÍÆäËûtree¹¤¾ßµÄÁÐ±í¡£Ã¿¸ötree¹¤¾ß¶¼´ú±íÁËÒ»¸öÎļþ¼Ð£¬°üÀ¨Á˸ÃÎļþ¼ÐÏÂËùÓеÄblob¹¤¾ßºÍ×ÓÎļþ¼ÐµÄtree¹¤¾ß¡£ÕâÑù£¬Ã¿¸ö°æ±¾µÄÎļþ¼Ð¶¼ÓÐÒ»¸öΨһµÄSHA-1É¢ÁÐÖµÓëÖ®¶ÔÓ¦¡£
Commit¹¤¾ß°üÀ¨ÁËÌá½»µÄÏà¹ØÐÅÏ¢£¬Èç×÷Õß¡¢Ê±¼ä´Á¡¢Ìύ˵Ã÷µÈ¡£Ã¿¸öÌá½»¶¼ÓÐÒ»¸öΨһµÄSHA-1É¢ÁÐÖµÓëÖ®¶ÔÓ¦¡£µ±Ìύʺó£¬Git»á½¨ÉèÒ»¸öеÄcommit¹¤¾ß£¬²¢ÒÔÄ¿½ñtree¹¤¾ß×÷Ϊ¿ìÕÕ¡£Õâ¸öcommit¹¤¾ß»á°üÀ¨Ç°Ò»¸öcommit¹¤¾ßµÄSHA-1Öµ£¬ÕâÑù¾ÍÐγÉÁËʱ¼äÏߣ¬´Ó¶ø±£´æÁËËùÓеÄÀúÊ·°æ±¾¡£
¶þ¡¢¹þÏ£Ëã·¨
GitʹÓÃSHA-1¹þÏ£Ëã·¨À´±ÜÃâÒâÍâɥʧ»ò¸Ä¶¯Êý¾Ý¡£SHA-1Ëã·¨ÓëMD5Ëã·¨ºÜÊÇÀàËÆ£¬Ëü½«í§Òⳤ¶ÈµÄÊäÈëÊý¾Ýת»»ÎªÒ»¸ö160λµÄÉ¢ÁÐÖµ£¬²¢ÇÒÔÚÈκÎÇéÐÎ϶¼Äܱ¬·¢Ò»¸öΨһµÄÉ¢ÁÐÖµ¡£
µ±ÎÒÃÇÏòGitÌí¼ÓÒ»¸öеÄblob¹¤¾ß»òtree¹¤¾ßʱ£¬Git»áƾ֤SHA-1Ëã·¨ÅÌËãËüµÄÉ¢ÁÐÖµ¡£È»ºó£¬Git»á½«É¢ÁÐÖµ×÷ΪÎļþÃû£¬²¢½«¹¤¾ßÉúÑÄÔÚ”.git/objects”Ŀ¼Ï¡£ÓÉÓÚSHA-1Ëã·¨ÊDz»¿ÉÄæµÄ£¬Ã¿¸öGit¹¤¾ß¶¼ÓÐÒ»¸öΨһµÄ¡¢ÓëÆäÄÚÈÝÇ×½üÏà¹ØµÄSHA-1Öµ¡£
ÿ´Î¶ÔÒ»¸öÎļþ¼Ð»òÎļþ¾ÙÐÐÐÞ¸Äʱ£¬Git¶¼»áÅÌËãÐÂÎļþ¼Ð»òÎļþµÄSHA-1É¢ÁÐÖµ£¬²¢½«Æä×÷Ϊһ¸öеÄblob¹¤¾ß»òtree¹¤¾ßÌí¼Óµ½¹¤¾ß¿âÖС£ÕâÑù¾ÍÄÜ°ü¹ÜÀúÊ·°æ±¾µÄÍêÕûÐÔºÍÊý¾ÝÈßÓ࣬×ÝȻij¸ö¹¤¾ßÒâÍâµØ±»É¾³ýÁË£¬Ò²ÄÜͨ¹ýÉ¢ÁÐÖµÕÒ»ØÔÀ´µÄ¹¤¾ß¡£
×ܽá
GitµÄÊý¾ÝÈßÓàÊÇͨ¹ý¹¤¾ß´æ´¢ºÍ¹þÏ£Ë㷨ʵÏֵġ£Ê¹Óù¤¾ß´æ´¢¿ÉÒÔÈÃGitÒÔÒ»ÖÖ¸ßЧÎÞаµÄ·½·¨´æ´¢ËùÓеİ汾Êý¾Ý£¬²¢Í¨¹ý¹þÏ£Ëã·¨°ü¹Ü¹¤¾ßÉ¢ÁÐÖµµÄΨһÐÔ¡£ÕâÖÖ·½·¨°ü¹ÜÁËGit¿ÍÕ»ÖеÄËùÓÐÊý¾Ý¶¼ÄܱÜÃâɥʧ»ò¸Ä¶¯£¬´Ó¶øÈ·±£ÁË°æ±¾Êý¾ÝµÄÍêÕûÐÔºÍÇå¾²ÐÔ¡£
ÒÔÉϾÍÊÇgitÊÇÔõô°ü¹ÜÊý¾ÝÈßÓàµÄµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡