Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Git µÄ»ù±¾²Ù×÷¡¢¿ª·¢Á÷³Ì¡¢ÊµÓü¼ÇÉ×ܽá
 
À´Ô´£ºÌÚÑ¶ÔÆ ·¢²¼ÓÚ£º 2017-10-24
  3238  次浏览      27
 

Git ÊÇʲô£¿

Git ÊÇÒ»¸ö·Ö²¼Ê½µÄ´úÂë¹ÜÀíÈÝÆ÷£¬±¾µØºÍÔ¶¶Ë¶¼±£ÓÐÒ»·ÝÏàͬµÄ´úÂë¡£

Git ²Ö¿âÖ÷ÒªÊÇÓÉÊÇÈý²¿·Ö×é³É£º±¾µØ´úÂ룬»º´æÇø£¬Ìá½»ÀúÊ·£¬Õ⼸ºõÊÇËùÓвÙ×÷µÄ±¾ÖÊ£¬µ«ÊÇΪÁËÎÄÕ¸ü¼Ó¼òµ¥Ò×¶®£¬¾Í²»Î§ÈÆÕâ¿éÕ¹¿ªÁË£¬ÓÐÐËȤµÄ¿ÉÒÔÈ¥Á˽âÏ¡£

¿ªÃżûɽ£¬ÎÒÃÇÖ±½ÓÀ´ËµËµ Git ÓÐÄÄЩ³£¼ûµÄ²Ù×÷¡£

Git ÓÐÄÄЩ³£¹æ²Ù×÷£¿

ÎÒÃǼòµ¥ËµËµGitÓÐÄÄЩ³£¹æ²Ù×÷£¬Äܹ»ÈÃÎÒÃÇÓ¦¸¶¼òµ¥µÄ¿ª·¢ÐèÇó¡£

¿Ë¡´úÂë

¿Ë¡Զ¶Ë´úÂë

git clone http://git.code.oa.com/QCFE/sqlserver.git

²é¿´±¾µØµÄ´úÂë״̬

// ¿ÉÒÔÃ÷È·µÄ³ÊÏÖ³ö±¾µØ²Ö¿âµÄ״̬
// ÄÄЩÎļþ·¢Éú¸Ä¶¯£¬ÄÄЩÎļþÒѾ­Ìá½»µ½±¾»ú
// ÒÔ¼°Ò»Ð©²Ù×÷ָʾ¡£
git status

ͬ²½Ô¶¶Ë·ÖÖ§±ä»¯

// À­È¡Ö¸¶¨·ÖÖ§µÄ±ä»¯
git fetch origin master
// À­È¡ËùÓзÖÖ§µÄ±ä»¯
git fetch
// À­È¡ËùÓзÖÖ§µÄ±ä»¯£¬²¢ÇÒ½«Ô¶¶Ë²»´æÔڵķÖ֧ͬ²½ÒƳý¡¾ÍƼö¡¿
git fetch -p

ͬ²½Ô¶¶Ë´úÂë±ä»¯¡£

// ¶¼ÊÇÏÈ git fetch£¬È»ºóÖ´Ðкϲ¢²Ù×÷
// ²»Í¬µÄÊÇ£¬git pull Ö´ÐеÄÊÇ git merge£¬git pull -r Ö´ÐеÄÊÇgit rebase
git pull origin master
git pull -r origin master

¹ØÓÚ git merge ºÍ git rebase ¸÷×ÔµÄÓÅÁÓ£¬ºóÎÄ»áÏêϸ½éÉÜ¡£

Õⲿ·ÖÖ÷Òª½éÉÜÁ˹ØÓÚ´úÂë¿Ë¡£¬Í¬²½Ô¶¶Ë´úÂë±ä»¯µÄÏà¹Ø²Ù×÷¡£½ÓÏÂÀ´£¬ÎÒÃÇ¿´¿´¹ØÓÚ±¾µØ´úÂëµÄһЩ²Ù×÷¡£

²Ù×÷ commit

Ê×ÏÈÎÒÃÇÒªÃ÷È·Ò»¸ö¸ÅÄ¾ÍÊÇÿ¸ö commit ¶¼ÊÇÒ»·ÝÍêÕûµÄ´úÂë״̬£¬ÓÃÒ»¸ö commitID À´Î¨Ò»±êÖ¾¡£

´Óij¸ö½Ç¶ÈÉÏÀ´Ëµ£¬Gitά»¤µÄ¾ÍÊÇÒ»¸öcommitIDÊ÷£¬·Ö±ð±£´æ×Ų»Í¬×´Ì¬ÏµĴúÂë¡£

