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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
GitÓëRepoÈëÃÅ£¨¶þ£©
 
×÷Õß AngelDevilµÄBLOG£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-08-08
  2361  次浏览      27
 

Îå¡¢GIT·ÖÖ§

·ÖÖ§±»³ÆÖ®ÎªGIT×îÇ¿´óµÄÌØÐÔ£¬ÒòΪËü·Ç³£µØÇáÁ¿¼¶£¬Èç¹ûÓÃPerforceµÈ¹¤¾ßÓ¦¸ÃÖªµÀ£¬´´½¨·ÖÖ§¾ÍÊǿˡԭĿ¼µÄÒ»¸öÍêÕû¸±±¾£¬¶ÔÓÚ´óÐ͹¤³ÌÀ´Ëµ£¬Ì«·Ñʱ·ÑÁ¦ÁË£¬¶ø¶ÔÓÚGITÀ´Ëµ£¬¿ÉÒÔÔÚ˲¼äÉú³ÉÒ»¸öеķÖÖ§£¬ÎÞÂÛ¹¤³ÌµÄ¹æÄ£Óжà´ó£¬ÒòΪGITµÄ·ÖÖ§Æäʵ¾ÍÊÇÒ»Ö¸Õë¶øÒÑ¡£ÔÚÁ˽âGIT·Ö֧֮ǰ£¬Ó¦¸ÃÏÈÁ˽âGITÊÇÈçºÎ´æ´¢Êý¾ÝµÄ¡£

Ç°ÃæËµ¹ý£¬GIT´æ´¢µÄ²»ÊÇÎļþ¸÷¸ö°æ±¾µÄ²îÒ죬¶øÊÇÎļþµÄÿһ¸ö°æ±¾´æ´¢Ò»¸ö¿ìÕÕ¶ÔÏó£¬È»ºóͨ¹ýSHA-1Ë÷Òý£¬²»Ö»ÊÇÎļþ£¬°ü»»Ã¿¸öÌá½»¶¼ÊÇÒ»¸ö¶ÔÏó²¢Í¨¹ýSHA-1Ë÷Òý¡£ÎÞÂÛÊÇÎı¾Îļþ£¬¶þ½øÖÆÎļþ»¹ÊÇÌá½»£¬¶¼ÊÇGIT¶ÔÏó¡£

GIT¶ÔÏó

ÿ¸ö¶ÔÏó(object) °üÀ¨Èý¸ö²¿·Ö£ºÀàÐÍ£¬´óСºÍÄÚÈÝ¡£´óС¾ÍÊÇÖ¸ÄÚÈݵĴóС£¬ÄÚÈÝÈ¡¾öÓÚ¶ÔÏóµÄÀàÐÍ£¬ÓÐËÄÖÖÀàÐ͵ĶÔÏó£º"blob"¡¢"tree"¡¢ "commit" ºÍ"tag"¡£

1.¡°blob¡±ÓÃÀ´´æ´¢ÎļþÊý¾Ý£¬Í¨³£ÊÇÒ»¸öÎļþ¡£

2.¡°tree¡±ÓеãÏñÒ»¸öĿ¼£¬Ëü¹ÜÀíһЩ¡°tree¡±»òÊÇ ¡°blob¡±£¨¾ÍÏñÎļþºÍ×ÓĿ¼£©

3.Ò»¸ö¡°commit¡±Ö¸ÏòÒ»¸ö"tree"£¬ËüÓÃÀ´±ê¼ÇÏîĿijһ¸öÌØ¶¨Ê±¼äµãµÄ״̬¡£Ëü°üÀ¨Ò»Ð©¹ØÓÚʱ¼äµãµÄÔªÊý¾Ý£¬ÈçÌύʱ¼ä¡¢Ìύ˵Ã÷¡¢×÷Õß¡¢Ìá½»Õß¡¢Ö¸ÏòÉÏ´ÎÌá½»£¨commits£©µÄÖ¸ÕëµÈµÈ¡£

4.Ò»¸ö¡°tag¡±ÊÇÀ´±ê¼Çijһ¸öÌá½»(commit) µÄ·½·¨¡£

±ÈÈç˵ÎÒÃÇÖ´ÐÐÁËÒÔÏ´úÂë½øÐÐÁËÒ»´ÎÌá½»£º

$ git add README test.rb LICENSE2
$ git commit -m 'initial commit of my project'

ÏÖÔÚ,Git ²Ö¿âÖÐÓÐÎå¸ö¶ÔÏó:Èý¸ö±íʾÎļþ¿ìÕÕÄÚÈÝµÄ blob ¶ÔÏó;Ò»¸ö¼Ç¼×ÅĿ¼Ê÷ÄÚÈݼ°ÆäÖи÷¸öÎļþ¶ÔÓ¦ blob ¶ÔÏóË÷ÒýµÄ tree ¶ÔÏó;ÒÔ¼°Ò»¸ö°üº¬Ö¸Ïò tree ¶ÔÏó(¸ùĿ¼)µÄË÷ÒýºÍÆäËûÌá½»ÐÅÏ¢ÔªÊý¾ÝµÄ commit ¶ÔÏ󡣸ÅÄîÉÏÀ´Ëµ,²Ö¿âÖеĸ÷¸ö¶ÔÏó±£´æµÄÊý¾ÝºÍÏ໥¹ØÏµ¿´ÆðÀ´ÈçÏÂͼ£º

