±à¼ÍƼö: |
±¾ÎÄÀ´×Ôoschina£¬ÎÄÕÂÈÕ³£Ê¹ÓÃGitʱÓöµ½µÄ³£¼ûµÄ´íÎó¼°Æä·¢ÉúÔÒòµÈÏà¹ØÄÚÈÝ¡£ |
|
ÎÒÃÇÔÚÈÕ³£Ê¹ÓÃGitµÄ¹ý³ÌÖо³£»á·¢ÉúһЩÒâÍâÇé¿ö£¬Èç¹û´¦Àí²»µ±£¬Ôò¿ÉÄÜ»á³öÏÖ´úÂ붪ʧµÄ¼ÙÏó¡£±¾ÎĽ«Õë¶ÔIDEA&GitÈÕ³£¿ª·¢ÖеÄһЩ³¡¾°£¬ÎªÄã²ã²ã²¦¿ªÃÔÎí£¬½âÎö³£¼ûµÄ´íÎó¼°Æä·¢ÉúÔÒò£¬ÈÃÄã´Ó´Ë²»ÔÙ¾åÅ´úÂë³åÍ»»ò¶ªÊ§ÎÊÌâ¡£
Ϊ¼ò»¯ÎÊÌ⣬±¾ÎļÙÉèËùÓÐÍŶӳÉÔ±¾ùÔÚͬһ·ÖÖ§ÉÏ¿ª·¢¡£
ÎÄÖиüвÙ×÷ÊÇÖ¸ÔÚIDEAÖе¥»÷²Ëµ¥VCS-Update Project...¡£
1. ³£¼û¹¤×÷Á÷³Ì
ͨ³£µ±ÄãÔçÉϵ½¹«Ë¾´ò¿ªµçÄÔ£¬Ê×ÏÈÖ´ÐиüвÙ×÷(µ¥»÷IDEA²Ëµ¥VCS-Update Project...)£¬È»ºó¿ªÊ¼Óä¿ìµØ±àÂë¡£±àÂëÍê³Éºóͨ³£ÒªÖ´ÐÐÒÔϼ¸¸ö²Ù×÷£º
¸üвÙ×÷
´´½¨±¾´ÎÌá½»
ÍÆËÍÔ¶³Ì·ÖÖ§
1.1 ¸üвÙ×÷
ΪÁ˱£Ö¤GitÓµÓÐÒ»¸ö¼ò½àµÄÌá½»ÀúÊ·£¬ÔÚÌύ֮ǰÐèÒªÏÈÖ´ÐиüвÙ×÷£¬¼´ÔÚIDEAÖÐÒÀ´Îµ¥»÷²Ëµ¥VCS-Update
Project...£¬»òÕß°´ÏÂCtrl+T£¬µ¯³öÈçÏ´°¿Ú£º