ËùÒÔÄã¶Ô´úÂëµÄÈκÎÐ޸ģ¬×îÖÕ¶¼»á·´Ó³µ½ commit ÉÏÃæÈ¥¡£

ÐÂÔö commit

// Ìí¼ÓÎļþµ½»º´æÇø£¬È»ºóÌá½»µ½±¾µØ²Ö¿â
git add files
git commit -m 'Ìá½»±¸×¢'

³·Ïú commit

// »á½«Ìá½»¼Ç¼»Ø¹ö£¬´úÂë²»»Ø¹ö
git reset b14bb52
// »á½«Ìá½»¼Ç¼ºÍ´úÂëÈ«²¿»Ø¹ö
git reset --hard b14bb52
// ½«²¿·Ö´úÂëÎļþ»Ø¹ö
git checkout -- files

ºÏ²¢ commit

ºÏ²¢ commit£¬±¾ÖÊÉϺϲ¢Á½·Ý²»Í¬×´Ì¬ÏµĴúÂë¡£

// Git ÌṩÁËÁ½Öֺϲ¢ commit µÄ·½Ê½
git merge master
git rebase master

ÄÇô git rebase ºÍ git merge µ½µ×ÓÐÊ²Ã´Çø±ðÄØ£¿

mergeÊÇÁ½¸ö·ÖÖ§´¦Àí³åÍ»ºó£¬ÐÂÔöÒ»¸ö commit ×·¼Óµ½masterÉÏ¡£

rebaseÊǽ«someFeature·ÖÖ§ÉϵÄcommit¼Ç¼׷¼Óµ½Ö÷·ÖÖ§ÉÏ£¬ÖµµÃ×¢ÒâµÄÊÇ£¬Õâ¸öʱºòËûµÄcommitÆäʵÒѾ­·¢Éú±ä»¯¡£

Ïà¶ÔÀ´Ëµ£¬git merge ´¦Àí³åÍ»¸üÖ±½Ó£¬¶øgit rebase Äܹ»±£Ö¤ÇåÎúµÄ commit ¼Ç¼¡£

ºÏ²¢ commit µÄʱºò£¬Í¨³£»á·¢Éú³åÍ»¡£

¿ÉÒÔÈ«¾ÖËÑË÷ÌØÊâ×Ö·û±ÈÈç<<<£¬ÕÒµ½ÐèÒª´¦ÀíµÄ´úÂëλÖã¬È»ºóÈÏÕæ·ÖÎöÓ¦¸Ã±£ÁôÄÄÒ»²¿·Ö´úÂë¡£

ÔÚÍŶÓЭ×÷µÄʱºò£¬·ÖÖ§ÊDZز»¿ÉÉٵġ£ÄÇôӦ¸ÃÈçºÎ¶Ô·ÖÖ§½øÐвÙ×÷ÄØ£¿

²Ù×÷·ÖÖ§

ËùνµÄ·ÖÖ§Æäʵ¾ÍÊÇÒ»¸öÖ¸Ïò commitID µÄÖ¸Õ룬Äã¿ÉÒÔÈ¥.git/refs/headsÀïÈ¥¿´¿´¡£

ͨ³£Çé¿öÏ£¬ÎÒÃǽ¨Òé·ÖÖ§ÖÁÉÙÄܹ»Ã÷È·µÄ±ê¼Ç¹¦ÄÜÃû³Æ£¬Èç¹ûÄܱê¼ÇÓû§¾Í¸üºÃÁË£¬±ÈÈçqixiu/feature¡£

²é¿´·ÖÖ§

¿ÉÒÔͬʱ¿´µ½±¾µØ·ÖÖ§ºÍÔ¶¶Ë·ÖÖ§£¬ÅäºÏÉÏǰÎĽéÉÜµÄ git fetch -p ¿ÉÒÔµÚһʱ¼ä²é¿´µ½×îеķÖÖ§ÐÅÏ¢¡£

ÐÂÔö±¾µØ·ÖÖ§

Æäʵ¾ÍÊÇ´´½¨Ò»¸öÖ¸ÕëÖ¸Ïòijһ¸ö commitID¡£

// git branch qixiu/feature + git checkout qixiu/feature
// ´Óµ±Ç°·ÖÖ§ÐÂÔöÒ»¸öеķÖÖ§qixiu/feature
// Ò»°ãÇé¿öÏ£¬ÎÒÃÇÓ¦¸Ã´Ómaster»òÕ߯äËûÎȶ¨·ÖÖ§À´ÐÂÔö·ÖÖ§
git checkout -b qixiu/feature // н¨·ÖÖ§
git checkout qixiu/feature // Çл»·ÖÖ§