Èç¹û½øÐжà´ÎÌá½»£¬²Ö¿âµÄÀúÊ·»áÏñÕâÑù£º

·ÖÖ§ÒýÓÃ

ËùνµÄGIT·ÖÖ§£¬Æäʵ¾ÍÊÇÒ»¸öÖ¸Ïòijһ¸öCommit¶ÔÏóµÄÖ¸Õ룬ÏñÏÂÃæÕâÑù£¬ÓÐÁ½¸ö·ÖÖ§£¬masterÓëtesting£º

¶øÎÒÃÇÔõô֪µÀµ±Ç°ÔÚÄÄÒ»¸ö·ÖÖ§ÄØ£¿Æäʵ¾ÍÊǺܼòµ¥µØÊ¹ÓÃÁËÒ»¸öÃû½ÐHEADµÄÖ¸Õ룬ÈçÉÏͼËùʾ¡£HEADÖ¸ÕëµÄÖµ¿ÉÒÔΪһ¸öSHA-1Öµ»òÊÇÒ»¸öÒýÓ㬿´ÒÔÏÂÀý×Ó£º

gitµÄËùÓа汾ÐÅÏ¢¶¼±£´æÁËWorking DirectoryϵÄ.gitĿ¼£¬¶øHEADÖ¸Õë¾Í±£´æÔÚ.gitĿ¼Ï£¬ÈçÉÏͼËùÓУ¬Ä¿Ç°ÎªÖ¹ÒѾ­ÓÐ3¸öÌá½»£¬Í¨¹ý²é¿´HEADµÄÖµ¿ÉÒÔ¿´µ½ÎÒÃǵ±Ç°ÔÚmaster·ÖÖ§£ºrefs/heads/master£¬µ±ÎÒÃÇͨ¹ýgit checkoutÈ¡³öÄ³Ò»ÌØ¶¨Ìá½»ºó£¬HEADµÄÖµ¾ÍÊdzÉÁËÎÒÃÇcheckoutµÄÌá½»µÄSHA-1Öµ¡£

¼Ç¼ÎÒÃǵ±Ç°µÄλÖúܼòµ¥£¬¾ÍÊÇÄܹýHEADÖ¸Õ룬HEADÖ¸ÏòijһÌá½»µÄSHA-1Öµ»òÊÇijһ·ÖÖ§µÄÒýÓá£

н¨·ÖÖ§

git branch <branch-name>

ÓÐʱÐèÒªÔÚн¨·ÖÖ§ºóÖ±½ÓÇл»µ½Ð½¨µÄ·ÖÖ§£¬¿ÉÒÔÖ±½ÓÓÃcheckoutµÄ-bÑ¡Ïî

git checkout -b <branch-name>

ɾ³ý·ÖÖ§

git branch -d <branch-name>

Èç¹ûÔÚÖ¸¶¨µÄ·ÖÖ§ÓÐһЩunmergedµÄÌá½»£¬É¾³ý·ÖÖ§»áʧ°Ü£¬ÕâÀï¿ÉÒÔʹÓÃ-D²ÎÊýÇ¿ÖÆÉ¾³ý·ÖÖ§¡£

git branch -D <branch-name>

¼ì³ö·ÖÖ§»òÌá½»

¼ì³öijһ·ÖÖ§»òijһÌá½»ÊÇͬһ¸öÃüÁî

git checkout <branch-name> | <commit>

·ÖÖ§ºÏ²¢(merge)

µ±ÎÒÃÇн¨Ò»¸ö·ÖÖ§½øÐпª·¢£¬²¢Ìá½»Á˼¸´Î¸üк󣬸оõÊÇʱºò½«Õâ¸ö·ÖÖ§µÄÄÚÈݺϻØÖ÷ÏßÁË£¬ÕâÊǾͿÉÒÔÈ¡³öÖ÷Ïß·ÖÖ§£¬È»ºó°Ñ·ÖÖ§µÄ¸üÐÂmerge»ØÀ´£º

git checkout master

git merge testing

Èç¹ûmaster·ÖÖ§ÊÇtesting·ÖÖ§µÄÖ±½ÓÉÏÓΣ¬¼´´ÓmasterÑÓ×Åtesting·ÖÖ§µÄÌá½»ÀúÊ·Íùǰ×ß¿ÉÒÔÖ±½Ó×ßµ½testing·ÖÖ§µÄ×îÐÂÌá½»£¬ÄÇôϵͳʲôҲ²»ÐèÒª×ö£¬Ö»ÐèÒª¸Ä±ämaster·ÖÖ§µÄÖ¸Õë¼´¿É£¬Õâ±»³ÆÖ®Îª"Fast Forward"¡£