´°¿Ú×ó²àÑ¡Ôñ¸üÐÂÀàÐÍ(Update Type)£º
Merge£º¸üÐÂʱִÐкϲ¢²Ù×÷¡£µÈ¼ÛÓÚÖ´ÐÐgit fetch && git merge»òÕßgit
pull --no-rebase¡£
Rebase£º¸üÐÂʱִÐÐrebase²Ù×÷¡£µÈ¼ÛÓÚÖ´ÐÐgit fetch && git
rebase»òÕßgit pull --rebase¡£
Branch Default£ºÔÚ.git/configÎļþÖÐÖ¸¶¨²»Í¬·ÖÖ§µÄ¸üÐÂÀàÐÍ¡£
´°¿ÚÓÒ²àÑ¡ÔñÔÚ¸üÐÂǰ¹¤×÷Ŀ¼(Working Directory)µÄÇåÀí·½Ê½£º
Using Stash£ºÊ¹ÓÃgit stash´¢²Ø±¾µØÐ޸ġ£
Using Shelve£ºÊ¹ÓÃIDEAÄÚÖõÄShelve¹¦ÄÜ´¢²Ø±¾µØÐ޸ġ£
ͨ³£Ñ¡ÔñMergeºÍUsing Stash¼´¿É£¬µ¥»÷OKºó£¬IDEAÖ´Ðв½ÖèÈçÏ£º
µÚ1²½£ºÊ¹ÓÃgit stash´¢²Ø±¾µØÐÞ¸Ä
µÚ2²½£ºÖ´ÐÐgit fetch && git mergeÀȡԶ³Ì·ÖÖ§²¢ºÏ²¢
µÚ3²½£ºÖ´ÐÐgit stash pop»Ö¸´´¢²Ø
ÓÐЩͬѧ¿ÉÄܸüϰ¹ßÏÈ´´½¨±¾µØÌá½»£¬È»ºóÔÚÖ´ÐиüвÙ×÷£¬ÕâÑù»áµ¼ÖÂGit×Ô¶¯Éú³ÉÒ»¸öºÏ²¢Ìá½»£¬µ¼ÖÂÌá½»ÀúÊ·²»¹»¼ò½à¡£
1.2 ´´½¨±¾´ÎÌá½»
¸üÐÂÍê³Éºó£¬ÔÚIDEAÖе¥»÷²Ëµ¥VCS-Commit...´´½¨±¾´ÎÌá½»¡£
1.3 ÍÆËÍÔ¶³Ì·ÖÖ§
È»ºóµ¥»÷VCS-Git-Push...ÍÆËÍÖÁÔ¶³Ì·ÖÖ§¡£
2. ³£¼ûÎÊÌâ·ÖÎö
ÔÚÉÏÃæµÄ3²½Ö´Ðв½ÖèÖУ¬µÚ2²½ºÍµÚ3²½·¢ÉúÒâÍâµÄ·çÏÕ×î¸ß£¬×î³£¼ûµÄÁ½ÖÖÒâÍâÇé¿öÊdzåÍ»ºÍÎļþÕ¼Óã¬ÏÂÃæÎÒÃÇ·Ö±ðÌÖÂÛ¡£
2.1 ºÏ²¢Ô¶³Ì·ÖÖ§³åÍ»
Èç¹ûÔÚÖ´ÐиüвÙ×÷֮ǰ£¬ÄãµÄ±¾µØ·ÖÖ§ÒѾ´´½¨¹ýÌá½»£¬²¢ÇÒÉÐÎ´ÍÆËÍÖÁÔ¶³Ì·ÖÖ§£¬ÔòÔÚµÚ2²½Ö´ÐÐgit mergeʱºÜ¿ÉÄܻᷢÉú³åÍ»¡£

´Ëʱ¹Ø±ÕÉÏÃæµÄ³åÍ»´°¿Ú£¬Version Control¹¤¾ß´°¿ÚÏÔʾÄÚÈÝÈçÏ£º

´°¿ÚÓÒϽÇÔ±¾ÏÔʾ·ÖÖ§Ãû³ÆµÄλÖñä³ÉÁËMerging master£¬±íʾ±¾µØ·ÖÖ§masterĿǰ´¦ÓÚÕýÔںϲ¢×´Ì¬¡£µ¥»÷×ó²àºì¿òÄÚResolve°´Å¥¿ÉÒÔÔٴε÷³ö´¦Àí³åÍ»´°¿Ú¡£»ùÓÚIDEAµÄͼÐνçÃæÊÖ¶¯½â¾ö³åÍ»ºó£¬IDEA»á×Ô¶¯½«¸ÃÎļþ¼ÓÈëÔÝ´æÇø(¼ÓÈëÔÝ´æÇø¼´±íʾ³åÍ»½â¾öÍê³É)£¬×îºóÖ´ÐÐÒ»´ÎÌá½»±ã¿ÉÒÔÍê³É³åÍ»´¦Àí¡£
2.2 »Ö¸´´¢²Ø³åÍ»
ÔÚ¸üвÙ×÷µÄµÚ3²½Ö´ÐÐgit stash pop»Ö¸´´¢²ØÊ±£¬´¢²ØÄÚÈÝ¿ÉÄÜÓë¸Õ¸üеÄÄÚÈÝ·¢Éú³åÍ»¡£

»Ö¸´´¢²ØÊ±·¢ÉúµÄ³åÍ»¸úÉÏÃæµÄºÏ²¢³åÍ»ÉÔ΢ÓÐÐ©Çø±ð£¬Ê×ÏÈÊÇÓÒϽǵķÖÖ§Ãû³ÆÃ»ÓÐMerging×ÖÑù£¬ÁíÍâ»áÔÚÓÒϽǶîÍⵯ³öÒ»¸öС´°Ìáʾ»Ö¸´´¢²ØÊ§°Ü£¬²¢ÇÒ¸æËßÄã²»Óõ£ÐÄ£¬ËùÓеÄÐ޸ͼÔÚstashÁбíÖУ¬²¢Ã»ÓжªÊ§¡£²é¿´stashÁбíµÄ·½Ê½Îªµ¥»÷²Ëµ¥VCS-Git-UnStash
Changes...:

Ñ¡ÖÐÁбí×îÉÏÃæµÄÌõÄ¿£¬È»ºóµ¥»÷Apply Stash£¬Ö®Ç°µÄÐ޸ľͻáÖØÐ»ص½¹¤×÷Ŀ¼¡£
ÎÒÃǼÌÐø»Øµ½³åÍ»ÎÊÌ⣬ÊÖ¶¯½â¾ö³åÍ»ºóÖ´ÐÐÒ»´ÎÌá½»¾Í¿ÉÒÔÁË¡£Èç¹ûÔÚ½â¾ö³åÍ»¹ý³ÌÖз¢ÉúÁËÎó²Ù×÷£¬¿ÉÒÔÓÒ»÷Default
Changelist-Revert...Çå¿Õµ±Ç°¹¤×÷Ŀ¼ÄÚÈÝ£¬ÖØÐÂÖ´ÐÐÒ»´ÎApply Stash£¬È»ºóÖØ¸´½â¾ö³åÍ»¹ý³Ì¡£

2.3 ÎļþÕ¼ÓôíÎó
ÔÚÖ´ÐеÚ2²½git mergeʱ£¬¿ÉÄÜ»áÒòΪÎļþ±»Õ¼Óõ¼ÖÂÖ´ÐÐʧ°Ü¡£ÀýÈçÏîÄ¿¿ÉÄÜÒýÈëÁËһЩjarÎļþ£¬ÕâЩjarÎļþÔÚ±¾µØÒѾ±»JVM¶¯Ì¬¼ÓÔØÁË£¬Èç¹ûÓÐÆäËüÈ˸üÐÂÁ˸ÃjarÎļþ²¢ÇÒÍÆË͵½ÁËÔ¶³Ì·ÖÖ§£¬µ±Äã¸üÐÂʱ±ã»áÓöµ½ÉÏÊöÎÊÌâ¡£

¶ÔÓÚÕâÖÖ´íÎóµÄ½â¾ö·½·¨ºÜ¼òµ¥£¬Ê×ÏȽâ³ýÎļþµÄÕ¼ÓÃ״̬£¬ÀýÈçÖÕÖ¹±¾µØJVM½ø³Ì£¬È»ºóÔٴεã»÷VCS-Update¡£
ÔÚÖ´ÐеÚ3²½git stash popʱ£¬Ò²»áÒòΪÎļþ±»Õ¼Óõ¼ÖÂÖ´ÐÐʧ°Ü¡£ÀýÈçÄã¸üÐÂÁËij¸öjarÎļþ£¬µ±»Ö¸´´¢²ØÊ±¿ÉÄÜÒòΪ¸ÃjarÎļþ±»Õ¼Óõ¼Ö»ָ´Ê§°Ü¡£