ɾ³ý±¾µØ·ÖÖ§

Æäʵ¾ÍÊÇÒÆ³ýÒ»¸öÖ¸Ïò commitID µÄÖ¸Õë¡£

// ɾ³ý±¾µØ·ÖÖ§£¬Èç¹û±¾µØ»¹ÓÐδºÏ²¢µÄ´úÂ룬Ôò²»ÄÜɾ³ý git branch -d qixiu/feature // Ç¿ÖÆÉ¾³ý±¾µØ·ÖÖ§ git branch -D qixiu/feature

ÐÂÔöÔ¶¶Ë·ÖÖ§

ͨ³£Çé¿öÏ£¬ÎÒÃÇÊÇн¨±¾µØ·ÖÖ§£¬È»ºó¸üе½Ô¶¶ËµÄ·½Ê½À´ÐÂÔöÒ»¸öÔ¶¶Ë·ÖÖ§

git push origin qixiu/feature

ɾ³ýÔ¶¶Ë·ÖÖ§

ͬÑù£¬ÎÒÃÇÒ²ÊÇͨ¹ý¸üе½Ô¶¶ËµÄ·½Ê½À´É¾³ýÒ»¸öÔ¶¶Ë·ÖÖ§

// µÈͬÓÚgit push origin -d qixiu/feaure
git push origin :qixiu/feature

¼òµ¥»ã×ÜÒ»ÏÂ

ÉÏÃæËµµÄ¿ÉÄÜÓÐЩ·ÖÉ¢£¬Õâ¶ù¼òµ¥×ܽáÒ»ÏÂÓÐÄÄЩ¾­³£Ê¹ÓõIJÙ×÷£º

git status // ²é¿´±¾µØ´úÂë״̬
git add files // Ìí¼Ó´úÂëµ½»º´æÇø
git commit -m 'Ìá½»ÄÚÈݵı¸×¢' // Ìá½»´úÂëµ½±¾µØ²Ö¿â
git checkout -b branchName // ²»¼Ó-b¾ÍÊÇÆÕͨÇл»·ÖÖ§
git fetch -p // ͬ²½Ô¶¶Ë·Ö֧״̬
git pull -r origin branchName // fetchÔ¶¶Ë´úÂëµ½±¾µØ£¬²¢ÇÒÒÔrebaseµÄ·½Ê½ºÏ²¢´úÂë
git push origin branchName // ¸üб¾µØ´úÂëµ½Ô¶¶Ë

ÒÔÉϼ¸ÌõÃüÁîÒѾ­Äܹ»Ó¦¸¶ÈÕ³£µÄ²Ù×÷£¬ÉÔ΢¸´ÔÓһЩµÄ³¡¾°ºóÎÄ»á½éÉÜ

»ùÓÚ»ù±¾²Ù×÷£¬ÔÚʵ¼ÊÏîÄ¿ÖУ¬ÎÒÃÇÓ¦¸ÃÔõôÀûÓà Git ʵÏÖЭ×÷ÄØ£¿

Git ÓÐÄÄЩ±È½ÏºÃµÄʵ¼ù£¿

Git ÓÐһЩ³ÉÊìµÄ¿ª·¢Á÷³Ì£¬±È½ÏÖ÷Á÷µÄÓÐÁ½ÖÖ£º»ùÓÚ¹¦ÄÜ·ÖÖ§µÄ¿ª·¢Á÷³Ì ºÍ GitFlow¿ª·¢Á÷³Ì¡£

Ïà¶ÔÀ´Ê±£¬ÎÒ¸üÍÆ¼öǰÕߣ¬Èç¹ûÊǸ´ÔӵĴóÐÍÏîÄ¿£¬ÍƼöGitFlow¿ª·¢Á÷³Ì¡£

½ÓÏÂÀ´£¬¼òµ¥½éÉÜÏÂÕâÁ½ÖÖЭ×÷ģʽ¡£

»ùÓÚ¹¦ÄÜ·ÖÖ§µÄЭ×÷ģʽ

»ùÓÚ¹¦ÄÜ·ÖÖ§µÄ¿ª·¢Á÷³ÌÆäʵ¾ÍÊÇÒ»¾ä»°£ºÓ÷ÖÖ§À´³ÐÔØ¹¦ÄÜ¿ª·¢£¬¿ª·¢½áÊøÖ®ºó¾ÍºÏ²¢µ½ master ·ÖÖ§¡£

