±à¼ÍƼö: |
±¾ÎÄÀ´×Ôgit-scm.com£¬³ýÁËÈçºÎÓÐЧµØ²ÎÓëÒ»¸öÏîÄ¿µÄ¹±Ï×Ö®Í⣬Äã¿ÉÄÜÒ²ÐèÒªÁ˽âÈçºÎά»¤ÏîÄ¿¡£
Çë²ÎÔÄÏÂÎÄ¡£
|
|
ÎÄÕµĵÚһƪ
1·Ö²¼Ê½ Git - ·Ö²¼Ê½¹¤×÷Á÷³Ì
ÎÄÕµĵڶþƪ 2
·Ö²¼Ê½ Git - ÏòÒ»¸öÏîÄ¿¹±Ï×
ά»¤ÏîÄ¿
³ýÁËÈçºÎÓÐЧµØ²ÎÓëÒ»¸öÏîÄ¿µÄ¹±Ï×Ö®Í⣬Äã¿ÉÄÜÒ²ÐèÒªÁ˽âÈçºÎά»¤ÏîÄ¿¡£ Õâ°üº¬½ÓÊܲ¢Ó¦ÓñðÈËʹÓà format-patch
Éú³É²¢Í¨¹ýµç×ÓÓʼþ·¢Ë͹ýÀ´µÄ²¹¶¡£¬»ò¶ÔÏîÄ¿Ìí¼ÓµÄÔ¶³Ì°æ±¾¿â·ÖÖ§Öеĸü¸Ä½øÐÐÕûºÏ¡£ µ«ÎÞÂÛÊǹÜÀí°æ±¾¿â£¬»¹ÊǰïæÑéÖ¤¡¢ÉóºËÊÕµ½µÄ²¹¶¡£¬¶¼ÐèҪͬÆäËû¹±Ï×ÕßÔ¼¶¨Ä³ÖÖ³¤ÆÚ¿É³ÖÐøµÄ¹¤×÷·½Ê½¡£
ÔÚÌØÐÔ·ÖÖ§Öй¤×÷
Èç¹ûÄãÏëÏòÏîÄ¿ÖÐÕûºÏһЩж«Î÷£¬×îºÃ½«ÕâЩ³¢ÊÔ¾ÖÏÞÔÚÌØÐÔ·ÖÖ§¡ª¡ªÒ»ÖÖͨ³£ÓÃÀ´³¢ÊÔж«Î÷µÄÁÙʱ·ÖÖ§ÖС£
ÕâÑù±ãÓÚµ¥¶Àµ÷Õû²¹¶¡£¬Èç¹ûÓöµ½ÎÞ·¨Õý³£¹¤×÷µÄÇé¿ö£¬¿ÉÒÔÏȲ»Óùܣ¬µÈµ½ÓÐʱ¼äµÄʱºòÔÙÀ´´¦Àí¡£ Èç¹ûÄã»ùÓÚÄãËù³¢ÊÔ½øÐй¤×÷µÄÌØÐÔΪ·ÖÖ§´´½¨Ò»¸ö¼òµ¥µÄÃû×Ö£¬±ÈÈç
ruby_client »òÕß¾ßÓÐÀàËÆÃèÊöÐÔµÄÆäËûÃû×Ö£¬ÕâÑù¼´Ê¹Äã±ØÐëÔÝʱÅׯúËü£¬ÒÔºó»ØÀ´Ê±Ò²²»»áÍü¼Ç¡£
ÏîÄ¿µÄά»¤ÕßÒ»°ã»¹»áΪÕâЩ·ÖÖ§¸½´øÃüÃû¿Õ¼ä£¬±ÈÈç sc/ruby_client£¨ÆäÖÐ sc Êǹ±Ï׸ÃÏ×÷µÄÈËÃû³ÆµÄ¼òд£©¡£
ÄãÓ¦¸Ã¼ÇµÃ£¬¿ÉÒÔʹÓÃÈçÏ·½Ê½»ùÓÚ master ·ÖÖ§½¨Á¢ÌØÐÔ·ÖÖ§£º
$ git branch sc/ruby_client
master |
»òÕßÈç¹ûÄãͬʱÏëÁ¢¿ÌÇл»µ½Ð·ÖÖ§Éϵϰ£¬¿ÉÒÔʹÓà checkout -b Ñ¡Ï
$ git checkout
-b sc/ruby_client master |
ÏÖÔÚÄãÒѾ׼±¸ºÃ½«±ðÈ˹±Ï׵Ť×÷¼ÓÈëµ½Õâ¸öÌØÐÔ·ÖÖ§£¬²¢¿¼ÂÇÊÇ·ñ½«ÆäºÏ²¢µ½³¤ÆÚ·ÖÖ§ÖÐÈ¥ÁË¡£
Ó¦ÓÃÀ´×ÔÓʼþµÄ²¹¶¡
Èç¹ûÄãͨ¹ýµç×ÓÓʼþÊÕµ½ÁËÒ»¸öÐèÒªÕûºÏ½øÈëÏîÄ¿µÄ²¹¶¡£¬ÄãÐèÒª½«ÆäÓ¦Óõ½ÌØÐÔ·ÖÖ§ÖнøÐÐÆÀ¹À¡£ ÓÐÁ½ÖÖÓ¦ÓøÃÖÖ²¹¶¡µÄ·½·¨£ºÊ¹ÓÃ
git apply£¬»òÕßʹÓà git am¡£
ʹÓà apply ÃüÁîÓ¦Óò¹¶¡
Èç¹ûÄãÊÕµ½ÁËÒ»¸öʹÓà git diff »ò Unix diff ÃüÁ²»ÍƼöʹÓÃÕâÖÖ·½Ê½£¬¾ßÌå¼ûÏÂÒ»½Ú£©´´½¨µÄ²¹¶¡£¬¿ÉÒÔʹÓÃ
git apply ÃüÁîÀ´Ó¦Óᣠ¼ÙÉèÄ㽫²¹¶¡±£´æÔÚÁË /tmp/patch-ruby-client.patch
ÖУ¬¿ÉÒÔÕâÑùÓ¦Óò¹¶¡£º
$ git apply
/tmp/patch-ruby-client.patch |
Õâ»áÐ޸Ť×÷Ŀ¼ÖеÄÎļþ¡£ ËüÓëÔËÐÐ patch -p1 ÃüÁîÀ´Ó¦Óò¹¶¡¼¸ºõÊǵÈЧµÄ£¬µ«ÊÇÕâÖÖ·½Ê½¸ü¼ÓÑϸñ£¬Ïà¶ÔÓÚ
patch À´Ëµ£¬ËüÄܹ»½ÓÊܵÄÄ£ºýÆ¥Åä¸üÉÙ¡£ ËüÒ²Äܹ»´¦Àí git diff ¸ñʽÎļþËùÃèÊöµÄÎļþÌí¼Ó¡¢É¾³ýºÍÖØÃüÃû²Ù×÷£¬¶ø
patch Ôò²»»á¡£ ×îºó£¬git apply ÃüÁî²ÉÓÃÁËÒ»ÖÖ¡°È«²¿Ó¦Ó㬷ñÔò¾ÍÈ«²¿³·Ïú£¨apply
all or abort all£©¡±µÄÄ£ÐÍ£¬¼´²¹¶¡Ö»ÓÐÈ«²¿ÄÚÈݶ¼±»Ó¦ÓúÍÍêÈ«²»±»Ó¦ÓÃÁ½¸ö״̬£¬¶ø patch
¿ÉÄܻᵼÖ²¹¶¡Îļþ±»²¿·ÖÓ¦Óã¬×îºóʹÄãµÄ¹¤×÷Ŀ¼±£³ÖÔÚÒ»¸ö±È½ÏÆæ¹ÖµÄ״̬¡£ ×ÜÌåÀ´¿´£¬git apply
ÃüÁîÒª±È patch ½÷É÷µÃ¶à¡£ ²¢ÇÒ£¬Ëü²»»áΪÄã´´½¨Ìá½»¡ª¡ªÔÚÔËÐÐÖ®ºó£¬ÄãÐèÒªÊÖ¶¯ÔÝ´æ²¢Ìá½»²¹¶¡ËùÒýÈëµÄ¸ü¸Ä¡£
ÔÚʵ¼ÊÓ¦Óò¹¶¡Ç°£¬Ä㻹¿ÉÒÔʹÓà git apply À´¼ì²é²¹¶¡ÊÇ·ñ¿ÉÒÔ˳ÀûÓ¦Ó᪡ª¼´¶Ô²¹¶¡ÔËÐÐ git
apply --check ÃüÁ
$ git apply
--check 0001-seeing-if-this-helps-the-gem.patch
error: patch failed: ticgit.gemspec:1
error: ticgit.gemspec: patch does not apply |
Èç¹ûûÓвúÉúÊä³ö£¬Ôò¸Ã²¹¶¡¿ÉÒÔ˳ÀûÓ¦ÓᣠÈç¹û¼ì²éʧ°ÜÁË£¬¸ÃÃüÁ»áÒÔÒ»¸ö·ÇÁãµÄ״̬Í˳ö£¬ËùÒÔÐèҪʱÄãÒ²¿ÉÒÔÔڽű¾ÖÐʹÓÃËü¡£
ʹÓà am ÃüÁîÓ¦Óò¹¶¡
Èç¹û²¹¶¡µÄ¹±Ï×ÕßÒ²ÊÇÒ»¸ö Git Óû§£¬²¢ÇÒÆäÄÜÊìÁ·Ê¹Óà format-patch ÃüÁîÀ´Éú³É²¹¶¡£¬ÕâÑùµÄ»°ÄãµÄ¹¤×÷»á±äµÃ¸ü¼ÓÇáËÉ£¬ÒòΪÕâÖÖ²¹¶¡Öаüº¬ÁË×÷ÕßÐÅÏ¢ºÍÌá½»ÐÅÏ¢¹©Äã²Î¿¼¡£
Èç¹û¿ÉÄܵϰ£¬Çë¹ÄÀø¹±Ï×ÕßʹÓà format-patch ¶ø²»ÊÇ diff À´ÎªÄãÉú³É²¹¶¡¡£ ¶øÖ»ÓжÔÀÏʽµÄ²¹¶¡£¬Äã²Å±ØÐëʹÓÃ
git apply ÃüÁî¡£
ÒªÓ¦ÓÃÒ»¸öÓÉ format-patch ÃüÁîÉú³ÉµÄ²¹¶¡£¬ÄãÓ¦¸ÃʹÓà git am ÃüÁî¡£ ´Ó¼¼ÊõµÄ½Ç¶È¿´£¬git
am ÊÇΪÁ˶ÁÈ¡ mbox Îļþ¶ø¹¹½¨µÄ£¬mbox ÊÇÒ»ÖÖÓÃÀ´ÔÚµ¥¸öÎı¾ÎļþÖд洢һ¸ö»ò¶à¸öµç×ÓÓʼþÏûÏ¢µÄ¼òµ¥´¿Îı¾¸ñʽ¡£
Æä´óÖ¸ñʽÈçÏÂËùʾ£º
From 330090432754092d704da8e76ca5c05c198e71a8
Mon Sep 17 00:00:00 2001
From: Jessica Smith <jessica@example.com>
Date: Sun, 6 Apr 2008 10:17:23 -0700
Subject: [PATCH 1/2] add limit to log function
Limit log functionality to the first 20 |
ÕâÆäʵ¾ÍÊÇÄãÇ°Ãæ¿´µ½µÄ format-patch ÃüÁîÊä³öµÄ¿ªÊ¼¼¸ÐС£ ¶øÍ¬Ê±ËüÒ²ÊÇÓÐЧµÄ mbox
µç×ÓÓʼþ¸ñʽ¡£ Èç¹ûÓÐÈËʹÓà git send-email ÃüÁ²¹¶¡ÒÔµç×ÓÓʼþµÄÐÎʽ·¢Ë͸øÄ㣬Äã±ã¿ÉÒÔ½«ËüÏÂÔØÎª
mbox ¸ñʽµÄÎļþ£¬Ö®ºó½« git am ÃüÁîÖ¸Ïò¸ÃÎļþ£¬Ëü»áÓ¦ÓÃÆäÖаüº¬µÄËùÓв¹¶¡¡£ Èç¹ûÄãËùʹÓõÄÓʼþ¿Í»§¶ËÄܹ»Í¬Ê±½«¶à·âÓʼþ±£´æÎª
mbox ¸ñʽµÄÎļþ£¬ÄãÉõÖÁÄܹ»½«Ò»ÏµÁв¹¶¡´ò°üΪµ¥¸ö mbox Îļþ£¬²¢ÀûÓà git am ÃüÁËüÃÇÒ»´ÎÐÔÈ«²¿Ó¦Óá£
È»¶ø£¬Èç¹û¹±Ï×Õß½« format-patch Éú³ÉµÄ²¹¶¡ÎļþÉÏ´«µ½ÀàËÆ Request Ticket
µÄÈÎÎñ´¦Àíϵͳ£¬Äã¿ÉÒÔÏȽ«Æä±£´æµ½±¾µØ£¬Ö®ºóͨ¹ý git am À´Ó¦Óò¹¶¡£º
$ git am 0001-limit-log-function.patch
Applying: add limit to log function |
Äã»á¿´µ½²¹¶¡±»Ë³ÀûµØÓ¦Ó㬲¢ÇÒΪÄã×Ô¶¯´´½¨ÁËÒ»¸öеÄÌá½»¡£ ÆäÖеÄ×÷ÕßÐÅÏ¢À´×ÔÓÚµç×ÓÓʼþÍ·²¿µÄ From
ºÍ Date ×ֶΣ¬Ìá½»ÏûÏ¢ÔòÈ¡×Ô Subject ºÍÓʼþÕýÎÄÖв¹¶¡Ö®Ç°µÄÄÚÈÝ¡£ ±ÈÈ磬ӦÓÃÉÏÃæÄǸö
mbox ʾÀýºóÉú³ÉµÄÌá½»ÊÇÕâÑùµÄ£º
$ git log --pretty=fuller
-1
commit 6c5e70b984a60b3cecd395edd5b48a7575bf58e0
Author: Jessica Smith <jessica@example.com>
AuthorDate: Sun Apr 6 10:17:23 2008 -0700
Commit: Scott Chacon <schacon@gmail.com>
CommitDate: Thu Apr 9 09:19:06 2009 -0700
add limit to log function
Limit log functionality to the first 20 |
ÆäÖÐ Commit ÐÅÏ¢±íʾµÄÊÇÓ¦Óò¹¶¡µÄÈ˺ÍÓ¦Óò¹¶¡µÄʱ¼ä¡£ Author ÐÅÏ¢Ôò±íʾ²¹¶¡µÄÔ×÷ÕߺÍÔ±¾µÄ´´½¨Ê±¼ä¡£
µ«ÊÇ£¬ÓÐʱºòÎÞ·¨Ë³ÀûµØÓ¦Óò¹¶¡¡£ ÕâÒ²ÐíÊÇÒòΪÄãµÄÖ÷·ÖÖ§ºÍ´´½¨²¹¶¡µÄ·ÖÖ§Ïà²î½Ï¶à£¬Ò²ÓпÉÄÜÊÇÒòΪÕâ¸ö²¹¶¡ÒÀÀµÓÚÆäËûÄãÉÐδӦÓõIJ¹¶¡¡£
ÕâÖÖÇé¿öÏ£¬git am ½ø³Ì½«»á±¨´í²¢ÇÒѯÎÊÄãÒª×öʲô£º
$ git am 0001-seeing-if-this-helps-the-gem.patch
Applying: seeing if this helps the gem
error: patch failed: ticgit.gemspec:1
error: ticgit.gemspec: patch does not apply
Patch failed at 0001.
When you have resolved this problem run "git
am --resolved".
If you would prefer to skip this patch, instead
run "git am --skip".
To restore the original branch and stop patching
run "git am --abort". |
¸ÃÃüÁ»áÔÚËùÓгöÏÖÎÊÌâµÄÎļþÄÚ¼ÓÈë³åÍ»±ê¼Ç£¬¾ÍºÍ·¢Éú³åÍ»µÄºÏ²¢»ò±ä»ù²Ù×÷Ò»Ñù¡£ ¶øÄã½â¾öÎÊÌâµÄÊֶκܴó³Ì¶ÈÉÏÒ²ÊÇÒ»ÑùµÄ¡ª¡ª¼´ÊÖ¶¯±à¼ÄÇЩÎļþÀ´½â¾ö³åÍ»£¬ÔÝ´æÐµÄÎļþ£¬Ö®ºóÔËÐÐ
git am --resolved ¼ÌÐøÓ¦ÓÃÏÂÒ»¸ö²¹¶¡£º
$ (fix the file)
$ git add ticgit.gemspec
$ git am --resolved
Applying: seeing if this helps the gem |
Èç¹ûÄãÏ£Íû Git Äܹ»³¢ÊÔÒÔ¸ü¼ÓÖÇÄܵķ½Ê½½â¾ö³åÍ»£¬Äã¿ÉÒÔ¶ÔÆä´«µÝ -3 Ñ¡ÏîÀ´Ê¹ Git ³¢ÊÔ½øÐÐÈý·½ºÏ²¢¡£
¸ÃÑ¡ÏîĬÈϲ¢Ã»Óдò¿ª£¬ÒòΪÈç¹ûÓÃÓÚ´´½¨²¹¶¡µÄÌá½»²¢²»ÔÚÄãµÄ°æ±¾¿âÄڵϰ£¬ÕâÑù×öÊÇûÓÐÓô¦µÄ¡£ ¶øÈç¹ûÄãȷʵÓÐÄǸöÌá½»µÄ»°¡ª¡ª±ÈÈç²¹¶¡ÊÇ»ùÓÚij¸ö¹«¹²Ìá½»µÄ¡ª¡ªÄÇôͨ³£
-3 Ñ¡Ïî¶ÔÓÚÓ¦ÓÃÓгåÍ»µÄ²¹¶¡ÊǸü¼ÓÃ÷ÖǵÄÑ¡Ôñ¡£
$ git am -3
0001-seeing-if-this-helps-the-gem.patch
Applying: seeing if this helps the gem
error: patch failed: ticgit.gemspec:1
error: ticgit.gemspec: patch does not apply
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
No changes -- Patch already applied. |
±ÈÈçÉÏÃæÕâÖÖÇé¿ö£¬ÎÒÔÚ֮ǰÒѾӦÓùýͬÑùµÄ²¹¶¡¡£ Èç¹ûûÓÐ -3 Ñ¡ÏîµÄ»°£¬Õâ¿´ÆðÀ´¾ÍÏñÊÇ´æÔÚÒ»¸ö³åÍ»¡£
Èç¹ûÄãÕýÔÚÀûÓÃÒ»¸ö mbox ÎļþÓ¦Óöà¸ö²¹¶¡£¬Ò²¿ÉÒÔÔÚ½»»¥Ä£Ê½ÏÂÔËÐÐ am ÃüÁÕâÑùÔÚÿ¸ö²¹¶¡Ö®Ç°£¬Ëü»áͣסѯÎÊÄãÊÇ·ñÒªÓ¦Óøò¹¶¡£º
$ git am -3
-i mbox
Commit Body is:
--------------------------
seeing if this helps the gem
--------------------------
Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept
all |
ÕâÔÚÄã±£´æµÄ²¹¶¡½Ï¶àʱºÜºÃÓã¬ÒòΪÄã¿ÉÒÔÔÚÓ¦ÓÃ֮ǰ²é¿´ÍüµôÄÚÈݵIJ¹¶¡£¬²¢ÇÒÌø¹ýÒѾӦÓùýµÄ²¹¶¡¡£
µ±ÓëÄãµÄÌØÐÔÏà¹ØµÄËùÓв¹¶¡¶¼±»Ó¦Óò¢Ìá½»µ½·ÖÖ§ÖÐÖ®ºó£¬Äã¾Í¿ÉÒÔÑ¡ÔñÊÇ·ñÒÔ¼°ÈçºÎ½«ÆäÕûºÏµ½¸ü³¤ÆÚµÄ·ÖÖ§ÖÐÈ¥ÁË¡£
¼ì³öÔ¶³Ì·ÖÖ§
Èç¹ûÄãµÄ¹±Ï×Õß½¨Á¢ÁË×Ô¼ºµÄ°æ±¾¿â£¬²¢ÇÒÏòÆäÖÐÍÆËÍÁËÈô¸ÉÐ޸ģ¬Ö®ºó½«°æ±¾¿âµÄ URL ºÍ°üº¬¸ü¸ÄµÄÔ¶³Ì·ÖÖ§·¢Ë͸øÄ㣬ÄÇôÄã¿ÉÒÔ½«ÆäÌí¼ÓΪһ¸öÔ¶³Ì·ÖÖ§£¬²¢ÇÒÔÚ±¾µØ½øÐкϲ¢¡£
±ÈÈç Jessica ÏòÄã·¢ËÍÁËÒ»·âµç×ÓÓʼþ£¬ÄÚÈÝÊÇÔÚËýµÄ°æ±¾¿âÖÐµÄ ruby-client ·ÖÖ§ÖÐÓÐÒ»¸öºÜ²»´íµÄй¦ÄÜ£¬ÎªÁ˲âÊԸù¦ÄÜ£¬Äã¿ÉÒÔ½«ÆäÌí¼ÓΪһ¸öÔ¶³Ì·ÖÖ§£¬²¢ÔÚ±¾µØ¼ì³ö£º
$ git remote
add jessica git://github.com/jessica/myproject.git
$ git fetch jessica
$ git checkout -b rubyclient jessica/ruby-client |
Èç¹ûËýÔٴη¢Óʼþ˵ÁíÒ»¸ö·ÖÖ§Öаüº¬ÁíÒ»¸öÓÅÐ㹦ÄÜ£¬ÒòΪ֮ǰÒѾÉèÖúÃÔ¶³Ì·ÖÖ§ÁË£¬Äã¾Í¿ÉÒÔÖ±½Ó½øÐÐץȡ¼°¼ì³ö²Ù×÷¡£
Õâ¶ÔÓÚÓëËûÈ˳¤ÆÚºÏ×÷¹¤×÷À´ËµºÜÓÐÓᣠ¶ø¶ÔÓÚÌá½»²¹¶¡ÆµÂʽÏСµÄ¹±Ï×Õߣ¬Ïà¶ÔÓÚÿ¸öÈËά»¤×Ô¼ºµÄ·þÎñÆ÷£¬²»¶ÏÔöɾԶ³Ì·ÖÖ§µÄ×ö·¨£¬Ê¹Óõç×ÓÓʼþÀ´½ÓÊÕ¿ÉÄÜ»á±È½Ïʡʱ¡£
¿öÇÒÄãÒ²²»»áÏëÒª¼ÓÈëÊý°Ù¸öÖ»ÌṩһÁ½¸ö²¹¶¡µÄÔ¶³Ì·ÖÖ§¡£ È»¶ø£¬½Å±¾ºÍÍйܷþÎñÔÚÒ»¶¨³Ì¶ÈÉÏ¿ÉÒÔ¼ò»¯ÕâЩ¹¤×÷¡ª¡ªÕâºÜ´ó³Ì¶ÈÉÏÒÀÀµÓÚÄãºÍÄãµÄ¹±Ï×Õß¿ª·¢µÄ·½Ê½¡£
ÕâÖÖ·½Ê½µÄÁíÒ»ÖÖÓŵãÊÇÄã¿ÉÒÔͬʱµÃµ½Ìá½»ÀúÊ·¡£ ËäÈ»´úÂëºÏ²¢ÖпÉÄÜ»á³öÏÖÎÊÌ⣬µ«ÊÇÄãÄÜ»ñÖªËûÈ˵Ť×÷ÊÇ»ùÓÚÄãµÄÀúÊ·ÖеľßÌåÄÄÒ»¸öλÖã»ËùÒÔGit
»áĬÈϽøÐÐÈý·½ºÏ²¢£¬²»ÐèÒªÌṩ -3 Ñ¡ÏÄãÒ²²»ÐèÒªµ£ÐIJ¹¶¡ÊÇ»ùÓÚij¸öÄãÎÞ·¨·ÃÎʵÄÌá½»Éú³ÉµÄ¡£
¶ÔÓڷdzÖÐøÐԵĺÏ×÷£¬Èç¹ûÄãÒÀÈ»ÏëÒªÒÔÕâÖÖ·½Ê½ÀÈ¡Êý¾ÝµÄ»°£¬Äã¿ÉÒÔ¶ÔÔ¶³Ì°æ±¾¿âµÄ URL µ÷Óà git
pull ÃüÁî¡£ Õâ»áÖ´ÐÐÒ»¸öÒ»´ÎÐÔµÄץȡ£¬¶ø²»»á½«¸Ã URL ´æÎªÔ¶³ÌÒýÓãº
$ git pull https://github.com/onetimeguy/project
From https://github.com/onetimeguy/project
* branch HEAD -> FETCH_HEAD
Merge made by recursive. |
È·¶¨ÒýÈëÁËÄÄЩ¶«Î÷
ÄãÒѾÓÐÁËÒ»¸ö°üº¬ÆäËûÈ˹±Ï×µÄÌØÐÔ·ÖÖ§¡£ ÏÖÔÚÄã¿ÉÒÔ¾ö¶¨ÈçºÎ´¦ÀíËüÃÇÁË¡£ ±¾½Ú»Ø¹ËÁËÈô¸ÉÃüÁÒÔ±ãÓÚÄã¼ì²éÈô½«ÆäºÏ²¢ÈëÖ÷·ÖÖ§ËùÒýÈëµÄ¸ü¸Ä¡£
Ò»°ãÀ´Ëµ£¬ÄãÓ¦¸Ã¶Ô¸Ã·ÖÖ§ÖÐËùÓÐ master ·ÖÖ§ÉÐδ°üº¬µÄÌá½»½øÐмì²é¡£ ͨ¹ýÔÚ·ÖÖ§Ãû³ÆÇ°¼ÓÈë
--not Ñ¡ÏÄã¿ÉÒÔÅųý master ·ÖÖ§ÖеÄÌá½»¡£ ÕâºÍÎÒÃÇ֮ǰʹÓÃµÄ master..contrib
¸ñʽÊÇÒ»ÑùµÄ¡£ ¼ÙÉè¹±Ï×ÕßÏòÄã·¢ËÍÁËÁ½¸ö²¹¶¡£¬Îª´ËÄã´´½¨ÁËÒ»¸öÃû½Ð contrib µÄ·ÖÖ§²¢ÔÚÆäÉÏÓ¦Óò¹¶¡£¬Äã¿ÉÒÔÔËÐУº
$ git log contrib
--not master
commit 5b6235bd297351589efc4d73316f0a68d484f118
Author: Scott Chacon <schacon@gmail.com>
Date: Fri Oct 24 09:53:59 2008 -0700
seeing if this helps the gem
commit 7482e0d16d04bea79d0dba8988cc78df655f16a0
Author: Scott Chacon <schacon@gmail.com>
Date: Mon Oct 22 19:38:36 2008 -0700
updated the gemspec to hopefully work better |
Èç¹ûÒª²é¿´Ã¿´ÎÌá½»ËùÒýÈëµÄ¾ßÌåÐ޸ģ¬ÄãÓ¦¸Ã¼ÇµÃ¿ÉÒÔ¸ø git log ÃüÁî´«µÝ -p Ñ¡ÏÕâÑùËü»áÔÚÿ´ÎÌá½»ºóÃæ¸½¼Ó¶ÔÓ¦µÄ²îÒ죨diff£©¡£
¶øÒª²é¿´½«¸ÃÌØÐÔ·ÖÖ§ÓëÁíÒ»¸ö·ÖÖ§ºÏ²¢µÄÍêÕû diff£¬Äã¿ÉÄÜÐèҪʹÓÃÒ»¸öÓÐÐ©Ææ¹ÖµÄ¼¼ÇÉÀ´µÃµ½ÕýÈ·µÄ½á¹û¡£
Äã¿ÉÄÜ»áÏëµ½ÕâÖÖ·½Ê½£º
Õâ¸öÃüÁî»áÊä³öÒ»¸ö diff£¬µ«Ëü¿ÉÄܲ¢²»ÊÇÎÒÃÇÏëÒªµÄ¡£ Èç¹ûÔÚÄã´´½¨ÌØÐÔ·ÖÖ§Ö®ºó£¬master ·ÖÖ§ÏòÇ°ÒÆ¶¯ÁË£¬Äã»ñµÃµÄ½á¹û¾Í»áÏÔµÃÓÐЩ²»¶Ô¡£
ÕâÊÇÒòΪ Git »áÖ±½Ó½«¸ÃÌØÐÔ·ÖÖ§Óë master ·ÖÖ§µÄ×îÐÂÌá½»¿ìÕÕ½øÐбȽϡ£ ±ÈÈç˵ÄãÔÚ master
·ÖÖ§ÖÐÏòij¸öÎļþÌí¼ÓÁËÒ»ÐÐÄÚÈÝ£¬ÄÇôֱ½Ó±È¶Ô×îпìÕյĽá¹û¿´ÉÏÈ¥¾ÍÏñÊÇÄãÔÚÌØÐÔ·ÖÖ§Öн«ÕâÒ»ÐÐɾ³ýÁË¡£
Èç¹û master ·ÖÖ§ÊÇÄãµÄÌØÐÔ·ÖÖ§µÄÖ±½Ó׿ÏÈ£¬ÆäʵÊÇûÓÐÈκÎÎÊÌâµÄ£»µ«ÊÇÒ»µ©Á½¸ö·ÖÖ§µÄÀúÊ·²úÉúÁ˷ֲ棬ÉÏÊö±È¶Ô²úÉúµÄ
diff ¿´ÉÏÈ¥¾ÍÏñÊǽ«ÌØÐÔ·ÖÖ§ÖÐËùÓеÄж«Î÷¼ÓÈ룬²¢ÇÒ½« master ·ÖÖ§Ëù¶ÀÓеĶ«Î÷ɾ³ý¡£
¶øÄãÕæÕýÏëÒª¼ì²éµÄ¶«Î÷£¬Êµ¼ÊÉϽö½öÊÇÌØÐÔ·ÖÖ§ËùÌí¼ÓµÄ¸ü¸Ä¡ª¡ªÒ²¾ÍÊǸ÷ÖÖ§Óë master ·ÖÖ§ºÏ²¢ËùÒªÒýÈëµÄ¹¤×÷¡£
Òª´ïµ½´ËÄ¿µÄ£¬ÄãÐèÒªÈà Git ¶ÔÌØÐÔ·ÖÖ§ÉÏ×îеÄÌá½»Óë¸Ã·ÖÖ§Óë master ·ÖÖ§µÄÊ׸ö¹«¹²×æÏȽøÐбȽϡ£
´Ó¼¼ÊõµÄ½Ç¶È½²£¬Äã¿ÉÒÔÒÔÊÖ¹¤µÄ·½Ê½ÕÒ³ö¹«¹²×æÏÈ£¬²¢¶ÔÆäÏÔʽÔËÐÐ diff ÃüÁ
$ git merge-base
contrib master
36c7dba2c95e6bbb78dfa822519ecfec6e1ca649
$ git diff 36c7db |
È»¶ø£¬ÕâÖÖ×ö·¨±È½ÏÂé·³£¬ËùÒÔ Git ÌṩÁËÒ»ÖֱȽϱã½ÝµÄ·½Ê½£ºÈýµãÓï·¨¡£ ¶ÔÓÚ diff ÃüÁîÀ´Ëµ£¬Äã¿ÉÒÔͨ¹ý°Ñ
... ÖÃÓÚÁíÒ»¸ö·ÖÖ§ÃûºóÀ´¶Ô¸Ã·ÖÖ§µÄ×îÐÂÌá½»ÓëÁ½¸ö·ÖÖ§µÄ¹²Í¬×æÏȽøÐбȽϣº
$ git diff master...contrib |
¸ÃÃüÁî½ö»áÏÔʾ×Ôµ±Ç°ÌØÐÔ·ÖÖ§Óë master ·ÖÖ§µÄ¹²Í¬×æÏÈÆð£¬¸Ã·ÖÖ§ÖеŤ×÷¡£ Õâ¸öÓï·¨ºÜÓÐÓã¬Ó¦¸ÃÀμǡ£
½«¹±Ï׵Ť×÷ÕûºÏ½øÀ´
µ±ÌØÐÔ·ÖÖ§ÖÐËùÓеŤ×÷¶¼ÒѾ׼±¸ºÃÕûºÏ½øÈë¸ü¿¿½üÖ÷ÏߵķÖ֧ʱ£¬½ÓÏÂÀ´µÄÎÊÌâ¾ÍÊÇÈçºÎ½øÐÐÕûºÏÁË¡£ ´ËÍ⣬»¹ÓÐÒ»¸öÎÊÌâÊÇ£¬ÄãÏëʹÓÃÔõÑùµÄ×ÜÌ幤×÷Á÷À´Î¬»¤ÄãµÄÏîÄ¿£¿
ÄãµÄÑ¡ÔñÓкܶ࣬ÎÒÃÇ»á½éÉÜÆäÖеÄÒ»²¿·Ö¡£
ºÏ²¢¹¤×÷Á÷
Ò»Öַdz£¼òµ¥µÄ¹¤×÷Á÷»áÖ±½Ó½«¹¤×÷ºÏ²¢½øÈë master ·ÖÖ§¡£ ÔÚÕâÖÖÇé¿öÏ£¬master ·ÖÖ§°üº¬µÄ´úÂëÊÇ»ù±¾Îȶ¨µÄ¡£
µ±ÄãÍê³Éij¸öÌØÐÔ·ÖÖ§µÄ¹¤×÷£¬»òÉóºËͨ¹ýÁËÆäËûÈËËù¹±Ï׵Ť×÷ʱ£¬Äã»á½«ÆäºÏ²¢½øÈë master ·ÖÖ§£¬Ö®ºó½«ÌØÐÔ·Ö֧ɾ³ý£¬Èç´Ë·´¸´¡£
Èç¹ûÎÒÃǵİ汾¿â°üº¬ÀàËÆ °üº¬Èô¸ÉÌØÐÔ·ÖÖ§µÄÌá½»ÀúÊ·¡£ µÄÁ½¸öÃû³Æ·Ö±ðΪ ruby_client ºÍ
php_client µÄ·ÖÖ§£¬²¢ÇÒÎÒÃÇÏȺϲ¢ ruby_client ·ÖÖ§£¬Ö®ºóºÏ²¢ php_client
·ÖÖ§£¬ÄÇôÌá½»ÀúÊ·×îºó»á±ä³É ºÏ²¢ÌØÐÔ·ÖÖ§Ö®ºó¡£ µÄÑù×Ó¡£

