git Ôõô»Ö¸´ÍâµØɾ³ýÎļþ
ÔÚʹÓà git ¾ÙÐа汾¿ØÖÆʱ£¬ÎÒÃÇÓÐʱ¼ä»áÎóɾһЩÍâµØÎļþ£¬ÕâЩÎļþÔÚÌí¼Óµ½ git °æ±¾¿â֮ǰûÓб¸·Ý£¬ÄÇôÕâЩÎļþ¾Í»á±»ÓÀÊÀɾ³ý£¬ÕâÊǺÜÊÇÔã¸âµÄÊÂÇé¡£
¿ÉÊÇ£¬Äú»á¾ªÏ²µØ·¢Ã÷£¬²»¹ÜÄúÔÚÄĸö·ÖÖ§ÉÑþ³ØýÁËÎļþ£¬Git ¶¼»á½«Æä±£´æÒ»¸öÃûΪ Git ÔÝ´æÇøµÄÌØÊâÇøÓòÖУ¬Õâ¾Í¸øÎÒÃǻָ´ÕâЩÎļþÌṩÁË¿ÉÄÜ¡£
ÄÇôÎÒÃǸÃÔõÑù»Ö¸´ÍâµØ±»É¾³ýµÄÎļþ£¿
»Ö¸´×îа汾µÄ±»É¾³ýÎļþ
¼ÙÉèÄúɾ³ýµÄÎļþÃûΪ file.txt£¬ÄÇôÄú¿ÉÒÔͨ¹ýÒÔÏÂÏÂÁî»Ö¸´×îа汾µÄ´ËÎļþ£º
$ git checkout HEAD -- file.txt
µÇ¼ºó¸´ÖÆ
ÔÚ´ËÏÂÁîÖУ¬git checkout ÏÂÁîµÄ×÷ÓÃÊÇ´Ó Git ¿ÍÕ»Öмì³öÖ¸¶¨Îļþ»òĿ¼µÄ°æ±¾¡£¶ø HEAD ÔòÌåÏÖ¼ì³ö×îеÄÌá½»°æ±¾£¬²¢½«ÆäÉúÑĵ½ÊÂÇéÇøÓò¡£
µã»÷ÏÂÔØ¡°àËÃûÌÃÊý¾Ý»Ö¸´¾Þ½³¡±£»
ÕâÒâζ×ÅÄúËù»Ö¸´µÄÊý¾Ý½«ÊÇÔÚ×îºóÒ»´ÎÌá½»ºó£¬µ«ÔÚɾ³ýÎļþʱÉúÑĵÄ×îºóÒ»·Ý¸±±¾¡£¶øÔÚÔËÐдËÏÂÁî֮ǰ£¬ÇëÈ·±£ÄúÉÐδÌá½»¸ü¸Ä£¬²»È»Äú»Ö¸´µÄ½«ÊǾɵİ汾£¬²¢½«ÁýÕÖÄú×îеĴúÂë¡£
»Ö¸´ÎļþµÄÔçÆÚ°æ±¾
³ýÁ˻ָ´×îа汾µÄÎļþÍ⣬Äú»¹¿ÉÒÔ¼ì³ö×ÊÔ´¿âÖеÄÔçÆÚ°æ±¾¡£ÒªÖ´Ðд˲Ù×÷£¬ÇëÔËÐÐÒÔÏÂÏÂÁ
$ git log -- file.txt
µÇ¼ºó¸´ÖÆ
´ËÏÂÁÁгö Git ¿ÍÕ»ÖÐËùÓÐÕë¶Ô´ËÎļþ¾ÙÐеĸü¸Ä£¬²¢ÔÚÄú×¼±¸»Ö¸´Ìض¨°æ±¾Ê±ÌṩÓйØÎļþµÄÐÅÏ¢¡£ÔÚÁгö¸ü¸Äºó£¬Äú½«¿´µ½Ò»ÌõÌõµÄÌá½»¼Í¼£¬Ã¿¸ö¼Í¼µÄ¿ªÍ·¶¼ÓÐÒ»¸ö¹þÏ£Öµ¡£
¸´ÖÆÄúÏëÒª¼ì³öµÄ°æ±¾µÄ¹þÏ£Öµ£¬²¢Ê¹ÓÃÒÔÏÂÏÂÁ
$ git checkout <commit-hash> -- file.txt</commit-hash>
µÇ¼ºó¸´ÖÆ
´ËÏÂÁîµÄÊÂÇéÔÀíÓë֮ǰÏàͬ¡£¿ÉÊÇ£¬Õâ´ÎÄúʹÓÃÌض¨µÄÌá½»¹þÏ£Öµ¶ø²»ÊÇ HEAD¡£Õ⽫»Ö¸´Ö¸¶¨ÌύʱÎļþµÄ°æ±¾¡£
±ÜÃâÎļþɥʧ
ËäÈ» Git ¿ÉÒÔ×ÊÖúÄú»Ö¸´±»É¾³ýµÄÎļþ£¬µ«ÈÔÈ»½¨ÒéÄúÔÚÌí¼ÓÐÂÎļþ»ò¸ü¸Ä¾ÉÎļþ֮ǰ¶ÔÆä¾ÙÐб¸·Ý¡£±¸·Ý¿ÉÒÔ×èÖ¹Êý¾ÝµÄ²»¿ÉÕ¹ÍûËðʧ£¬µ«Ò²¿ÉÒÔʹÄúÇáËɵØä¯ÀÀÒÔÇ°µÄ°æ±¾£¬ÒÔ±ã¸üºÃµØÏàʶ´úÂëµÄÀúÊ·Éú³¤¡£
±ðµÄ£¬ÎªÁ˱ÜÃâ Git ¿ÍÕ»ÖеĹÊÕÏ»òÊý¾Ýɥʧ£¬ÄúÓ¦¸Ã˼Á¿Ê¹ÓÃÔÆ´æ´¢»òÆäËû±¸·Ý½â¾ö¼Æ»®£¬ÒÔ±ãÔÚ»Ö¸´¸ü´óµÄÊý¾ÝɥʧʱÉúÑÄÍêÕûµÄ´úÂë¿â°æ±¾¡£
ÔÚʹÓà Git ¾ÙÐа汾¿ØÖÆʱ£¬Çë¼Ç×Å£¬ÎÂ˳µÄ×ö·¨ÒªÓÅÓÚí§Òâɾ³ýÎļþ¡£ÎļþµÄí§Òâɾ³ý¿ÉÄܵ¼ÖÂÊý¾Ýɥʧ£¬Õ⽫ÊÇÌÚ¹óºÍ²»ÐëÒªµÄ¹ýʧ¡£ÈôÊÇÄú²»È·¶¨ÔõÑùʹÓà Git ¾ÙÐа汾¿ØÖÆ£¬Çë²éÕÒÕâ¸öÇ¿Ê¢¹¤¾ßµÄ´ó×Ú×ÊÔ´£¬ÒÔ±ãʼÖվ߱¸ÖªÊ¶ºÍÊÖÒÕÀ´±£»¤´úÂë¿â¡£
ÒÔÉϾÍÊÇgit Ôõô»Ö¸´ÍâµØɾ³ýÎļþµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