ËûµÄÓŵãÊÇÄܹ»±£Ö¤master·ÖÖ§µÄÕû½à£¬Í¬Ê±»¹ÄÜÈ÷ÖÖ§´úÂëÂß¼­¼¯ÖУ¬Ò²±ãÓÚ CodeReview¡£

·ÖÖ§ÃüÃû¹æ·¶

ÍÆ¼öʹÓÃÈçϸñʽ£ºownerName/featureName¡£

ÕâÑù¼È±ãÓÚÖªµÀ·ÖÖ§¸²¸ÇµÄ¹¦ÄÜ£¬Ò²±ãÓÚÕÒµ½·ÖÖ§µÄ¸ºÔðÈË¡£ÒÔºóÇåÀí·ÖÖ§µÄʱºòÒ²ºÜ·½±ã¡£

¿ª·¢Á÷³Ì

´Ó master ÇгöÒ»¸öзÖÖ§

git checkout -b qixiu/newFeature

¿ª·¢Ò»Ð©Ð¹¦ÄÜ£¬È»ºóÌá½»

½¨Òé½Ï¶àƵ´ÎµÄÌá½»´úÂëµ½±¾µØ²Ö¿â£¬ÒÔ±ãÄܹ»¸üÁé»îµÄ±£´æ»ò³·ÏúÐ޸ġ£

´ËÍâΪÁ˱£Ö¤Ìá½»ÈÕÖ¾µÄÇåÎú£¬½¨Ò鱸עÇå³þµÄ×¢ÊÍ¡£

git status
git add files // ÌôÑ¡ÐèÒªÌá½»µÄÎļþ£¬»òÕßÈ«²¿Ìá½»
git commit -m 'Ìá½»±¸×¢'
git push origin qixiu/newFeature

Èç¹û¹¦ÄÜ¿ª·¢Íê³É£¬¿ÉÒÔ·¢ÆðÒ»¸öCodeReviewÁ÷³Ì

Èç¹û´úÂë²âÊÔͨ¹ý£¬ºÏ²¢µ½ master£¬È»ºó×¼±¸ÉÏÏß

// ÈßÓà°æ ºÏ²¢µ½ master
git checkout master
git pull -r origin master
git checkout qixiu/newFeature
git rebase master // ´¦Àí³åÍ»
git checkout master
git merge qixiu/newFeature
git push origin master
// ¾«¼ò°æ ºÏ²¢µ½ master
git checkout qixiu/newFeature
git pull -r origin master // ½«masterµÄ´úÂë¸üÐÂÏÂÀ´£¬²¢ÇÒrebase´¦Àí³åÍ»
git push origin master // ½«±¾µØ´úÂë¸üе½Ô¶¶Ë

Óм¸µãÐèҪעÒ⣺

²»ÒªÔÚmasterºÏ²¢´úÂ룬±£Ö¤masterµÄ¿ÉÓÃÐÔºÜÖØÒª¡£

È·±£ÔÚÕýÈ·µÄ·ÖÖ§Ö´ÐÐÕýÈ·µÄ²Ù×÷¡£

ÎÞÂÛÊÇ´¦Àí³åÍ»»¹ÊǸüÐÂÔ¶¶Ë´úÂ룬Çë±£Óо´Î·Ö®ÐÄ¡£

µ½´Ë£¬Ò»¸öÕý³£µÄ»ùÓÚ¹¦ÄÜ·ÖÖ§µÄ¿ª·¢Á÷³Ì¾ÍÍê³ÉÁË¡£½ÓÏÂÀ´¿´¿´ÁíÍâÒ»¸ö¿ª·¢Á÷³Ì¡£

GitFlow ¿ª·¢Á÷³Ì

GitFlow ±ÈǰÎĽ²µÄ»ùÓÚ¹¦ÄÜ·ÖÖ§µÄ¿ª·¢Á÷³ÌÒª¸´Ôӵö࣬Ëü¸üÊʺϴóÐ͵ĸ´ÔÓÏîÄ¿¡£

ËüÎ§ÈÆÏîÄ¿·¢²¼Á÷³Ì¶¨ÒåÁËÒ»¸öÑϸñµÄ·ÖÖ§Ä£ÐÍ£¬ËùÓеĿª·¢Á÷³Ì¶¼ÊÇÎ§ÈÆÕâ¸öÑϸñµÄ·ÖÖ§Ä£ÐͽøÐС£

¶øÕâ¸öÄ£ÐÍÔ¼¶¨ÁËÿ¸ö·ÖÖ§µÄ½ÇÉ«£¬ÒÔ¼°ËûÃÇÈçºÎ¹µÍ¨¡£