Figure 73. °üº¬Èô¸ÉÌØÐÔ·ÖÖ§µÄÌá½»ÀúÊ·¡£

Figure 74. ºÏ²¢ÌØÐÔ·ÖÖ§Ö®ºó¡£
ÕâÒ²ÐíÊÇ×î¼òµ¥µÄ¹¤×÷Á÷ÁË£¬µ«Êǵ±ÏîÄ¿¸ü´ó£¬»ò¸üÎȶ¨£¬Äã¶Ô×Ô¼ºËùÒýÈëµÄ¹¤×÷¸ü¼ÓÔÚÒâʱ£¬Ëü¿ÉÄÜ»á´øÀ´ÎÊÌâ¡£
Èç¹ûÄãµÄÏîÄ¿·Ç³£ÖØÒª£¬Äã¿ÉÄÜ»áʹÓÃÁ½½×¶ÎºÏ²¢Ñ»·¡£ ÔÚÕâÖÖÇé¿öÏ£¬Äã»áά»¤Á½¸ö³¤ÆÚ·ÖÖ§£¬·Ö±ðÊÇ master
ºÍ develop£¬master ·ÖÖ§Ö»»áÔÚÒ»¸ö·Ç³£Îȶ¨µÄ°æ±¾·¢²¼Ê±²Å»á¸üУ¬¶øËùÓеÄдúÂë»áÊ×ÏÈÕûºÏ½øÈë
develop ·ÖÖ§¡£ Ä㶨ÆÚ½«ÕâÁ½¸ö·ÖÖ§ÍÆË͵½¹«¹²°æ±¾¿âÖС£ ÿ´ÎÐèÒªºÏ²¢ÐµÄÌØÐÔ·Ö֧ʱ£¨ºÏ²¢ÌØÐÔ·Ö֧ǰ¡££©£¬Äã¶¼Ó¦¸ÃºÏ²¢½øÈë
develop ·ÖÖ§£¨ºÏ²¢ÌØÐÔ·ÖÖ§ºó¡££©£»µ±´ò±êÇ©·¢²¼µÄʱºò£¬Äã»á½« master ·ÖÖ§¿ì½øµ½ÒѾÎȶ¨µÄ
develop ·ÖÖ§£¨Ò»´Î·¢²¼Ö®ºó¡££©¡£