µ«ÊÇ£¬Ò»°ãÇé¿öÊÇÕâÑùµÄ£¬ÄãÈ¡³öÁË×îеÄmaster·ÖÖ§£¬±ÈÈç˵master·ÖÖ§×îеÄÌá½»ÊÇC2£¨¼ÙÉè¹²3´ÎÌá½»C0<-C1<-C2)£¬ÔÚ´Ë»ù´¡ÉÏÄãн¨ÁË·ÖÖ§£¬µ±ÄãÔÚ·ÖÖ§ÉÏÌá½»ÁËC3¡¢C5ºóÏ뽫br1ʱmerge»Ømasterʱ£¬Äã·¢ÏÖÒѾ­ÓÐÆäËûÈËÌá½»ÁËC4£¬Õâʱºò¾Í²»ÄÜÖ±½ÓÐÞ¸ÄmasterµÄÖ¸ÕëÁË£¬²»È»»á¶ªÊ§±ðÈ˵ÄÌá½»£¬Õâ¸öʱºò¾ÍÐèÒª½«Äãн¨·Ö֧ʱmasterËùÔÚµÄÌá½»£¨C2£©ºóµÄÐ޸ģ¨C4£©£¬ÓëÄãн¨·ÖÖ§ºóÔÚ·ÖÖ§ÉϵÄÐ޸ģ¨C3¡¢C5)×öºÏ²¢£¬½«ºÏ²¢ºóµÄ½á¹û×÷Ϊһ¸öеÄÌá½»Ìá½»µ½master£¬GIT¿ÉÒÔ×Ô¶¯ÍƵ¼³öÓ¦¸Ã»ùÓÚÄĸöÌá½»½øÐкϲ¢£¨C2£©£¬Èç¹ûûÓгåÍ»£¬ÏµÍ³»á×Ô¶¯ÌύеÄÌá½»£¬Èç¹ûÓгåÍ»£¬ÏµÍ³»áÌáʾÄã½â¾ö³åÍ»£¬µ±³åÍ»½â¾öºó£¬Äã¾Í¿ÉÒÔ½«Ð޸ļÓÈëÔÝ´æÇø²¢Ìá½»¡£Ìá½»ÀúÊ·ÀàËÆÏÂÃæÕâÑù£¨Í¼À´×ÔPro-Git)£º

mergeºóµÄÌá½»Êǰ´Ê±¼äÅÅÐòµÄ£¬±ÈÈçÏÂͼ£¬ÎÒÃÇÔÚrenameÌá½»´¦Ð½¨·ÖÖ§test£¬ÔÚtestÉÏÌá½»Commit from branch test£¬È»ºó»Øµ½masterÌá½»commit in master after committing in branch£¬ÔÙ½«test·ÖÖ§merge½ømaster£¬Õâʱ¿´Ìá½»Ìá½»ÀúÊ·£¬Commit from branch testÊÇÔÚcommit in master...֮ǰµÄ£¬¾¡¹ÜÔÚmasterÉÏÎÒÃÇÊÇÔÚrenameµÄ»ù´¡ÉÏÌá½»µÄcommit in master...¶øGIT»áÔÚ×îºóÌí¼ÓÒ»¸öеÄÌá½»£¨Merge branch 'test'£©±íʾÎÒÃÇÔÚ´Ë´¦½«Ò»¸ö·ÖÖ§merge½øÀ´ÁË¡£ÕâÖÖÇé¿ö»áÓÐÒ»¸öÎÊÌ⣬±ÈÈç˵ÔÚrenameÌá½»´¦Ä³ÈËA´ÓÄãÕâÀïCopyÁËÒ»¸öGIT²Ö¿â£¬È»ºóÄãreleaseÁËÒ»¸öpatch£¨Í¨¹ýgit format-patch£©¸øA£¬Õâʱºòtest·ÖÖ§»¹Ã»ÓÐmerge½øÀ´£¬ËùÒÔpatchÖÐÖ»°üº¬Ìá½»£ºcommit in master...È»ºóÄã°Ñtest·ÖÖ§mergeÁ˽øÀ´ÓÖ¸øÁËAÒ»¸öpatch£¬Õâ¸öpatch»á°üº¬Ìá½»£ºCommit from branch test£¬¶øÕâ¸öpatchÊÇÒÔrenameΪbaseµÄ£¬Èç¹ûcommit in master...ºÍCommit from branch testÐÞ¸ÄÁËÏàͬµÄÎļþ£¬ÔòµÚ¶þ´ÎµÄpatch¿ÉÄÜ»á´ò²»ÉÏÈ¥£¬ÒòΪÒÔrenameΪbaseµÄpatch¿ÉÄÜÔÚеÄCodeÉÏÕÒ²»µ½ÔÚÄĸöλÖÃÓ¦ÓÃÐ޸ġ£