ÎÒÃÇÏÈÀ´¿´¿´ GitFlow ¿ª·¢Á÷³ÌÖм¸¸öÔ¼¶¨µÄ·ÖÖ§£¬ÒÔ¼°ËûÃǸ÷×Գе£µÄ½ÇÉ«ÊÇÔõôÑùµÄ£¿

Master·ÖÖ§£ºÓÃÓÚ´æ·ÅÏßÉϰ汾´úÂ룬¿ÉÒÔ·½±ãµÄ¸ø´úÂë´ò°æ±¾ºÅ¡£

Develop·ÖÖ§£ºÓÃÓÚÕûºÏ Feature ·ÖÖ§¡£

Feature·ÖÖ§£ºÄ³¸ö¹¦ÄܵķÖÖ§£¬´Ó Develop ·ÖÖ§Çгö£¬²¢ÇÒ¹¦ÄÜÍê³ÉʱÓֺϲ¢»Ø Develop ·ÖÖ§£¬²»Ö±½ÓºÍMaster ·ÖÖ§½»»¥¡£

Release·ÖÖ§£ºÍ¨³£¶ÔÓ¦Ò»¸öµü´ú¡£½«Ò»¸ö°æ±¾µÄ¹¦ÄÜÈ«²¿ºÏ²¢µ½ Develop ·ÖÖ§Ö®ºó£¬´Ó Develop ÇгöÒ»¸öRelease ·ÖÖ§¡£Õâ¸ö·ÖÖ§²»ÔÚ×·¼ÓÐÂÐèÇ󣬿ÉÒÔÍê³É bug ÐÞ¸´¡¢ÍêÉÆÎĵµµÈ¹¤×÷¡£Îñ±Ø¼Çס£¬´úÂë·¢²¼ºó£¬ÐèÒª½«ÆäºÏ²¢µ½ Master ·ÖÖ§£¬Í¬Ê±Ò²ÒªºÏ²¢µ½ Develop ·ÖÖ§¡£

Hotfix·ÖÖ§£º½ô¼±ÐÞ¸´µÄ·ÖÖ§£¬ÊÇΨһ¿ÉÒÔ´Ó Master ÇгöµÄ·ÖÖ§£¬Ò»µ©ÐÞ¸´ÁË¿ÉÒԺϲ¢µ½ Master ·ÖÖ§ºÍ Develop ·ÖÖ§¡£

´Óÿ¸ö·ÖÖ§µÄ¹¦ÄܺÍÔ¼¶¨¿ÉÒÔ¿´³ö£¬ËüÁ÷³Ì¶àÔ¼Êø¶à£¬¶ÔÓÚС¹æÄ£Ó¦Óò¢²»Êʺϡ£

µ±È» GitFlow ÓÐһЩ¸¨Öú¹¤¾ß gitflow ¿ÉÒÔ×Ô¶¯»¯µÄÍê³ÉÕâЩÈÎÎñ£¬¶ÔÓÚ´óÐÍÏîĿҲºÜÓаïÖú¡£

Ç°Ãæ½²ÁË Git ÓÐÄÄЩ»ù±¾²Ù×÷£¬È»ºó½éÉÜÁËÁ½¸öÖ÷Á÷µÄ¹¤×÷Á÷³Ì¡£
½ÓÏÂÀ´ÎÒÃÇ¿´¿´ Git ÓÐÄÄÐ©ÌØ±ðµÄ¼¼ÇÉÖµµÃÒ»Ìá¡£

Git ÓÐÄÄЩС¼¼ÇÉ£¿

Git ²Ù×÷³ýÁË»ù±¾µÄ´úÂë¹ÜÀí¹¦ÄÜ£¬»¹ÓÐһЩС¼¼ÇÉÄܹ»ÈÃÄãÑÛǰһÁÁ¡£

git reflog£¬²é¿´²Ù×÷¼Ç¼

Õâ¸öÎÒÒ»¶¨Òª·ÅÔÚµÚÒ»¸ö½éÉÜ£¬ÒòΪËüÔø¾­Êý´Î½â¾ÈÁËÎҵĴúÂë

×Ðϸ¿´ÉÏͼ£¬reflog ¼Ç¼ÁËÄãËùÓÐµÄ git ÃüÁî²Ù×÷£¬¶ÔÓÚ¸´Ô­Ä³Ð©ÄªÃûÆäÃîµÄ³¡¾°»òÕ߻عöÎó²Ù×÷Óм«´óµÄ°ïÖú¡£