Figure 75. ºÏ²¢ÌØÐÔ·Ö֧ǰ¡£

Figure 76. ºÏ²¢ÌØÐÔ·ÖÖ§ºó¡£

Figure 77. Ò»´Î·¢²¼Ö®ºó¡£
ÕâÑùµ±ÈËÃǿˡÄãÏîÄ¿µÄ°æ±¾¿âºó£¬¼È¿ÉÒÔ¼ì³ö master ·ÖÖ§ÒÔ¹¹½¨×îеÄÎȶ¨°æ±¾²¢±£³Ö¸üУ¬Ò²¿ÉÒÔ¼ì³ö°üº¬¸ü¶àж«Î÷µÄ
develop ·ÖÖ§¡£ ÄãÒ²¿ÉÒÔÀ©Õ¹Õâ¸ö¸ÅÄά»¤Ò»¸ö½«ËùÓй¤×÷ºÏ²¢µ½Ò»ÆðµÄÕûºÏ·ÖÖ§¡£ µ±¸Ã·ÖÖ§µÄ´úÂëÎȶ¨²¢Í¨¹ý²âÊÔÖ®ºó£¬½«ÆäºÏ²¢½øÈë
develop ·ÖÖ§£»¾¹ýÒ»¶Îʱ¼ä£¬È·ÈÏÆäÎȶ¨Ö®ºó£¬½«ÆäÒÔ¿ì½øµÄÐÎʽ²¢Èë master ·ÖÖ§¡£
´óÏîÄ¿ºÏ²¢¹¤×÷Á÷
Git ÏîÄ¿°üº¬Ëĸö³¤ÆÚ·ÖÖ§£ºmaster¡¢next£¬ÓÃÓÚй¤×÷µÄ pu£¨proposed updates£©ºÍÓÃÓÚά»¤ÐÔÏòºóÒÆÖ²¹¤×÷£¨maintenance
backports£©µÄ maint ·ÖÖ§¡£ ¹±Ï×ÕßµÄй¤×÷»áÒÔÀàËÆÖ®Ç°Ëù½éÉܵķ½Ê½ÊÕÈëÌØÐÔ·ÖÖ§ÖУ¨¼û
¹ÜÀí¸´ÔÓµÄһϵÁнÓÊÕ¹±Ï׵į½ÐÐÌØÐÔ·ÖÖ§¡££©¡£ Ö®ºó¶ÔÌØÐÔ·ÖÖ§½øÐвâÊÔÆÀ¹À£¬¼ì²éÆäÊÇ·ñÒѾÄܹ»ºÏ²¢£¬»òÕßÈÔÐèÒª¸ü¶à¹¤×÷¡£
°²È«µÄÌØÐÔ·ÖÖ§»á±»ºÏ²¢Èë next ·ÖÖ§£¬Ö®ºó¸Ã·ÖÖ§»á±»ÍÆËÍʹµÃËùÓÐÈ˶¼¿ÉÒÔ³¢ÊÔÕûºÏµ½Ò»ÆðµÄÌØÐÔ¡£