·ÖÖ§ÑܺÏ(rebase)

ÓÐÁ½ÖÖ·½·¨½«Ò»¸ö·ÖÖ§µÄ¸Ä¶¯ºÏ²¢½øÁíÒ»¸ö·ÖÖ§£¬Ò»¸ö¾ÍÊÇÇ°ÃæËù˵µÄ·ÖÖ§ºÏ²¢£¬ÁíÒ»¸ö¾ÍÊÇ·ÖÖ§Ñܺϣ¬ÕâÁ½ÖÖ·½Ê½ÓÐÊ²Ã´Çø±ðÄØ£¿

·ÖÖ§ºÏ²¢£¨merge£©Êǽ«Á½¸ö·ÖÖ§µÄ¸Ä¶¯ºÏ²¢µ½Ò»Æð£¬²¢Éú³ÉÒ»¸öеÄÌá½»£¬Ìá½»ÀúÊ·Êǰ´Ê±¼äÅÅÐòµÄ£¬¼´ÎÒÃÇʵ¼ÊÌá½»µÄ˳Ðò£¬Í¨¹ýgit log --graph»òһЩͼÐλ¯¹¤¾ß£¬¿ÉÄܺÜÃ÷ÏԵؿ´µ½·ÖÖ§µÄºÏ²¢ÀúÊ·£¬Èç¹û·ÖÖ§±È½Ï¶à¾ÍºÜ»ìÂÒ£¬¶øÇÒÈç¹ûÒÔ¹¦Äܵãн¨·ÖÖ§£¬µÈ¹¦ÄܵãÍê³ÉºóºÏ»ØÖ÷Ïߣ¬ÓÉÓÚmergeºóÌá½»Êǰ´Ìύʱ¼äÅÅÐòµÄ£¬Ìá½»ÀúÊ·¾Í±È½ÏÂÒ£¬¸÷¸ö¹¦ÄܵãµÄÌá½»»ìÔÓÔÚÒ»Æð£¬»¹¿ÉÄÜÓöµ½ÉÏÃæÌáµ½µÄpatchÎÊÌâ¡£

¶ø·ÖÖ§Ñܺϣ¨rebase£©ÊÇÕÒµ½Á½¸ö·ÖÖ§µÄ¹²Í¬×æÏÈÌá½»£¬½«Òª±»rebase½øÀ´µÄ·ÖÖ§µÄÌá½»ÒÀ´ÎÔÚÒª±»rebaseµ½µÄ·ÖÖ§ÉÏÖØÑÝÒ»±é£¬¼´»Øµ½Á½¸ö·ÖÖ§µÄ¹²Í¬×æÏÈ£¬½«branch£¨¼ÙÈç½Ðexperiment£©µÄÿ´ÎÌá½»µÄ²îÒì±£´æµ½ÁÙʱÎļþÀȻºóÇл»µ½ÒªÑܺÏÈëµÄ·ÖÖ§£¨¼ÙÈçÊÇmaster£©£¬ÒÀ´ÎÓ¦Óò¹¶¡Îļþ¡£experimentÉÏÓм¸´ÎÌá½»£¬ÔÚmaster¾ÍÉú³É¼¸´ÎеÄÌá½»£¬¶øÇÒÊÇÁ¬ÔÚÒ»ÆðµÄ£¬ÕâÑùºÏ½øÖ÷Ïߺóÿ¸ö¹¦ÄܵãµÄÌá½»¾Í¶¼ÔÚÒ»Æð£¬¶øÇÒÌá½»ÀúÊ·ÊÇÏßÐÔµÄ

¶Ô±ÈmergeÓërebaseµÄÌá½»ÀúÊ·»áÊÇÏÂͼÕâÑùµÄ£¨Í¼À´×ÔPro-GIt£©£º

£¨merge£©

£¨rebase£©

rebaseºóC3Ìá½»¾Í²»´æÔÚÁË£¬È¡¶ø´úÖ®µÄÊÇC3'£¬¶ømasterÒ²³ÉΪÁËexperimentµÄÖ±½ÓÉÏÓΣ¬Ö»ÐèÒ»´ÎFast Forward£¨git merge£©ºómaster¾ÍÖ¸ÏòÁË×îеÄÌá½»£¬¾Í¿ÉÒÔɾ³ýexperiment·ÖÖ§ÁË¡£

ÑܺÏ--onto

git rebase --onto master server client

ÕâÌõÃüÁîµÄÒâ˼ÊÇ£º¼ì³öserver·ÖÖ§Óëclient·ÖÖ§¹²Í¬×æÏÈÖ®ºóclientÉϵı仯£¬È»ºóÔÚmasterÉÏÖØÑÝÒ»±é¡£

¸¸Ìá½»