ÊÔÏëÒ»¸ö³¡¾°£ºÄãʹÓà git reset --hard commitID °Ñ±¾µØ¿ª·¢´úÂë»Ø¹öµ½ÁËÒ»¸ö֮ǰµÄ°æ±¾£¬¶øÇÒ»¹Ã»ÓÐÍÆµ½Ô¶¶Ë£¬Ôõô²ÅÄÜÕһضªÊ§µÄ´úÂëÄØ£¿

ÄãÈç¹ûʹÓà git log ²é¿´Ìá½»ÈÕÖ¾£¬²¢²»ÄÜÕһضªÆúµÄÄÇЩ commitID¡£

¶ø git reflog È´ÏêϸµÄ¼Ç¼ÁËÄãÿ¸ö²Ù×÷µÄ commitID£¬¿ÉÒÔÇáÒ×µÄÈÃÄ㸴ԭµ±Ê±µÄ²Ù×÷²¢ÇÒÕһضªÊ§µÄ´úÂë¡£

µ±È»£¬Èç¹ûÄ㶪ʧµÄ´úÂ붼ûÓÐÌá½»¼Ç¼£¬ÄÇô¹§Ï²Ä㣬ÄãµÄ´úÂëÕæµÄ¶ªÁË¡£

ѹËõÌá½»¼Ç¼

ÕâÒ²ÊÇÒ»¸öºÜʵÓõŦÄÜ£¬Ç°ÎÄÌá¹ý£¬ÎÒÃÇÔÚ¿ª·¢ÖеÄʱºò¾¡Á¿±£³ÖÒ»¸ö½Ï¸ßƵÂʵĴúÂëÌá½»£¬ÕâÑù¿ÉÒÔ±ÜÃⲻСÐÄ´úÂ붪ʧ¡£µ«ÊÇÕæÕýºÏ²¢´úÂëµÄʱºò£¬ÎÒÃDz¢²»Ï£ÍûÓÐÌ«¶àÈßÓàµÄÌá½»¼Ç¼£¬¶øÇÒ rebase ºÏ²¢´úÂëµÄʱºò£¬»á°Ñÿ¸ö commit ¶¼´¦Àíһϣ¬ÓÐʱºò»áÔì³ÉÈßÓàµÄ¹¤×÷¡£
ËùÒÔ£¬Ñ¹ËõÈÕÖ¾Ö®ºó²»¾­ÄÜÈà commit ¼Ç¼·Ç³£Õû½à£¬Í¬Ê±Ò²±ãÓÚʹÓà rebase ºÏ²¢´úÂë¡£

ÄÇô£¬ÈçºÎѹËõcommit¼ÇÂ¼ÄØ£¿

ʹÓà git log ÕÒµ½Æðʼ commitID

git reset commitID£¬ÇмDz»ÒªÓà --hard²ÎÊý

ÖØÐÂ git add && git commit

git push -f origin branchName£¬ÒòΪ»áÓгåÍ»£¬ËùÒÔÐèÒªÇ¿ÖÆ¸²¸ÇÔ¶¶Ë·ÖÖ§£¬ÇëÎñ±Ø½÷É÷¡£

ºÏ²¢µ½ master ÖУ¬È»ºó¸üÐÂÔ¶¶Ë master¡£

´ËÍ⻹ÓÐÁ½ÖÖѹËõÈÕÖ¾µÄ°ì·¨£º

git commit --amend£º×·¼Ó commit µ½ÉÏÒ»¸ö commit ÉÏ¡£

git rebase -i£ºÍ¨¹ý½»»¥Ê½µÄ rebase£¬Ìṩ¶Ô·ÖÖ§ commit µÄ¿ØÖÆ£¬´Ó¶ø¿ÉÒÔÇåÀí»ìÂÒµÄÀúÊ·¡£

´Óʵ¼ÊÓ¦ÓÃÀ´Ëµ£¬ÈýÖÖÈÕ־ѹËõ¶¼ºÜÓÅÐ㣬git reset¸ü¼òµ¥£¬git rebase -i¸üϸÄå¡£

git rebase£¬ºÏ²¢´úÂë

ǰÎļòµ¥½éÉÜÁËgit rebaseºÍ git merge µÄÇø±ð£¬Ì¹Âʽ²£¬ËûÃǸ÷ÓÐÓÅÁÓ¡£

git rebaseÄÜÈÃÄãµÄ commit ¼Ç¼·Ç³£Õû½à£¬ÎÞÂÛÊÇÏßÉϻعö»¹ÊÇ CodeReview ¶¼¸üÇáËÉ£»µ«È´ÊÇÒ»¸öÓÐÒþ»¼µÄ²Ù×÷£¬Ê¹ÓÃʱÎñ±Ø½÷É÷¡£