Figure 78. ¹ÜÀí¸´ÔÓµÄһϵÁнÓÊÕ¹±Ï׵į½ÐÐÌØÐÔ·ÖÖ§¡£
Èç¹ûÌØÐÔ·ÖÖ§ÐèÒª¸ü¶à¹¤×÷£¬ËüÔò»á±»²¢Èë pu ·ÖÖ§¡£ µ±ËüÃÇÍêÈ«Îȶ¨Ö®ºó£¬»á±»Ôٴβ¢Èë master
·ÖÖ§¡£ ÕâÒâζ×Å master ·Ö֧ʼÖÕÔÚ½øÐÐ¿ì½ø£¬next ·Ö֧ż¶û»á±»±ä»ù£¬¶ø pu ·ÖÖ§µÄ±ä»ù±È½ÏƵ·±£º

Figure 79. ½«¹±Ï×µÄÌØÐÔ·ÖÖ§²¢È볤ÆÚÕûºÏ·ÖÖ§¡£
µ±ÌØÐÔ·ÖÖ§×îÖÕ±»²¢Èë master ·ÖÖ§ºó£¬±ã»á±»´Ó°æ±¾¿âÖÐɾ³ýµô¡£ Git ÏîÄ¿»¹ÓÐÒ»¸ö´ÓÉÏÒ»´Î·¢²¼ÖÐÅÉÉú³öÀ´µÄ
maint ·ÖÖ§À´ÌṩÏòºóÒÆÖ²¹ýÀ´µÄ²¹¶¡ÒÔ¹©·¢²¼Î¬»¤¸üС£ Òò´Ë£¬µ±Äã¿Ë¡ Git µÄ°æ±¾¿âÖ®ºó£¬¾Í»áÓÐËĸö¿É·Ö±ðÆÀ¹À¸ÃÏîÄ¿¿ª·¢µÄ²»Í¬½×¶ÎµÄ¿É¼ì³öµÄ·ÖÖ§£¬¼ì³öÄĸö·ÖÖ§£¬È¡¾öÓÚÄãÐèÒª¶àеİ汾£¬»òÕßÄãÏëÒªÈçºÎ½øÐй±Ï×£»¶ÔÓÚά»¤ÕßÀ´Ëµ£¬ÕâÌ׽ṹ»¯µÄ¹¤×÷Á÷ÄܰïÖúËüÃÇÉó²éÐµĹ±Ïס£
±ä»ùÓë¼ðÑ¡¹¤×÷Á÷
ΪÁ˱£³ÖÏßÐÔµÄÌá½»ÀúÊ·£¬ÓÐЩά»¤Õ߸üϲ»¶ÔÚ master ·ÖÖ§É϶Թ±Ï×¹ýÀ´µÄ¹¤×÷½øÐбä»ùºÍ¼ðÑ¡£¬¶ø²»ÊÇÖ±½Ó½«ÆäºÏ²¢¡£
µ±ÄãÍê³ÉÁËij¸öÌØÐÔ·ÖÖ§ÖеŤ×÷£¬²¢ÇÒ¾ö¶¨Òª½«ÆäÕûºÏµÄʱºò£¬Äã¿ÉÒÔÔڸ÷ÖÖ§ÖÐÔËÐбä»ùÃüÁÔÚµ±Ç° master
·ÖÖ§£¨»òÕßÊÇ develop µÈ·ÖÖ§£©µÄ»ù´¡ÉÏÖØÐ¹¹ÔìÐ޸ġ£ Èç¹û½á¹ûÀíÏëµÄ»°£¬Äã¿ÉÒÔ¿ì½ø master
·ÖÖ§£¬×îºóµÃµ½Ò»¸öÏßÐÔµÄÏîÄ¿Ìá½»ÀúÊ·¡£
ÁíÒ»ÖÖ½«ÒýÈëµÄ¹¤×÷×ªÒÆµ½ÆäËû·ÖÖ§µÄ·½·¨ÊǼðÑ¡¡£ Git ÖеļðÑ¡ÀàËÆÓÚ¶ÔÌØ¶¨µÄij´ÎÌá½»µÄ±ä»ù¡£ Ëü»áÌáÈ¡¸ÃÌá½»µÄ²¹¶¡£¬Ö®ºó³¢ÊÔ½«ÆäÖØÐÂÓ¦Óõ½µ±Ç°·ÖÖ§ÉÏ¡£
ÕâÖÖ·½Ê½ÔÚÄãÖ»ÏëÒýÈëÌØÐÔ·ÖÖ§ÖеÄij¸öÌá½»£¬»òÕßÌØÐÔ·ÖÖ§ÖÐÖ»ÓÐÒ»¸öÌá½»£¬¶øÄã²»ÏëÔËÐбä»ùʱºÜÓÐÓᣠ¾Ù¸öÀý×Ó£¬¼ÙÉèÄãµÄÏîÄ¿Ìá½»ÀúÊ·ÀàËÆ£º