HEAD±íʾµ±Ç°ËùÔÚµÄÌá½»£¬Èç¹ûÒª²é¿´µ±Ç°Ìá½»¸¸Ìá½»ÄØ£¿git log²é¿´Ìá½»ÀúÊ·£¬ÏÔȻ̫Âé·³ÁË£¬¶øÇÒÊäÈëÒ»³¤´®µÄCommit-IDÒ²²»ÊÇÒ»¸öÁîÈËÓäÔõÄÊ¡£Õâʱ¿É½èÖúÁ½¸öÌØÊâµÄ·ûºÅ£º~Óë^¡£

^ ±íʾָ¶¨Ìá½»µÄ¸¸Ìá½»£¬Õâ¸öÌá½»¿ÉÄÜÓɶà¸ö½»Ìá½»£¬^Ö®ºó¸úÉÏÊý×Ö±íʾµÚ¼¸¸ö¸¸Ìá½»£¬²»¸úÊý×ÖµÈͬÓÚ^1¡£

~nÏ൱ÓÚn¸ö^£¬±ÈÈç~3=^^^£¬±íʾµÚÒ»¸ö¸¸Ìá½»µÄµÚÒ»¸ö¸¸Ìá½»µÄµÚÒ»¸ö¸¸Ìá½»¡£

Ô¶³Ì·ÖÖ§

Ô¶³Ì·ÖÖ§ÒÔ(Ô¶³Ì²Ö¿âÃû)/(·ÖÖ§Ãû)ÃüÁԶ³Ì·ÖÖ§ÔÚ±¾µØÎÞ·¨Òƶ¯Ð޸쬵±ÎÒÃÇcloneÒ»¸öÔ¶³Ì²Ö¿âʱ»á×Ô¶¯ÔÚ±¾µØÉú³ÉÒ»¸öÃû½ÐoriginalµÄÔ¶³Ì²Ö¿â£¬ÏÂÔØÔ¶³Ì²Ö¿âµÄËùÓÐÊý¾Ý£¬²¢Ð½¨Ò»¸öÖ¸ÏòËüµÄ·ÖÖ§original/master£¬µ«Õâ¸ö·ÖÖ§ÎÒÃÇÊÇÎÞ·¨Ð޸ĵģ¬ËùÒÔÐèÒªÔÚ±¾µØÖØÐÂÒ»¸ö·ÖÖ§£¬±ÈÈç½Ðmaster£¬²¢¸ú×ÙÔ¶³Ì·ÖÖ§¡£

CloneÁËÔ¶³Ì²Ö¿âºó£¬ÎÒÃÇ»¹»áÔÚ±¾µØÐ½¨ÆäËû·ÖÖ§£¬²¢ÇÒ¿ÉÄÜÒ²Ïë¸ú×ÙÔ¶³Ì·ÖÖ§£¬Õâʱ¿ÉÒÔÓÃÒÔÏÂÃüÁ

git checkout -b [branch_name] --track|-t <remote>/<remote-banch>

ºÍн¨·ÖÖ§µÄ·½·¨Ò»Ñù£¬Ö»ÊǼÓÁËÒ»¸ö²ÎÊý--track»òÆäËõдÐÎʽ-t£¬¿ÉÒÔÖ¸¶¨±¾µØ·ÖÖ§µÄÃû×Ö£¬Èç¹û²»Ö¸¶¨¾Í»á±»ÃüÃûΪremote-branch¡£

ÒªÀ­È¡Ä³¸öÔ¶³Ì²Ö¿âµÄÊý¾Ý£¬¿ÉÒÔÓÃgit fetch:

git fetch <remote>

µ±À­È¡µ½ÁËÔ¶³Ì²Ö¿âµÄÊý¾ÝºóÖ»ÊǰÑÊý¾Ý±£´æµ½ÁËÒ»¸öÔ¶³Ì·ÖÖ§ÖУ¬Èçoriginal/master£¬¶øÕâ¸ö·ÖÖ§µÄÊý¾ÝÊÇÎÞ·¨Ð޸ĵ쬴ËʱÎÒÃÇ¿ÉÒÔ°ÑÕâ¸öÔ¶³Ì·ÖÖ§µÄÊý¾ÝºÏ²¢µ½ÎÒÃǵ±Ç°·ÖÖ§

git merge <remote>/<remote-branch>

Èç¹ûµ±Ç°·ÖÖ§ÒѾ­¸ú×ÙÁËÔ¶³Ì·ÖÖ§£¬ÄÇôÉÏÊöÁ½¸ö²¿·Ö¾Í¿ÉÒԺϲ¢ÎªÒ»¸ö

git pull