git merge ²Ù×÷¸ü°²È«£¬Í¬Ê±Ò²¸ü¼òµ¥£»µ«È´»áÔö¼ÓһЩÈßÓàµÄ commit ¼Ç¼¡£

Õâ¶ù¼òµ¥ËµËµ rebase µÄºÏ²¢Á÷³ÌºÍ×¢ÒâÊÂÏî°É¡£¿´ÏÂͼ

ÓÐÈý¸öµãÐèҪעÒ⣺

rebase ÏÈÕÒ³ö¹²Í¬µÄ׿ÏȽڵã

´Ó׿ÏȽڵã°Ñ pay ·ÖÖ§µÄÌá½»¼Ç¼ժÏÂÀ´£¬È»ºó rebase µ½ master ·ÖÖ§

rebase Ö®ºóµÄ commitID ÆäʵÒѾ­·¢ÉúÁ˱仯

ÓÈÆäÊǵÚÈýµã£¬¾­³£»áÈÃÈËÎó²Ù×÷£¬ËùÒÔÎñ±Ø×¢Òâ¡£

ÊÔÏëһϣ¬¿ª·¢¹ý³ÌÖУ¬Èç¹ûÎÒÃÇÆµ·±µÄ rebase master ·ÖÖ§£¬»áÓÐʲôºó¹ûÄØ£¿

µ±Äã²»¶Ï rebase master µÄʱºò£¬ÆäʵÄã±¾µØµÄ d ¶¼±ä³ÉÁË d' £¬ÔÙÒªºÍÔ¶¶Ë pay ·ÖÖ§±£³ÖÒ»Ö£¬ÄãµÄ±¾µØ·ÖÖ§ commit ¼Ç¼ÒѾ­²»¿°ÈëÄ¿ÁË¡£

ÁíÍâҪעÒ⣬¾ø²»ÒªÔÚ¹«¹²µÄ·ÖÖ§ÉÏʹÓà rebase£¡£¡£¡

ËùÒÔ£¬ÎªÁ˰²È«£¬ÍŶӿÉÒÔ¿¼ÂDzÉÓà merge¡£

pull request£¬·½±ãCodeReview

Git ²»½öÌṩÁË´úÂëÍйÜÒÔ¼°´úÂ뿪·¢µÄ°ïÖú£¬»¹ÌṩÁË´úÂëÉóºËÀàËÆµÄ¹¦ÄÜ¡£

µ±ÎÒÃÇÔÚ¹¦ÄÜ·ÖÖ§¿ª·¢Íê³ÉÖ®ºó£¬¿ÉÒÔ·¢ÆðÒ»¸ö pull request ÇëÇó£¬Ñ¡ÔñÐèÒª¶Ô±ÈµÄÁ½¸ö·ÖÖ§

Ëü»á´´½¨Ò»¸ö pull request£¬Öƶ¨Ïà¹ØÈËÔ±À´¶Ô´úÂë½øÐÐ review¡£

ͨ³£Çé¿öÏ£¬ÍŶÓÓ¦¸Ã¹ÄÀø½»²æ review£¬Éæ¼°µ½¹«¹²´úÂëµÄʱºò£¬Ò»¶¨ÒªÈÃÏà¹ØÈË review¡£

git hook£¬Git µÄÉúÃüÖÜÆÚ

Õâ¸ö´ó¶àÊýÈËÓ¦¸Ã¶¼£¬Ìý˵¹ý£¬git²Ù×÷ÓÐËü×ÔÉíµÄÉúÃüÖÜÆÚ£¬ÔÚ²»Í¬µÄÉúÃüÖÜÆÚ£¬ÎÒÃÇ¿ÉÒÔ×öһЩ×Ô¶¯»¯µÄÊÂÇé¡£

¾ÙÁ½¸ö¼òµ¥µÄÀý×Ó£º

pre-commitµÄʱºòÎÒÃÇ¿ÉÒÔ×ö eslint

post-commitµÄʱºò£¬ÎÒÃÇ¿ÉÒÔ×öÀûÓà jenkins ÀàËÆµÄ¹¤¾ß×ö³ÖÐø¼¯³É

µ±È»»¹Óиü¶àµÄÉùÃ÷ÖÜÆÚ£¬¾ßÌå¿ÉÒԲο¼ Git ¹³×Ó

git submodule && git subtree£¬¹ÜÀíµÚÈý·½Ä£¿é