Figure 80. ¼ðѡ֮ǰµÄʾÀýÀúÊ·¡£
Èç¹ûÄãÏ£Íû½«Ìá½» e43a6 ÀÈ¡µ½ master ·ÖÖ§£¬Äã¿ÉÒÔÔËÐУº
$ git cherry-pick
e43a6fd3e94888d76779ad79fb568ed180e5fcdf
Finished one cherry-pick.
[master]: created a0a41a9: "More friendly
message when locking the index fails."
3 files changed, 17 insertions(+), 3 deletions(-) |
ÕâÑù»áÀÈ¡ºÍ e43a6 ÏàͬµÄ¸ü¸Ä£¬µ«ÊÇÒòΪӦÓõÄÈÕÆÚ²»Í¬£¬Äã»áµÃµ½Ò»¸öеÄÌá½» SHA-1 Öµ¡£
ÏÖÔÚÄãµÄÀúÊ·»á±ä³ÉÕâÑù£º

Figure 81. ¼ðÑ¡ÌØÐÔ·ÖÖ§ÖеÄÒ»¸öÌá½»ºóµÄÀúÊ·¡£
ÏÖÔÚÄã¿ÉÒÔɾ³ýÕâ¸öÌØÐÔ·ÖÖ§£¬²¢¶ªÆú²»ÏëÀÈëµÄÌá½»¡£
Rerere
Èç¹ûÄãÔÚ½øÐдóÁ¿µÄºÏ²¢»ò±ä»ù£¬»òά»¤Ò»¸ö³¤ÆÚµÄÌØÐÔ·ÖÖ§£¬Git ÌṩµÄÒ»¸ö½Ð×ö¡°rerere¡±µÄ¹¦ÄÜ»áÓÐһЩ°ïÖú¡£
Rerere ÊÇ¡°ÖØÓÃÒѼǼµÄ³åÍ»½â¾ö·½°¸£¨reuse recorded resolution£©¡±µÄÒâ˼¡ª¡ªËüÊÇÒ»ÖÖ¼ò»¯³åÍ»½â¾öµÄ·½·¨¡£
µ±ÆôÓà rerere ʱ£¬Git ½«»áά»¤Ò»Ð©³É¹¦ºÏ²¢Ö®Ç°ºÍÖ®ºóµÄ¾µÏñ£¬µ± Git ·¢ÏÖ֮ǰÒѾÐÞ¸´¹ýÀàËÆµÄ³åͻʱ£¬±ã»áʹÓÃ֮ǰµÄÐÞ¸´·½°¸£¬¶ø²»ÐèÒªÄãµÄ¸ÉÔ¤¡£
Õâ¸ö¹¦Äܰüº¬Á½¸ö²¿·Ö£ºÒ»¸öÅäÖÃÑ¡ÏîºÍÒ»¸öÃüÁî¡£ ÆäÖеÄÅäÖÃÑ¡ÏîÊÇ rerere.enabled£¬°ÑËü·ÅÔÚÈ«¾ÖÅäÖÃÖоͿÉÒÔÁË£º
$ git config
--global rerere.enabled true |
ÏÖÔÚÿµ±Äã½øÐÐÒ»´ÎÐèÒª½â¾ö³åÍ»µÄºÏ²¢Ê±£¬½â¾ö·½°¸¶¼»á±»¼Ç¼ÔÚ»º´æÖУ¬ÒÔ±¸Ö®ºóʹÓá£
Èç¹ûÄãÐèÒªºÍ rerere µÄ»º´æ½»»¥£¬Äã¿ÉÒÔʹÓà git rerere ÃüÁî¡£ µ±µ¥¶Àµ÷ÓÃËüʱ£¬Git
»á¼ì²é½â¾ö·½°¸Êý¾Ý¿â£¬³¢ÊÔѰÕÒÒ»¸öºÍµ±Ç°ÈÎÒ»³åÍ»Ïà¹ØµÄÆ¥ÅäÏî²¢½â¾ö³åÍ»£¨¾¡¹Üµ± rerere.enabled
±»ÉèÖÃΪ true ʱ»á×Ô¶¯½øÐУ©¡£ ËüÒ²ÓÐÈô¸É×ÓÃüÁ¿ÉÓÃÀ´²é¿´¼Ç¼Ïɾ³ýÌØ¶¨½â¾ö·½°¸ºÍÇå³ý»º´æÈ«²¿ÄÚÈݵȡ£
ÎÒÃǽ«ÔÚ Rerere ÖÐÏêϸ̽ÌÖ¡£
Ϊ·¢²¼´ò±êÇ©
µ±Äã¾ö¶¨½øÐÐÒ»´Î·¢²¼Ê±£¬Äã¿ÉÄÜÏëÒªÁôÏÂÒ»¸ö±êÇ©£¬ÕâÑùÔÚÖ®ºóµÄÈκÎÒ»¸öÌá½»µã¶¼¿ÉÒÔÖØÐ´´½¨¸Ã·¢²¼¡£ ÄãÔÚ
Git »ù´¡ ÖÐÒѾÁ˽âÁË´´½¨Ð±êÇ©µÄ¹ý³Ì¡£ ×÷Ϊһ¸öά»¤Õߣ¬Èç¹ûÄã¾ö¶¨ÒªÎª±êǩǩÃûµÄ»°£¬´ò±êÇ©µÄ¹ý³ÌÓ¦¸ÃÊÇÕâÑù×ӵģº
$ git tag -s
v1.5 -m 'my signed 1.5 tag'
You need a passphrase to unlock the secret key
for
user: "Scott Chacon <schacon@gmail.com>"
1024-bit DSA key, ID F721C45A, created 2009-02-09 |
Èç¹ûÄãΪ±êǩǩÃûÁË£¬Äã¿ÉÄÜ»áÓöµ½·Ö·¢ÓÃÀ´Ç©ÃûµÄ PGP ¹«Ô¿µÄÎÊÌâ¡£ Git ÏîÄ¿µÄά»¤ÕßÒѾ½â¾öÁËÕâÒ»ÎÊÌ⣬Æä·½·¨ÊÇÔÚ°æ±¾¿âÖÐÒÔ
blob ¶ÔÏóµÄÐÎʽ°üº¬ËûÃǵĹ«Ô¿£¬²¢Ìí¼ÓÒ»¸öÖ±½ÓÖ¸Ïò¸ÃÄÚÈݵıêÇ©¡£ ÒªÍê³ÉÕâÒ»ÈÎÎñ£¬Ê×ÏÈÄã¿ÉÒÔͨ¹ýÔËÐÐ
gpg --list-keys ÕÒ³öÄãËùÏëÒªµÄ key£º
$ gpg --list-keys
/Users/schacon/.gnupg/pubring.gpg
---------------------------------
pub 1024D/F721C45A 2009-02-09 [expires: 2010-02-09]
uid Scott Chacon <schacon@gmail.com>
sub 2048g/45D02282 2009-02-09 [expires: 2010-02-09] |
Ö®ºóÄã¿ÉÒÔͨ¹ýµ¼³ö key ²¢Í¨¹ý¹ÜµÀ´«µÝ¸ø git hash-object À´Ö±½Ó½« key µ¼Èëµ½
Git µÄÊý¾Ý¿âÖУ¬git hash-object ÃüÁî»áÏò Git ÖÐдÈëÒ»¸ö°üº¬ÆäÄÚÈݵÄРblob
¶ÔÏ󣬲¢ÏòÄã·µ»Ø¸Ã blob ¶ÔÏóµÄ SHA-1 Öµ£º
$ gpg -a --export
F721C45A | git hash-object -w --stdin
659ef797d181633c87ec71ac3f9ba29fe5775b92 |
¼ÈÈ» Git ÖÐÒѾ°üº¬ÄãµÄ key µÄÄÚÈÝÁË£¬Äã¾Í¿ÉÒÔͨ¹ýÖ¸¶¨ÓÉ hash-object ÃüÁî¸ø³öµÄÐÂ
SHA-1 ÖµÀ´´´½¨Ò»¸öÖ±½ÓÖ¸ÏòËüµÄ±êÇ©£º
$ git tag -a
maintainer-pgp-pub 659ef797d181633c87ec71ac3f9ba29fe5775b92 |
Èç¹ûÄãÔËÐÐ git push --tags ÃüÁÄÇô maintainer-pgp-pub ±êÇ©½«»á±»¹²Ïí¸øËùÓÐÈË¡£
ÐèҪУÑé±êÇ©µÄÈË¿ÉÒÔͨ¹ý´ÓÊý¾Ý¿âÖÐÖ±½ÓÀÈ¡ blob ¶ÔÏó²¢µ¼Èëµ½ GPG ÖÐÀ´µ¼Èë PGP key£º
$ git show maintainer-pgp-pub
| gpg --import |
ÈËÃÇ¿ÉÒÔʹÓÃÕâ¸ö key À´Ð£ÑéËùÓÐÓÉÄãÇ©ÃûµÄ±êÇ©¡£ ÁíÍ⣬Èç¹ûÄãÔÚ±êÇ©ÐÅÏ¢Öаüº¬ÁËһЩ²Ù×÷˵Ã÷£¬Óû§¿ÉÒÔͨ¹ýÔËÐÐ
git show <tag> À´»ñÈ¡¸ü¶à¹ØÓÚ±êǩУÑéµÄ˵Ã÷¡£
Éú³ÉÒ»¸ö¹¹½¨ºÅ
Git Öв»´æÔÚËæÃ¿´ÎÌá½»µÝÔöµÄ¡°v123¡±Ö®ÀàµÄÊý×ÖÐòÁУ¬Èç¹ûÄãÏëҪΪÌá½»¸½ÉÏÒ»¸ö¿É¶ÁµÄÃû³Æ£¬¿ÉÒÔ¶ÔÆäÔËÐÐ
git describe ÃüÁî¡£ Git ½«»á¸ø³öÒ»¸ö×Ö·û´®£¬ËüÓÉ×î½üµÄ±êÇ©Ãû¡¢×Ըñêǩ֮ºóµÄÌá½»ÊýÄ¿ºÍÄãËùÃèÊöµÄÌá½»µÄ²¿·Ö
SHA-1 Öµ¹¹³É£º
$ git describe
master
v1.6.2-rc1-20-g8c5b85c |
ÕâÑùÄãÔÚµ¼³öÒ»¸ö¿ìÕÕ»ò¹¹½¨Ê±£¬¿ÉÒÔ¸ø³öÒ»¸ö±ãÓÚÈËÃÇÀí½âµÄÃüÃû¡£ ʵ¼ÊÉÏ£¬Èç¹ûÄãµÄ Git ÊÇ´Ó Git
×Ô¼ºµÄ°æ±¾¿â¿Ë¡ÏÂÀ´²¢¹¹½¨µÄ£¬ÄÇô git --version ÃüÁî¸ø³öµÄ½á¹ûÊÇÓë´ËÀàËÆµÄ¡£ Èç¹ûÄãËùÃèÊöµÄÌá½»×ÔÉí¾ÍÓÐÒ»¸ö±êÇ©£¬ÄÇôËü½«Ö»»áÊä³ö±êÇ©Ãû£¬Ã»ÓкóÃæÁ½ÏîÐÅÏ¢¡£
×¢Òâ git describe ÃüÁîÖ»ÊÊÓÃÓÚÓÐ×¢½âµÄ±êÇ©£¨¼´Ê¹Óà -a »ò -s Ñ¡Ïî´´½¨µÄ±êÇ©£©£¬ËùÒÔÈç¹ûÄãÔÚʹÓÃ
git describe ÃüÁîµÄ»°£¬ÎªÁËÈ·±£ÄÜΪ±êÇ©Éú³ÉºÏÊʵÄÃû³Æ£¬´ò·¢²¼±êǩʱ¶¼Ó¦¸Ã²ÉÓüÓ×¢½âµÄ·½Ê½¡£
ÄãÒ²¿ÉÒÔʹÓÃÕâ¸ö×Ö·û´®À´µ÷Óà checkout »ò show ÃüÁµ«ÊÇÕâÒÀÀµÓÚÆäĩβµÄ¼ò¶Ì SHA-1
Öµ£¬Òò´Ë²»Ò»¶¨Ò»Ö±ÓÐЧ¡£ ±ÈÈ磬×î½ü Linux ÄÚºËΪÁ˱£Ö¤ SHA-1 Öµ¶ÔÏóµÄΨһÐÔ£¬½«ÆäλÊýÓÉ
8 λÀ©Õ¹µ½ÁË 10 룬µ¼ÖÂÒÔǰµÄ git describe Êä³öÈ«²¿Ê§Ð§¡£
×¼±¸Ò»´Î·¢²¼
ÏÖÔÚÄã¿ÉÒÔ·¢²¼Ò»¸ö¹¹½¨ÁË¡£ ÆäÖÐÒ»¼þÊÂÇé¾ÍÊÇΪÄÇЩ²»Ê¹Óà Git µÄ¿ÉÁ¯°üÃÇ´´½¨Ò»¸ö×îеĿìÕչ鵵¡£
ʹÓà git archive ÃüÁîÍê³É´Ë¹¤×÷£º
$ git archive
master --prefix='project/' | gzip > `git describe
master`.tar.gz
$ ls *.tar.gz
v1.6.2-rc1-20-g8c5b85c.tar.gz |
Èç¹ûÓÐÈ˽«Õâ¸öѹËõ°ü½âѹ£¬Ëû¾Í¿ÉÒԵõ½ÄãµÄÏîÄ¿Îļþ¼ÐµÄ×îпìÕÕ¡£ ÄãÒ²¿ÉÒÔÒÔÀàËÆµÄ·½Ê½´´½¨Ò»¸ö zip
ѹËõ°ü£¬µ«´ËʱÄãÓ¦¸ÃÏò git archive ÃüÁî´«µÝ --format=zip Ñ¡Ï
$ git archive
master --prefix='project/' --format=zip > `git
describe master`.zip |
ÏÖÔÚÄãÓÐÁ˱¾´Î·¢²¼µÄÒ»¸ö tar °üºÍÒ»¸ö zip °ü£¬¿ÉÒÔ½«ÆäÉÏ´«µ½ÍøÕ¾»òÒÔµç×ÓÓʼþµÄÐÎʽ·¢Ë͸øÈËÃÇ¡£
ÖÆ×÷Ìá½»¼ò±¨
ÏÖÔÚÊÇʱºò֪ͨÓʼþÁбíÀïÄÇЩºÃÆæÄãµÄÏîÄ¿·¢ÉúÁËʲôµÄÈËÁË¡£ ʹÓà git shortlog ÃüÁî¿ÉÒÔ¿ìËÙÉú³ÉÒ»·Ý°üº¬´ÓÉϴη¢²¼Ö®ºóÏîÄ¿ÐÂÔöÄÚÈݵÄÐÞ¸ÄÈÕÖ¾£¨changelog£©ÀàÎĵµ¡£
Ëü»á¶ÔÄã¸ø¶¨·¶Î§ÄÚµÄËùÓÐÌá½»½øÐÐ×ܽ᣻±ÈÈ磬ÄãµÄÉÏÒ»´Î·¢²¼Ãû³ÆÊÇ v1.0.1£¬ÄÇôÏÂÃæµÄÃüÁî¿ÉÒÔ¸ø³öÉϴη¢²¼ÒÔÀ´ËùÓÐÌá½»µÄ×ܽ᣺
$ git shortlog
--no-merges master --not v1.0.1
Chris Wanstrath (8):
Add support for annotated tags to Grit::Tag
Add packed-refs annotated tag support.
Add Grit::Commit#to_patch
Update version and History.txt
Remove stray `puts`
Make ls_tree ignore nils
Tom Preston-Werner (4):
fix dates in history
dynamic version method
Version bump to 1.0.2
Regenerated gemspec for version 1.0.2 |
Õâ·ÝÕû½àµÄ×ܽá°üÀ¨ÁË×Ô v1.0.1 ÒÔÀ´µÄËùÓÐÌá½»£¬²¢ÇÒÒѾ°´ÕÕ×÷Õß·ÖºÃ×飬Äã¿ÉÒÔͨ¹ýµç×ÓÓʼþ½«ÆäÖ±½Ó·¢Ë͵½ÁбíÖС£
×îºó×ܽá
ÄãÏÖÔÚÄÜ×ÔÈçµØÊ¹Óà Git ΪÏîÄ¿×ö³ö¹±Ïס¢Î¬»¤×Ô¼ºµÄÏîÄ¿»ò²ÉÄÉÆäËûÓû§µÄ¹±Ï×ÁË¡£ ¹§Ï²Äã³ÉΪÁËÒ»¸ö¸ßЧµÄ
Git ¿ª·¢Õߣ¡ ÏÂÒ»ÕÂÖУ¬Ä㽫»áѧµ½ÈçºÎʹÓùæÄ£×î´ó×îÁ÷ÐÐµÄ Git ÍйܷþÎñ£¬GitHub¡£ |