ÎÒÒѾʹÓÃgit²î²»¶à18¸öÔÂÁË£¬¾õµÃ×Ô¼º¶ÔËüÓ¦¸ÃÒѾ·Ç³£Á˽⡣ȻºóÀ´×ÔGitHubµÄScott
Chacon¹ýÀ´¸øLVS×öÅàѵ£¬¶øÎÒÔÚµÚÒ»ÌìÀï¾Íѧµ½Á˺ܶࡣ
×÷Ϊһ¸ö¶Ôgit¸Ð¾õÁ¼ºÃµÄÈË£¬ÎÒ¾õµÃ·ÖÏí´ÓÉçÇøÀïÕÆÎÕµÄһЩÓмÛÖµµÄÐÅÏ¢£¬Ò²ÐíÄܰïijÈ˽â¾öÎÊÌâ¶ø²»ÓÃ×öÌ«ÉîÈëÑо¿¡£
»ù±¾¼¼ÇÉ
1. °²×°ºóµÄµÚÒ»²½
ÔÚ°²×°ºÃgitºó£¬ÄãµÚÒ»¼þ¸Ã×öµÄÊÂÊÇÉèÖÃÄãµÄÃû×ֺ͵ç×ÓÓÊÏ䣬ÒòΪÿ´ÎÌá½»¶¼ÒªÓõ½ÕâЩÐÅÏ¢£º
$ git config --global user.name "Some One" $ git config --global user.email "someone@gmail.com" |
2. GitÊÇ»ùÓÚÖ¸ÕëµÄ
±£´æÔÚgitÀïµÄÒ»Çж¼ÊÇÎļþ¡£µ±Äã´´½¨Ò»¸öÌá½»µÄʱºò£¬»á½¨Á¢Ò»¸ö°üº¬ÄãµÄÌá½»ÐÅÏ¢ºÍÏà¹ØÊý¾Ý£¨Ãû×Ö£¬ÓʼþµØÖ·£¬ÈÕÆÚ/ʱ¼ä£¬Ç°Ò»¸öÌá½»£¬µÈµÈ£©µÄÎļþ£¬²¢°ÑËüÁ´½Óµ½Ò»¸öÊ÷ÎļþÖС£Õâ¸öÊ÷ÎļþÖаüº¬Á˶ÔÏó»òÆäËûÊ÷µÄÁÐ±í¡£ÕâÀïµÄÌáµ½µÄ¶ÔÏ󣨻ò¶þ½øÖÆ´ó¶ÔÏó£©ÊǺͱ¾´ÎÌá½»Ïà¹ØµÄʵ¼ÊÄÚÈÝ£¨ËüÒ²ÊÇÒ»¸öÎļþ£¬ÁíÍ⣬¾¡¹ÜÎļþÃû²¢Ã»Óаüº¬ÔÚ¶ÔÏóÀµ«ÊÇ´æ´¢ÔÚÊ÷ÖУ©¡£ËùÓÐÕâЩÎļþ¶¼Ê¹ÓöÔÏóµÄSHA-1¹þÏ£Öµ×÷ΪÎļþÃû¡£
ÓÃÕâÖÖ·½Ê½£¬·ÖÖ§ºÍ±êÇ©¾ÍÊǼòµ¥µÄÎļþ£¨»ù±¾ÉÏÊÇÕâÑù£©£¬°üº¬Ö¸Ïò¸ÃÌá½»µÄSHA-1¹þÏ£Öµ¡£Ê¹ÓÃÕâЩË÷Òý»á´øÀ´ÓÅÐãµÄÁé»îÐÔºÍËÙ¶È£¬±ÈÈç´´½¨Ò»¸öзÖÖ§¾ÍÊǼòµ¥µØÓ÷ÖÖ§Ãû×ÖºÍËù·Ö³öµÄÄǸöÌá½»µÄSHA-1Ë÷ÒýÀ´´´½¨Ò»¸öÎļþ¡£µ±È»£¬Äã²»ÐèÒª×Ô¼º×öÕâЩ£¬¶øÖ»ÒªÊ¹ÓÃGitÃüÁîÐй¤¾ß£¨»òÕßGUI£©£¬µ«ÊÇʵ¼ÊÉϾÍÊÇÕâô¼òµ¥¡£
ÄãÒ²ÐíÌý˵¹ý½ÐHEADµÄË÷Òý¡£ÕâÖ»ÊǼòµ¥µÄÒ»¸öÎļþ£¬°üº¬ÁËÄ㵱ǰָÏòµÄÄǸöÌá½»µÄSHA-1Ë÷ÒýÖµ¡£Èç¹ûÄãÕýÔÚ½â¾öÒ»´ÎºÏ²¢³åͻȻºó¿´µ½ÁËHEAD£¬Õâ²¢²»ÊÇÒ»¸öÌØ±ðµÄ·ÖÖ§»ò·ÖÖ§ÉϵÄÒ»¸ö±ØÐèµÄÌØÊâλÖã¬Ö»ÊDZêÃ÷Ä㵱ǰËùÔÚλÖá£
ËùÓеķÖÖ§Ö¸Õë¶¼±£´æÔÚ.git/refs/headsÀHEADÔÚ.git/HEADÀ¶ø±êÇ©±£´æÔÚ.git/refs/tagsÀï
- ×Ô¼º¿ÉÒÔËæ±ã½øÈ¥¿´¿´¡£
3. Á½¸ö°Ö°Ö£¨¸¸½Úµã£© - Äãû¿´´í£¡
ÔÚÀúÊ·Öв鿴һ¸öºÏ²¢Ìá½»µÄÐÅϢʱ£¬Ä㽫¿´µ½ÓÐÁ½¸ö¸¸½Úµã£¨²»Í¬ÓÚ¹¤×÷¸±±¾Éϵij£¹æÌá½»µÄÇé¿ö£©¡£µÚÒ»¸ö¸¸½ÚµãÊÇÄãËùÔڵķÖÖ§£¬µÚ¶þ¸öÊÇÄãºÏ²¢¹ýÀ´µÄ·ÖÖ§¡£
4. ºÏ²¢³åÍ»
ĿǰÎÒÏàÐÅÄãÅöµ½¹ýºÏ²¢³åÍ»²¢ÇÒ½â¾ö¹ý¡£Í¨³£ÊDZà¼Ò»ÏÂÎļþ£¬È¥µô<<<<£¬====£¬>>>>±êÖ¾£¬±£ÁôÐèÒªÁôϵĴúÂë¡£ÓÐʱÄܹ»¿´µ½ÕâÁ½¸öÐÞ¸Ä֮ǰµÄ´úÂë»áºÜ²»´í£¬±ÈÈ磬ÔÚÕâÁ½¸öÏÖÔÚ³åÍ»µÄ·Ö֧֮ǰµÄ¸Ä¶¯¡£ÏÂÃæÊÇÒ»ÖÖ·½Ê½£º
$ git diff --merge diff --cc dummy.rb index 5175dde,0c65895..4a00477 --- a/dummy.rb +++ b/dummy.rb @@@ -1,5 -1,5 +1,5 @@@ class MyFoo def say - puts "Bonjour" - puts "Hello world" ++ puts "Annyong Haseyo" end end |
Èç¹ûÊǶþ½øÖÆÎļþ£¬±È½Ï²îÒì¾ÍûÄÇô¼òµ¥ÁË...ͨ³£ÄãÒª×öµÄ¾ÍÊDzâÊÔÕâ¸ö¶þ½øÖÆÎļþµÄÁ½¸ö°æ±¾À´¾ö¶¨±£ÁôÄĸö£¨»òÕßÔÚ¶þ½øÖÆÎļþ±à¼Æ÷ÀïÊÖ¹¤¸´ÖƳåÍ»²¿·Ö£©¡£´ÓÒ»¸öÌØ¶¨·ÖÖ§»ñÈ¡Îļþ¿½±´£¨±ÈÈç˵ÄãÔںϲ¢masterºÍfeature123Á½¸ö·ÖÖ§£©£º
$ git checkout master flash/foo.fla # »òÕß... $ git checkout feature132 flash/foo.fla $ # È»ºó... $ git add flash/foo.fla |
ÁíÒ»ÖÖ·½Ê½ÊÇͨ¹ýgitÊä³öÎļþ - Äã¿ÉÒÔÊä³öµ½ÁíÍâµÄÎļþÃû£¬È»ºóµ±Äã¾ö¶¨ÁËÒªÓÃÄĸöºó£¬ÔÙ½«Ñ¡¶¨µÄÕýÈ·Îļþ¸´ÖÆÎªÕý³£µÄÎļþÃû
$ git show master:flash/foo.fla > master-foo.fla $ git show feature132:flash/foo.fla > feature132-foo.fla $ # ¼ì³ömaster-foo.flaºÍfeature132-foo.fla $ # ¼ÙÈç˵ÎÒÃǾö¶¨À´×Ôfeature132µÄÎļþÊÇÕýÈ·µÄ $ rm flash/foo.fla $ mv feature132-foo.fla flash/foo.fla $ rm master-foo.fla $ git add flash/foo.fla |
¸üУº¸ÐлCarlÔÚÔ²©¿ÍÎÄÕÂÉÏÆÀÂÛÀïµÄÌáÐÑ£¬Äãʵ¼ÊÉÏ¿ÉÒÔÓá°git checkout ¡ªours flash/foo.fla¡±ºÍ¡°git
checkout ¡ªtheirs flash/foo.fla¡±À´¼ì³öÌØ¶¨°æ±¾µÄÎļþ£¬¶ø²»ÓüÇסÄãÔںϲ¢µÄ·ÖÖ§Ãû×Ö¡£¾ÍÎÒ¸öÈËÀ´ËµÏ²»¶¸ü¾«È·Ò»µã£¬µ«ÕâÒ²ÊÇÒ»ÖÖ·½Ê½...
¼Ç×ÅÔÚ½â¾öÍê³åÍ»ºóÒª½«Îļþ¼ÓÈëÌá½»£¨ÏñÎÒÉÏÃæ×öµÄÄÇÑù£©¡£
·þÎñÆ÷£¬·ÖÖ§ºÍ±êÇ©
5. Ô¶¶Ë·þÎñÆ÷
gitµÄÒ»¸ö³¬Ç¿´óµÄ¹¦ÄܾÍÊÇ¿ÉÒÔÓв»Ö¹Ò»¸öÔ¶¶Ë·þÎñÆ÷£¨Êµ¼ÊÉÏÄãÒ»Ö±¶¼ÔÚÒ»¸ö±¾µØ²Ö¿âÉϹ¤×÷£©¡£Äã²¢²»ÊÇÒ»¶¨¶¼ÒªÓÐÕâЩ·þÎñÆ÷µÄдȨÏÞ£¬Äã¿ÉÒÔÓжà¸ö¿ÉÒÔ¶ÁÈ¡µÄ·þÎñÆ÷£¨ÓÃÀ´ºÏ²¢ËûÃǵŤ×÷£©È»ºóдÈëµ½ÁíÍâÒ»¸ö²Ö¿â¡£Ìí¼ÓÒ»¸öеÄÔ¶¶Ë·þÎñÆ÷ºÜ¼òµ¥£º
$ git remote add john git@github.com:johnsomeone/someproject.git |
Èç¹ûÄãÏë²é¿´Ô¶¶Ë·þÎñÆ÷µÄÐÅÏ¢¿ÉÒÔÕâÑù×ö£º
ÏÔʾÿ¸öÔ¶¶Ë·þÎñÆ÷µÄURL $ git remote -v # Ìṩ¸ü¶àÏêϸÐÅÏ¢ $ git remote show name |
ÄãËæÊ±¶¼¿ÉÒԲ鿴±¾µØ·ÖÖ§ºÍÔ¶¶Ë·ÖÖ§µÄ²îÒ죺
$ git diff master..john/master |
ÄãÒ²¿ÉÒԲ鿴ûÓÐÔÚÔ¶¶Ë·ÖÖ§ÉϵÄHEADµÄ¸Ä¶¯£º
$ git log remote/branch.. # ×¢Ò⣺..ºóÃæÃ»ÓнáÊøµÄÌØ¶¨ÒýÓà |
6. ±êÇ©
ÔÚgitÀïÓÐÁ½ÖÖÀàÐ͵ıêÇ© - ÇáÁ¿¼¶±êÇ©ºÍ´ø×¢ÊͱêÇ©¡£¼Çס¼¼ÇÉ2Àï˵¹ýgitÊÇ»ùÓÚÖ¸ÕëµÄ£¬ÕâÁ½ÕßÖ®¼äµÄ²îÒìÒ²ºÜ¼òµ¥¡£ÇáÁ¿¼¶±êǩֻÊÇÒ»¸ö¼òµ¥µÄÖ¸ÏòÒ»´ÎÌá½»µÄ´øÃû×ÖÖ¸Õë¡£ÄãËæÊ±¶¼¿ÉÒÔ½«ËüÖ¸ÏòÁíÒ»¸öÌá½»¡£´ø×¢ÊͱêÇ©ÊÇÒ»¸öÖ¸Ïò±êÇ©¶ÔÏóµÄ´øÃû×ÖÖ¸Õ룬´øÓÐ×Ô¼ºµÄÐÅÏ¢ºÍÀúÊ·¡£ÒòΪÓÐ×Ô¼ºµÄÐÅÏ¢£¬Ëü¿ÉÒÔ¸ù¾ÝÐèÒªÓÃGPGÇ©Ãû¡£
½¨Á¢ÕâÁ½ÖÖÀàÐ͵ıêÇ©¶¼ºÜ¼òµ¥£¨Ö»ÓÐÒ»¸öÃüÁîÐпª¹ØµÄ²îÒ죩
$ git tag to-be-tested $ git tag -a v1.1.0 # »áÌáʾÊäÈë±êÇ©µÄÐÅÏ¢ |
7. ½¨Á¢·ÖÖ§
ÔÚgitÀィÁ¢·ÖÖ§·Ç³£¼òµ¥£¨¶øÇÒÏñÉÁµçÒ»Ñù¿ì£¬ÒòΪËüÖ»ÐèÒª´´½¨Ò»¸öСÓÚ100×Ö½ÚµÄÎļþ£©¡£ÓÃÆÕͨ·½Ê½½¨Á¢Ð·ÖÖ§²¢Çл»¹ýÈ¥£º
$ git branch feature132 $ git checkout feature132 |
µ±È»£¬Èç¹ûÄãÈ·¶¨×Ô¼ºÖ±½ÓÇл»µ½Ð½¨µÄ·ÖÖ§£¬¿ÉÒÔÓÃÒ»¸öÃüÁîʵÏÖ£º
$ git checkout -b feature132 |
Èç¹ûÄãÏëÖØÃüÃûÒ»¸ö±¾µØ·ÖÖ§Ò²ºÜ¼òµ¥£¨¿ÉÒÔÏÔʾ·¢ÉúÁËʲôµÄ½Ï³¤µÄ·½Ê½£©£º
$ git checkout -b twitter-experiment feature132 $ git branch -d feature132 |
¸üУºÄãÒ²¿ÉÒÔ£¨ÏñBrian PalmerÔÚÔ²©¿ÍÎÄÕÂµÄÆÀÂÛÀïÌá³öµÄ£©Ö»Óá°git branch¡±µÄ-m¿ª¹ØÔÚÒ»¸öÃüÁîÀïʵÏÖ£¨ÏñMikeÌá³öµÄ£¬Èç¹ûÄãÖ»Ö¸¶¨ÁËÒ»¸ö·ÖÖ§²ÎÊý£¬¾Í»áÖØÃüÃûµ±Ç°·ÖÖ§£©£º
$ git branch -m twitter-experiment $ git branch -m feature132 twitter-experiment |
8. ºÏ²¢·ÖÖ§
Ò²ÐíÔÚ½«À´µÄij¸öʱºò£¬ÄãÏ£Íû½«¸Ä¶¯ºÏ²¢¡£ÓÐÁ½ÖÖ·½Ê½£º
$ git checkout master $ git merge feature83 # »òÕß... $ git rebase feature83 |
mergeºÍrebaseÖ®¼äµÄ²î±ðÊÇmerge»á³¢ÊÔ´¦Àí¸Ä¶¯²¢½¨Á¢Ò»¸öеĻìºÏÁËÁ½ÕßµÄÌá½»¡£rebase»á³¢ÊÔ°ÑÄã´ÓÒ»¸ö·ÖÖ§×îºóÒ»´Î·ÖÀëºóµÄËùÓи͝£¬Ò»¸ö¸ö¼Óµ½¸Ã·ÖÖ§µÄHEADÉÏ¡£²»¹ý£¬ÔÚÒѾ½«·ÖÖ§ÍÆµ½Ô¶¶Ë·þÎñÆ÷ºó²»ÒªÔÙrebaseÁË
- Õâ»áÒýÆð³åÍ»/ÎÊÌâ¡£
Èç¹ûÄ㲻ȷ¶¨ÔÚÄÄЩ·ÖÖ§ÉÏ»¹ÓжÀÓеŤ×÷ - ËùÒÔÄãÒ²²»ÖªµÀÄÄЩ·ÖÖ§ÐèÒªºÏ²¢¶øÄÄЩ¿ÉÒÔɾ³ý£¬git branchÓÐÁ½¸ö¿ª¹Ø¿ÉÒÔ°ïÄ㣺
# ÏÔʾÒѾȫ²¿ºÏ²¢µ½µ±Ç°·ÖÖ§µÄ·ÖÖ§ $ git branch --merged # ÏÔʾûÓкϲ¢µ½µ±Ç°·ÖÖ§µÄ·ÖÖ§ $ git branch --no-merged |
9. Ô¶¶Ë·ÖÖ§
Èç¹ûÄãÔÚ±¾µØÓÐÒ»¸ö·ÖÖ§Ï£ÍûÍÆµ½Ô¶¶Ë·þÎñÆ÷ÉÏ£¬Äã¿ÉÒÔÓÃÒ»ÐÐÃüÁîÍÆËÍÉÏÈ¥£º
$ git push origin twitter-experiment:refs/heads/twitter-experiment # originÊÇÎÒÃÇ·þÎñÆ÷µÄÃû×Ö£¬¶øtwitter-experimentÊÇ·ÖÖ§Ãû×Ö |
¸üУº¸ÐлErlendÔÚÔ²©¿ÍÎÄÕÂÉÏµÄÆÀÂÛ - Õâ¸öʵ¼ÊÉϺÍgit push origin twitter-experimentЧ¹ûÒ»Ñù£¬²»¹ýʹÓÃÍêÕûµÄÓï·¨£¬Äã¿ÉÒÔÔÚÁ½ÕßÖ®¼äʹÓò»Í¬µÄ·ÖÖ§Ãû£¨ÕâÑù±¾µØ·ÖÖ§¿ÉÒÔÊÇadd-ssl-support¶øÔ¶¶ËÊÇissue-1723£©¡£
Èç¹ûÄãÏëÔÚÔ¶¶Ë·þÎñÆ÷ÉÏɾ³ýÒ»¸ö·ÖÖ§£¨×¢Òâ·ÖÖ§ÃûÇ°ÃæµÄðºÅ£©£º
$ git push origin :twitter-experiment |
Èç¹ûÄãÏë²é¿´ËùÓÐÔ¶¶Ë·ÖÖ§µÄ״̬¿ÉÒÔÕâÑù×ö£º
Õâ¸öÃüÁî¿ÉÄÜ»áÁгö·þÎñÆ÷ÉÏһЩÒÔǰÓйýµ«ÏÖÔÚÒѾ²»ÔÚÁ˵ķÖÖ§¡£Èç¹ûÅöµ½ÕâÖÖÇé¿öÄã¿ÉÒÔÓÃÏÂÃæµÄÃüÁî´ÓÄã±¾µØ·ÖÖ§ÀïÇåÀíµô£º
×îºó£¬Èç¹ûÄãÏëÔÚ±¾µØ¸ú×ÙÒ»¸öÔ¶¶Ë·ÖÖ§£¬ÆÕͨµÄ·½Ê½ÊÇ£º
$ git branch --track myfeature origin/myfeature $ git checkout myfeature |
²»¹ý£¬Ð°æµÄgitÔÚʹÓÃ-b±ê¼Ç¼ì³ö·Ö֧ʱ»á×Ô¶¯É趨¸ú×Ù£º
$ git checkout -b myfeature origin/myfeature |
ÔÚ´¢²Øµã£¬Ë÷ÒýºÍÎļþϵͳÖб£´æÄÚÈÝ
10. ´¢²Ø
ÔÚgitÀïÄã¿ÉÒ԰ѵ±Ç°¹¤×÷״̬·Å½øÒ»¸ö´¢²Ø¶ÑÕ»ÖУ¬È»ºó¿ÉÒÔÔÙÈ¡³öÀ´¡£×î¼òµ¥µÄÇéÐÎÊÇÏÂÃæÕâÑù£º
$ git stash # ×öµãÆäËûÊÂÇé... $ git stash pop |
Ðí¶àÈ˽¨ÒéʹÓÃgit stash applyÀ´´úÌæpop£¬²»¹ýÈç¹ûÕâÑù×öµÄ»°×îºó»áÒÅÁôÒ»¸öºÜ³¤µÄ´¢²ØÁÐ±í¡£¶ø¡°pop¡±»áÔÚÈ«²¿¼ÓÔØºó×Ô¶¯´Ó¶ÑÕ»ÖÐÒÆ³ý¡£Èç¹ûʹÓùýgit
stash apply£¬ÄãÒ²¿ÉÒÔʹÓÃÏÂÃæµÄÃüÁî´Ó¶ÑÕ»ÉÏÒÆ³ý×îºóÒ»Ï
git»á»ùÓÚµ±Ç°µÄÌá½»ÐÅÏ¢×Ô¶¯´´½¨ÆÀÂÛ¡£Èç¹ûÄã¸üÏ£ÍûÓÐ×Ô¶¨ÒåÐÅÏ¢µÄ»°£¨ÒòΪËü¿ÉÄܺÍǰһ¸öÌύûÓÐÈκÎÁªÏµ£©£º
$ git stash save "My stash message" |
Èç¹ûÄãÏ£Íû´ÓÁбíÖÐÈ¡³öÒ»¸öÌØ¶¨µÄ´¢²Øµã£¨²»Ò»¶¨·ÇµÃÊÇ×îºóÒ»¸ö£©¿ÉÒÔÏÈÁгöËüÃÇÈ»ºóÓÃÏÂÃæµÄ·½Ê½È¡³ö£º
$ git stash list stash@{0}: On master: Changed to German stash@{1}: On master: Language is now Italian $ git stash apply stash@{1} |
11. ½»»¥Ê½Ìí¼Ó
ÔÚsubversionµÄÊÀ½çÀïÄãÖ»ÄÜÐÞ¸ÄÎļþÈ»ºóÌá½»ËùÓи͝¡£¶øÔÚgitÀïÄãÓÐÇ¿´óµÃ¶àµÄ·½Ê½À´Ìá½»²¿·ÖÎļþ»òÕßÉõÖÁÊDz¿·Ö²¹¶¡¡£Ìá½»²¿·ÖÎļþ»òÎļþÖеIJ¿·Ö¸Ä¶¯ÄãÐèÒª½øÈë½»»¥Ê½Ä£Ê½£º
$ git add -i staged unstaged path *** Commands *** 1: status 2: update 3: revert 4: add untracked 5: patch 6: diff 7: quit 8: help What now> |
Õâ»áÈÃÄã½øÈëÒ»¸ö»ùÓڲ˵¥µÄ½»»¥Ê½Ìáʾ¡£Äã¿ÉÒÔʹÓÃÃüÁîÖеÄÊý×Ö»ò¸ßÁÁµÄ×Öĸ£¨Èç¹ûÄãÔÚÖÕ¶ËÀï´ò¿ªÁ˸ßÁÁµÄ»°£©À´½øÈëÏàÓ¦µÄģʽ¡£È»ºó¾ÍÖ»ÊÇÊäÈëÄãÏ£Íû²Ù×÷µÄÎļþµÄÊý×ÖÁË£¨Äã¿ÉÒÔʹÓÃÕâÑùµÄ¸ñʽ£¬1»òÕß1-4»ò2,4,7£©¡£
Èç¹ûÄãÏë½øÈë²¹¶¡Ä£Ê½£¨½»»¥Ê½Ä£Ê½Ï°´¡®p¡¯»ò¡®5¡¯£©£¬ÄãÒ²¿ÉÒÔÖ±½Ó½øÈ룺
$ git add -p diff --git a/dummy.rb b/dummy.rb index 4a00477..f856fb0 100644 --- a/dummy.rb +++ b/dummy.rb @@ -1,5 +1,5 @@ class MyFoo def say - puts "Annyong Haseyo" + puts "Guten Tag" end end Stage this hunk [y,n,q,a,d,/,e,?]? |
Äã¿ÉÒÔ¿´µ½Ï·½»áÓÐһЩѡÏѡÔñÓÃÀ´Ìí¼Ó¸ÃÎļþµÄÕâ¸ö¸Ä¶¯¡¢¸ÃÎļþµÄËùÓи͝£¬µÈµÈ¡£Ê¹Óá®?¡¯ÃüÁî¿ÉÒÔÏêϸ½âÊÍÕâЩѡÏî¡£
12. ´ÓÎļþϵͳÀï±£´æ/È¡»Ø¸Ä¶¯
ÓÐЩÏîÄ¿£¨±ÈÈçGitÏîÄ¿±¾Éí£©ÔÚgitÎļþϵͳÖÐÖ±½Ó±£´æ¶îÍâÎļþ¶ø²¢Ã»Óн«ËüÃǼÓÈëµ½°æ±¾¿ØÖÆÖС£
ÈÃÎÒÃÇ´ÓÔÚgitÖд洢һ¸öËæ»úÎļþ¿ªÊ¼£º
$ echo "Foo" | git hash-object -w --stdin 51fc03a9bb365fae74fd2bf66517b30bf48020cb |
ÕâÑùÕâ¸öÄ¿±êÎļþ¾ÍÒѾ±£´æµ½Êý¾Ý¿âÖÐÁË£¬µ«ÊÇÈç¹ûÄãûÓÐÉ趨һ¸öÖ¸ÏòËüµÄÖ¸ÕëµÄ»°Ëü»á±»µ±×öÀ¬»ø»ØÊÕ¡£×î¼òµ¥µÄ·½Ê½ÊÇÉ趨һ¸ö±êÇ©£º
$ git tag myfile 51fc03a9bb365fae74fd2bf66517b30bf48020cb |
×¢ÒâÕâÀïÎÒÃÇʹÓÃÁ˱êÇ©myfile¡£µ±ÎÒÃÇÐèҪʹÓÃÕâ¸öÎļþµÄʱºò¿ÉÒÔÕâÑù×ö£º
$ git cat-file blob myfile |
Õâ¸ö¶ÔÓÚһЩ¹¤¾ßÎļþºÜÓÐÓ㬿ª·¢Õß¿ÉÄÜ»áÓõ½£¨ÃÜÂ룬GPGÃÜÔ¿£¬µÈµÈ£©µ«ÊÇÓÖ²»Ï£Íûÿ´Î¶¼¼ì³öµ½Ó²ÅÌ£¨ÓÈÆäÊÇÔÚʵ¼Ê¹¤×÷ÖУ©¡£
|