ÕâÁ½¸öÃüÁîͨ³£ÓÃÀ´¹ÜÀí¹«ÓõĵÚÈý·½Ä£¿é¡£±ÈÈçһЩͨÓõĵײãÂß¼­¡¢Öмä¼þ¡¢»¹ÓÐһЩ¿ÉÄÜ»áÆµ·±±ä»¯µÄͨÓÃÒµÎñ×é¼þ¡£

µ±È»£¬Á½Õß»¹ÊÇÓÐÇø±ðµÄ¡£

git submodule Ö÷ÒªÓÃÀ´¹ÜÀíһЩµ¥Ïò¸üÐµĹ«¹²Ä£¿é»òµ×²ãÂß¼­¡£

git subtree ¶ÔÓÚ²¿·ÖÐèҪ˫Ïò¸üеĿɸ´ÓÃÂß¼­À´Ëµ£¬ÌرðÊʺϹÜÀí¡£±ÈÈçһЩÐèÒª¸´ÓõÄÒµÎñ×é¼þ´úÂë¡£ÔÚÎÒ֮ǰµÄʵ¼ùÖУ¬ÎÒÒ²ÔøÓÃsubtreeÀ´¹ÜÀí¹¹½¨ÏµÍ³Âß¼­¡£

git alias£¬¼ò»¯ Git ÃüÁî

ÎÒÃÇ¿ÉÒÔͨ¹ýÅäÖà git alias À´¼ò»¯ÐèÒªÊäÈëµÄ Git ÃüÁî¡£

±ÈÈçǰÎÄµÄ git subtree ÐèÒªÊäÈëºÜ³¤µÄ Git ÃüÁÎÒÃÇ¿ÉÒÔÅäÖà .git/config ÎļþÀ´½â¾ö¡£

// git stpull appfe demo/xxx
// git stpush appfe demo/xxx
[alias]
stpull = !git subtree pull --prefix=$1 appfe $2 \
&& :
stpush = !git subtree pull --prefix=$1 appfe $2 \
&& git subtree split --rejoin --prefix=$1 $2 \
&& git subtree push --prefix=$1 appfe $2 \
&& :

×ܽá˵µãɶ£¿

¸ÃÎÄÊ×ÏȽéÉÜÁË Git ³£¹æ²Ù×÷

°üÀ¨¿Ë¡´úÂë¡¢²Ù×÷ commit¡¢²Ù×÷·ÖÖ§µÈ¡£Æäʵ Git ³£¹æ²Ù×÷µÄÃüÁî²¢²»¶à£¬Çë¿´µÚÒ»²¿·ÖµÄ¼òµ¥×ܽᡣ

Æä´Î½éÉÜÁË Git ¿ª·¢Á÷³Ì

¸Ã²¿·ÖÖ÷Òª½éÉÜÁËÁ½ÖÖÖ÷Á÷µÄ¿ª·¢Ä£Ê½£º±È½ÏÇáÁ¿µÄ »ùÓÚ¹¦ÄÜ·ÖÖ§µÄ¿ª·¢Á÷³Ì ºÍÊʺϸ´ÔÓÏîÄ¿µÄ GitFlow ¿ª·¢Á÷³Ì £¬Á½ÖÖģʽ¸÷ÓÐʹÓõij¡¾°£¬¶ÔÓÚ³£¹æÊ¹Óã¬Ç°Õß¾ÍÒѾ­×ã¹»ÁË¡£

×îºó½éÉÜÁËһЩ Git ʵÓü¼ÇÉ

Ö÷Òª°üÀ¨£ºreflog ²Ù×÷£¬Ñ¹ËõÈÕÖ¾£¬rebase µÄ×¢ÒâÊÂÏÀûÓà pull request ×ö codeReview£¬ÀûÓà git hook ×öһЩ×Ô¶¯»¯¹¤×÷µÈ¡£

   
3238 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÿÈÕ¹¹½¨½â¾ö·½°¸
ÈçºÎÖÆ¶¨ÓÐЧµÄÅäÖùÜÀíÁ÷³Ì
ÅäÖùÜÀíÖ÷Òª»î¶¯¼°ÊµÏÖ·½·¨
¹¹½¨¹ÜÀíÈëÃÅ
Ïà¹ØÎĵµ

ÅäÖùÜÀíÁ÷³Ì
ÅäÖùÜÀí°×ƤÊé
CM09_CÅäÖùÜÀí±ê×¼
ʹÓÃSVN½øÐа汾¿ØÖÆ
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀíʵ¼ù
ÅäÖùÜÀí·½·¨¡¢¹¤¾ßÓëÓ¦ÓÃ
¶à²ã´Î¼¯³ÉÅäÖùÜÀí
²úÆ··¢²¼¹ÜÀí