µ±ÔÚ±¾µØÐÞ¸ÄÌá½»ºó£¬ÎÒÃÇ¿ÉÄÜÐèÒª°ÑÕâЩ±¾µØµÄÌá½»ÍÆË͵½Ô¶³Ì²Ö¿â£¬ÕâÀï¾Í¿ÉÒÔÓÃgit pushÃüÁÓÉÓÚ±¾µØ¿ÉÒÔÓɶà¸öÔ¶³Ì²Ö¿â£¬ËùÒÔÐèÒªÖ¸¶¨Ô¶³Ì²Ö¿âµÄÃû×Ö£¬²¢Í¬Ê±Ö¸¶¨ÐèÒªÍÆµÄ±¾µØ·ÖÖ§¼°ÐèÒªÍÆË͵½Ô¶³Ì²Ö¿âµÄÄÄÒ»¸ö·ÖÖ§

git push <remote> <local-branch>:<remote-branch>

Èç¹û±¾µØ·ÖÖ§ÓëÔ¶³Ì·Ö֧ͬÃû£¬ÃüÁî¿ÉÒÔ¸ü¼òµ¥

git push <remote> <branch-name> µÈ¼ÛÓÚ git 
                          push <remote> refs/heads/<branch-name>:refs/for/<branch-name>

Èç¹û±¾µØ·ÖÖ§µÄÃû×ÖΪ¿Õ£¬¿ÉÒÔɾ³ýÔ¶³Ì·ÖÖ§¡£

Ç°ÃæËµ¹ý¿ÉÒÔÓв»Ö¹Ò»¸öÔ¶³Ì·ÖÖ§f£¬Ìí¼ÓÔ¶³Ì·ÖÖ§µÄ·½·¨Îª

git remote add <short-name> <url>

Áù¡¢±êÇ©-tag

×÷Ϊһ¸ö°æ±¾¿ØÖƹ¤¾ß£¬Õë¶Ôijһʱ¼äµãµÄijһ°æ±¾´òtagµÄ¹¦ÄÜÊDZز»¿ÉÉٵģ¬Òª²é¿´tagÒ²·Ç³£¼òµ¥£¬²é¿´tagʹÓÃÈçÏÂÃüÁî

git tag

²ÎÊý"-l"¿ÉÒÔ¶Ôtag½øÐйýÂË

git tag -l "v1.1.*"

Git ʹÓõıêÇ©ÓÐÁ½ÖÖÀàÐÍ£ºÇáÁ¿¼¶µÄ£¨lightweight£©ºÍº¬¸½×¢µÄ£¨annotated£©¡£ÇáÁ¿¼¶±êÇ©¾ÍÏñÊǸö²»»á±ä»¯µÄ·ÖÖ§£¬Êµ¼ÊÉÏËü¾ÍÊǸöÖ¸ÏòÌØ¶¨Ìá½»¶ÔÏóµÄÒýÓ᣶øº¬¸½×¢±êÇ©£¬Êµ¼ÊÉÏÊÇ´æ´¢ÔÚ²Ö¿âÖеÄÒ»¸ö¶ÀÁ¢¶ÔÏó£¬ËüÓÐ×ÔÉíµÄУÑéºÍÐÅÏ¢£¬°üº¬×űêÇ©µÄÃû×Ö£¬µç×ÓÓʼþµØÖ·ºÍÈÕÆÚ£¬ÒÔ¼°±êǩ˵Ã÷£¬±êÇ©±¾ÉíÒ²ÔÊÐíʹÓà GNU Privacy Guard (GPG) À´Ç©Êð»òÑéÖ¤¡£

ÇáÁ¿¼¶±êǩֻÐèÔÚgit tagºó¼ÓÉÏtagµÄÃû×Ö£¬Èç¹ûtagÃû×Ö

git tag <tag_name>

º¬¸½×¢µÄ±êÇ©ÐèÒª¼ÓÉϲÎÊý-a£¨annotated£©£¬Í¬Ê±¼ÓÉÏ-m¸úÉϱêÇ©µÄ˵Ã÷

git tag -a <tag_name> -m "<tag_description>"

Èç¹ûÄãÓÐ×Ô¼ºµÄ˽Կ£¬»¹¿ÉÒÔÓà GPG À´Ç©Êð±êÇ©£¬Ö»ÐèÒª°Ñ֮ǰµÄ -a ¸ÄΪ -s£¨signed£©

²é¿´±êÇ©µÄÄÚÈÝÓÃ

git show <tag_name>

ÑéÖ¤ÒÑÇ©ÊðµÄ±êÇ©ÓÃ-v£¨verify£©

git tag -v <tag_name>

ÓÐʱÔÚijһ¸ö°æ±¾Íü¼Ç´òtagÁË£¬¿ÉÒÔÔÚºóÆÚÔÙ²¹ÉÏ£¬Ö»ÐèÔÚ´òtagʱ¼ÓÉÏcommit-id

Òª½«tagÍÆË͵½Ô¶³Ì·þÎñÆ÷ÉÏ£¬¿ÉÒÔÓÃ

git push <remote> <tag_name>

»òÕß¿ÉÒÔÓÃÏÂÃæµÄÃüÁîÍÆËÍËùÓеÄtag