¶ÔÓÚÕâÖÖ´íÎó£¬ÄãÐèÒªÊ×ÏȽâ³ýÎļþÕ¼ÓÃ״̬£¬È»ºóÊÖ¶¯Ö´ÐÐunstash²Ù×÷¡£
3. ÏÈÌá½»»¹ÊÇÏȸüУ¿ÊǸöÎÊÌ⣡
3.1 ÏÈÌá½»ºó¸üе¼ÖµÄÎÊÌâ
3.1.1 ·¢Éú³åͻʱÄÑÒÔ´¦Àí
Èç¹ûÏÈÌá½»£¬µ«ÊÇÔÚ¸üÐÂʱȴ·¢ÉúÁ˳åÍ»£¬Õâ¾ÍÒâζ×ÅÄã¸Õ¸Õ´´½¨µÄÌá½»ÆäʵÊÇÓÐÎÊÌâµÄ£¬Í¨³£ÊÇÍŶӹµÍ¨»òÊÇ·Ö¹¤³öÁËÎÊÌ⣬µ«ÊDz»¹ÜÕâô˵£¬±ðÈËÒѾÇÀÏÈÒ»²½pushÁË£¬ÄãµÄÌá½»±ã»á±»¾ÜÖ®ÃÅÍâ¡£¼´±ãÊÇÊÖ¶¯½â¾öÁ˳åÍ»£¬Õâ¸öÌá½»±£ÁôÔÚÀúÊ·ÖÐÒ²»á³ÉΪÒþ»¼£¬Èç¹ûÓÐÆäËûÈËreset»ØÕâ¸öÌá½»¼ÌÐø¹¤×÷£¬ÔòÔںϲ¢ÆäËü·ÖÖ§ÄÚÈÝʱ·¢Éú³åÍ»µÄ¸ÅÂÊ»á´ó´óÔö¼Ó£¬ËùÒÔ×îºÃ´¦Àí·½Ê½ÊÇÏȳ·ÏúÕâ¸öÌá½»(reset
--soft HEAD~)£¬È»ºó¸üв¢½â¾ö³åÍ»£¬×îºó´´½¨Ò»¸öеÄÌá½»¡£
3.1.2 ´íÎóµÄ´¦Àí³åÍ»·½Ê½
ÔÚ·¢Éú³åÍ»ºó£¬ÓÐЩͬѧ¿ÉÄÜ»áÏëµ½ÏÂÃæµÄ´¦Àí·½Ê½£º
Çå¿Õµ±Ç°¹¤×÷¿Õ¼ä
µ÷Õû³åÍ»²¿·ÖµÄ´úÂë
È»ºóÔÙ´ÎÖ´ÐиüвÙ×÷
ÉÏÃæµÄ´¦Àí·½Ê½ºÜÃ÷ÏÔÊDz»¿ÉÐеģ¬ÒòΪÄãµ÷ÕûµÄ´úÂëÊ×Ñ¡»á±»IDEA´¢²Ø£¨stash£©ÆðÀ´£¬È»ºóÔÚ¸üеĵÚ2²½ÖÐÈÔÈ»»á·¢Éú³åÍ»£¬²¢ÇÒ·¢Éú³åͻʱ£¬ÄãµÄÐÞ¸ÄÉÐδ»Ö¸´´¢²Ø(unstash)£¬µ¼Ö¿´ÆðÀ´Äãµ÷ÕûµÄ´úÂë²»¼ûÁË£¬ÈÃÈËÃþ²»×ÅÍ·ÄÔ¡£
3.1.3 Rebase»á¸ÄдÌá½»ÀúÊ·
Èç¹ûÔÚIDEAµÄ¸üд°¿ÚÑ¡Ôñ¸üÐÂÀàÐÍΪRebase£¬ÔòµÈ¼ÛÓÚÊÖ¶¯Ö´ÐÐgit fetch &&
git rebase»òÕßgit pull --rebaseÃüÁî¡£ÕâÑùµÄºÃ´¦ÊDz»»áÉú³ÉÒ»¸ö×Ô¶¯ºÏ²¢Ìá½»£¬±£³Ö¼ò½àµÄÌá½»ÀúÊ·¡£µ«ÊÇÐèҪעÒâµÄÊÇ£¬RebaseÖ®ºó£¬ÄãµÄ±¾µØÌá½»»á±»¸Äд£¬ËäÈ»Ìá½»ÐÅÏ¢Ò»Ñù£¬µ«ÊÇcommit
hashÒѾ¸Ä±äÁË£¬ÈçÏÂͼËùʾ£º

ÔÚÖ´ÐÐÍêÈçϵÄRebaseÃüÁîºó£¬
$ git checkout
dev
$ git rebase master |
Ö´Ðнá¹ûΪ£º

Çë×¢Ò⣬½á¹ûÖеÄv4ºÍv5Ìá½»ÒѾ±»¸ÄдÁË¡£
3.2 ÍÆ¼öÏȸüкóÌá½»
Èç¹ûÄãÊÂÏÈÖªµÀ»á·¢Éú³åÍ»£¬ÏàÐÅÄãÒ»¶¨²»»áÑ¡ÔñÏÈÌá½»´úÂ룬µ«ÊdzåÍ»ÊDz»¿É±ÜÃâµÄ£¬Õâ¾ÍÒªÇóÎÒÃÇÆ½Ê±Ñø³ÉÁ¼ºÃµÄ¿ª·¢Ï°¹ß¡£ÓëÆä½â¾öÌá½»ºóµÄ³åÍ»£¬²»È羡ÔçµØ½â¾ö³åͻȻºóÌá½»£¬ÕâÑù²»½ö¿ÉÒÔ¼õÉÙÒ»¸öÎÞÒâÒåµÄ×Ô¶¯ºÏ²¢Ìá½»£¬¶øÇÒ¿ÉÒÔÔÚ³åÍ»·¢Éúʱ¼ò»¯´¦Àí¹ý³Ì¡£
3.3 Ñø³ÉÁ¼ºÃϰ¹ß
ΪÁ˾¡Á¿±ÜÃâ³åÍ»·¢Éú£¬½¨ÒéÑø³ÉÈçÏ¿ª·¢Ï°¹ß£º
±àÂëǰÏȸüÐÂ
ÌύǰÏȸüÐÂ
Ìύǰ¼ì²éÊÇ·ñÓбàÒë´íÎó
Ìá½»Á£¶È¾¡¿ÉÄÜС£¬ÃèÊö¾¡¿ÉÄÜ׼ȷ
ÐÞ¸ÄÁ˹«¹²Îļþ£¬¾¡Ôç֪ͨÆäËû³ÉÔ±¸üÐÂ
×îºóÒ»Ìõ£¬Ò²ÊÇ×îÖØÒªµÄ£¬ÍŶӷֹ¤ÒªÃ÷È· |