git push <remote> --tags

Æß¡¢GitÅäÖÃ

ʹÓÃ"git config"¿ÉÒÔÅäÖÃGitµÄ»·¾³±äÁ¿£¬ÕâЩ±äÁ¿¿ÉÒÔ´æ·ÅÔÚÒÔÏÂÈý¸ö²»Í¬µÄµØ·½£º

1./etc/gitconfig Îļþ£ºÏµÍ³ÖжÔËùÓÐÓû§¶¼ÆÕ±éÊÊÓõÄÅäÖá£ÈôʹÓà git config ʱÓà --systemÑ¡Ï¶ÁдµÄ¾ÍÊÇÕâ¸öÎļþ¡£

2.~/.gitconfig Îļþ£ºÓû§Ä¿Â¼ÏµÄÅäÖÃÎļþÖ»ÊÊÓÃÓÚ¸ÃÓû§¡£ÈôʹÓà git config ʱÓà --globalÑ¡Ï¶ÁдµÄ¾ÍÊÇÕâ¸öÎļþ¡£

3.µ±Ç°ÏîÄ¿µÄ git Ŀ¼ÖеÄÅäÖÃÎļþ£¨Ò²¾ÍÊǹ¤×÷Ŀ¼ÖÐµÄ .git/config Îļþ£©£ºÕâÀïµÄÅäÖýö½öÕë¶Ôµ±Ç°ÏîÄ¿ÓÐЧ¡£Ã¿Ò»¸ö¼¶±ðµÄÅäÖö¼»á¸²¸ÇÉϲãµÄÏàͬÅäÖã¬ËùÒÔ .git/config ÀïµÄÅäÖûḲ¸Ç/etc/gitconfig ÖеÄͬÃû±äÁ¿¡£

ÔÚ Windows ϵͳÉÏ£¬Git »áÕÒѰÓû§Ö÷Ŀ¼Ï嵀 .gitconfig Îļþ¡£Ö÷Ŀ¼¼´ $HOME ±äÁ¿Ö¸¶¨µÄĿ¼£¬Ò»°ã¶¼ÊÇ C:\Documents and Settings\$USER¡£´ËÍ⣬Git »¹»á³¢ÊÔÕÒѰ /etc/gitconfig Îļþ£¬Ö»²»¹ý¿´µ±³õ Git ×°ÔÚʲôĿ¼£¬¾ÍÒÔ´Ë×÷Ϊ¸ùĿ¼À´¶¨Î»¡£

×î»ù´¡µÄÅäÖÃÊÇÅäÖÃgitµÄÓû§£¬ÓÃÀ´±êʶ×÷ÕßµÄÉí·Ý

git config --global user.name 
git config --global user.email 

Îı¾±à¼­Æ÷Ò²¿ÉÒÔÅäÖ㬱ÈÈçÔÚgit commitµÄʱºò¾Í»áµ÷ÓÃÎÒÃÇÉèÖõÄÎı¾±à¼­Æ÷

git config --global core.editor vim

ÁíÒ»¸ö³£ÓõÄÊÇdiff¹¤¾ß£¬±ÈÈçÎÒÃÇÏëÓÿÉÊÓ»¯µÄ¶Ô±È¹¤¾ß

git config --global merge.tool meld

Òª²é¿´ËùÓеÄÅäÖ㬿ÉÒÔÓÃ

git config --list

»òÕß¿ÉÒÔÔÚgit configºó¼ÓÉÏÅäÖÃÏîµÄÃû×ֲ鿴¾ßÌåÏîµÄÅäÖÃ

git config user.name

×÷Ϊһ¸öÀÁÈË£¬ËäÈ»checkout¡¢statusµÈÃüÁîÖ»ÊÇÒ»¸öµ¥´Ê£¬µ«ÊÇ»¹ÊÇÏÓÌ«³¤ÁË£¬ÎÒÃÇ»¹¿ÉÒÔ¸øÃüÁîÉèÖñðÃûÈç

git config --global alias.co checkout

ÕâÑùgit co¾ÍµÈÓÚgit checkout

Ç°ÃæËµµØ£¬gitÅäÖÃÏî¶¼±£´æÔÚÄÇ3¸öÎļþÀ¿ÉÒÔÖ±½Ó´ò¿ªÏàÓ¦µÄÅäÖÃÎļþ²é¿´ÅäÖã¬Ò²¿ÉÒÔÖ±½ÓÐÞ¸ÄÕâЩÅäÖÃÎļþÀ´ÅäÖÃgit£¬Ïëɾ³ýijһ¸öÅäÖã¬Ö±½Óɾ³ýÏàÓ¦µÄÐоÍÐÐÁË

°Ë¡¢ÆäËû

¹ØÓÚGIT¸÷ÃüÁîµÄ˵Ã÷¿ÉÒԲ鿴Ïà¹Ø°ïÖúÎĵµ£¬Í¨¹ýÒÔÏ·½·¨£º

git config --global alias.co checkout

REPO

repo start <topic_name>

¿ªÆôÒ»¸öеÄÖ÷Ì⣬Æäʵ¾ÍÊÇÿ¸öProject¶¼Ð½¨Ò»¸ö·ÖÖ§¡£

repo init -u <url> [OPTIONS]

ÔÚµ±Ç°Ä¿Â¼Ï³õʼ»¯repo£¬»áÔÚµ±Ç°Ä¿Â¼ÉúÉú³ÉÒ»¸ö.repoĿ¼£¬ÏñGit ProjectϵÄ.gitÒ»Ñù£¬-uÖ¸¶¨url£¬¿ÉÒÔ¼Ó²ÎÊý-mÖ¸¶¨manifestÎļþ£¬Ä¬ÈÏÊÇdefault.xml£¬.repo/manifests±£´æmanifestÎļþ¡£.repo/projectsÏÂÓÐËùÓеÄprojectµÄÊý¾ÝÐÅÏ¢£¬repoÊÇһϵÁÐgit projectµÄ¼¯ºÏ£¬Ã¿¸ögit projectϵÄ.gitĿ¼ÖеÄrefsµÈĿ¼¶¼ÊÇÁ´½Óµ½.repo/manifestsϵġ£

repo manifest

¿ÉÒÔ¸ù¾Ýµ±Ç°¸÷ProjectµÄ°æ±¾ÐÅÏ¢Éú³ÉÒ»¸ömanifestÎļþ

repo sync [PROJECT1...PROJECTN]

ͬ²½Code¡£

repo status

²é¿´±¾µØËùÓÐProjectµÄÐ޸ģ¬ÔÚÿ¸öÐ޸ĵÄÎļþǰÓÐÁ½¸ö×Ö·û£¬µÚÒ»¸ö×Ö·û±íʾÔÝ´æÇøµÄ״̬¡£

ÿ¶þ¸ö×Ö·û±íʾ¹¤×÷ÇøµÄ״̬

repo prune <topic> 

ɾ³ýÒѾ­mergeµÄ·ÖÖ§

repo abandon <topic>

ɾ³ý·ÖÖ§£¬ÎÞÂÛÊÇ·ñmerged

repo branch»òrepo branches

²é¿´ËùÓзÖÖ§

repo diff

²é¿´ÐÞ¸Ä

repo upload

ÉÏ´«±¾µØÌá½»ÖÁ·þÎñÆ÷

repo forall [PROJECT_LIST]-c COMMAND

¶ÔÖ¸¶¨µÄProjectÁбí»òËùÓÐProjectÖ´ÐÐÃüÁîCOMMAND£¬¼ÓÉÏ-p²ÎÊý¿É´òÓ¡³öProjectµÄ·¾¶¡£

repo forall -c 'git reset --hard HEAD;git clean -df;git rebase --abort'

Õâ¸öÃüÁî¿ÉÒÔ³·ÏúÕû¸ö¹¤³ÌµÄ±¾µØÐ޸ġ£

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

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

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

ÅäÖùÜÀíʵ¼ù
ÅäÖùÜÀí·½·¨¡¢¹¤¾ßÓëÓ¦ÓÃ
¶à²ã´Î¼¯³ÉÅäÖùÜÀí
²úÆ··¢²¼¹ÜÀí
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

Èí¼þÅäÖùÜÀíµÄÎÊÌ⡢ĿµÄ
Èí¼þÅäÖùÜÀí¹æ·¶
CQWeb 7.1ÐÔÄܲâÊÔÓëµ÷ÓÅÖ¸ÄÏ
ΪʲôÐèҪʹÓÃClearCase
ClearCaseÓëRTCµÄ¼¯³É
ÀûÓÃClearQuest ½øÐвâÊÔ¹ÜÀí


²úÆ··¢²¼¹ÜÀí
ÅäÖùÜÀí·½·¨¡¢Êµ¼ù¡¢¹¤¾ß
¶à²ã´Î¼¯³ÉÅäÖùÜÀí
ʹÓÃCCÓëCQ½øÐÐÏîĿʵ¼ù
CVSÓëÅäÖùÜÀí
Subversion¹ÜÀíÔ±


ÅäÖùÜÀíʵ¼ù£¨´Ó×éÖ¯¼¶µ½ÏîÄ¿¼¶£©
ͨºÅÔº ÅäÖùÜÀí¹æ·¶ÓëÓ¦ÓÃ
ÅäÖùÜÀíÈÕ¹¹½¨¼°³ÖÐø¼¯³É
µ¤·ð˹ ClearCaseÓëÅäÖùÜÀí
ÖйúÒÆ¶¯ Èí¼þÅäÖùÜÀí
ÖйúÒøÐÐ Èí¼þÅäÖùÜÀí
Ìì½ò»ªÒíÀ¶Ìì¿Æ¼¼ ÅäÖùÜÀíÓëPvcs