¶ÔÓÚÈí¼þ¿ª·¢ÈËÔ±À´Ëµ£¬°æ±¾¿ØÖÆÏµÍ³ËûÃÇÔÙÊìϤ²»¹ýÁË£¬Ëùν°æ±¾¿ØÖÆÏµÍ³¾ÍÊÇÈí¼þÏîÄ¿¿ª·¢¹ý³ÌÖÐÓÃÓÚ´¢´æ¿ª·¢ÈËÔ±Ëùд´úÂëËùÓÐÐÞ¶©°æ±¾µÄÈí¼þ¡£ËüµÄÖ÷ҪĿµÄÊÇʵÏÖ¿ª·¢ÍŶӲ¢Ðпª·¢¡¢Ìá¸ß¿ª·¢Ð§ÂÊ£¬¶ÔÈí¼þ¿ª·¢½ø³ÌÖÐÎļþ»òĿ¼µÄ·¢Õ¹¹ý³ÌÌṩÓÐЧµÄ×·×ÙÊֶΣ¬±£Ö¤ÔÚÐèҪʱ¿É»Øµ½¾ÉµÄ°æ±¾£¬±ÜÃâÎļþµÄ¶ªÊ§¡¢Ð޸ĵĶªÊ§ºÍÏ໥¸²¸Ç£¬´Ó¶ø¼õÇῪ·¢ÈËÔ±µÄ¸ºµ££¬½Úʡʱ¼ä£¬Í¬Ê±½µµÍÈËΪ´íÎó¡£¶øÄ¿Ç°³£¼ûµÄ°æ±¾¿ØÖÆÏµÍ³·ÖΪ¼¯ÖÐʽ°æ±¾¿ØÖÆÏµÍ³ºÍ·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³Á½ÖÖ¡£
SVNºÍGit
ÔÚ¼¯ÖÐʽ°æ±¾¿ØÖÆÏµÍ³ÖУ¬Ä¿Ç°±È½Ï³£ÓõÄÊÇSVN£¬¶øËµÆðSVN¾Í²»Äܲ»Ì¸CVS£¬CVSÊÇÒ»¸öC/Sϵͳ£¬Ö÷ÒªÔÚ¿ªÔ´Èí¼þ¹ÜÀíÖÐʹÓ᣶à¸ö¿ª·¢ÈËԱͨ¹ýÒ»¸öÖÐÐİ汾¿ØÖÆÏµÍ³À´¼Ç¼Îļþ°æ±¾£¬´Ó¶ø´ïµ½±£Ö¤Îļþͬ²½µÄÄ¿µÄ¡£CVS°æ±¾¿ØÖÆÏµÍ³ÊÇÒ»ÖÖGNUÈí¼þ°ü£¬Ö÷ÒªÓÃÓÚÔÚ¶àÈË¿ª·¢»·¾³ÏµÄÔ´ÂëµÄά»¤¡£µ«ÊÇÓÉÓÚCVS±àÂë´æÔÚһЩÎÊÌ⣬´ó¶àÊýÈí¼þ¿ª·¢¹«Ë¾¶¼Ê¹ÓÃSVNÌæ´úÁËCVS¡£SVNÊÇSubversionµÄ¼ò³Æ£¬ÊÇÒ»¸ö¿ª·ÅÔ´´úÂëµÄ°æ±¾¿ØÖÆÏµÍ³£¬Ïà½ÏÓÚRCS¡¢CVS£¬Ëü²ÉÓÃÁË·ÖÖ§¹ÜÀíϵͳ£¬ËüµÄÉè¼ÆÄ¿±ê¾ÍÊÇÈ¡´úCVS¡£»¥ÁªÍøÉÏºÜ¶à°æ±¾¿ØÖÆ·þÎñÒÑ´ÓCVSÇ¨ÒÆµ½Subversion¡£ËµµÃ¼òµ¥Ò»µãSVN¾ÍÊÇÓÃÓÚ¶à¸öÈ˹²Í¬¿ª·¢Í¬Ò»¸öÏîÄ¿£¬¹²ÓÃ×ÊÔ´µÄÄ¿µÄ¡£
¶øÔÚ·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³ÖУ¬GitÖð½¥Õ¼¾ÝÁËÉϷ磬Ŀǰ£¬¹úÍâ×î´óµÄÉç½»±à³Ì¼°´úÂëÍйÜÍøÕ¾Github£¬Bitbucket£¬Gitlab£¬¹úÄÚµÄÂëÔÆ¡¢Coding¡¢»ªÎªÈí¼þ¿ª·¢ÔÆ£¨DevCloud£©ÖеÄÅäÖùÜÀíµÈ´úÂëÍÐ¹ÜÆ½Ì¨¾ùÖ§³ÖGit¡£GitÊÇÒ»¿îÃâ·Ñ¡¢¿ªÔ´µÄ·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³£¬¿ÉÒÔÓÐЧ¡¢¸ßËٵĴ¦Àí´ÓºÜСµ½·Ç³£´óµÄÏîÄ¿°æ±¾¹ÜÀí¡£GitÊÇLinus
TorvaldsΪÁ˰ïÖú¹ÜÀíLinuxÄں˿ª·¢¶ø¿ª·¢µÄÒ»¸ö¿ª·ÅÔ´ÂëµÄ°æ±¾¿ØÖÆÈí¼þ¡£Torvalds
¿ªÊ¼×ÅÊÖ¿ª·¢ Git ÊÇΪÁË×÷ΪһÖÖ¹ý¶É·½°¸À´Ìæ´ú BitKeeper£¬ºóÕß֮ǰһֱÊÇLinuxÄں˿ª·¢ÈËÔ±ÔÚÈ«ÇòʹÓõÄÖ÷ÒªÔ´´úÂ빤¾ß¡£¿ª·ÅÔ´ÂëÉçÇøÖеÄÓÐЩÈ˾õµÃBitKeeper
µÄÐí¿ÉÖ¤²¢²»ÊʺϿª·ÅÔ´ÂëÉçÇøµÄ¹¤×÷£¬Òò´ËTorvalds¾ö¶¨×ÅÊÖÑо¿Ðí¿ÉÖ¤¸üΪÁé»îµÄ°æ±¾¿ØÖÆÏµÍ³¡£¾¡¹Ü×î³õGitµÄ¿ª·¢ÊÇΪÁ˸¨ÖúLinuxÄں˿ª·¢µÄ¹ý³Ì£¬µ«ÊÇÎÒÃÇÒѾ·¢ÏÖÔںܶàÆäËû×ÔÓÉÈí¼þÏîÄ¿ÖÐҲʹÓÃÁËGit¡£
¶øËæ×ÅÓµÓзֲ¼Ê½°æ±¾¿ØÖÆÏµÍ³ÓÅÊÆµÄGitµÄ¿ìËÙ·¢Õ¹£¬Ô½À´Ô½¶àµÄ¿ª·¢Õß×¼±¸´Ó¼¯ÖÐʽ°æ±¾¿ØÖÆÏµÍ³SVNÇ¨ÒÆµ½GitÉÏ£¬ÕâÆäÖУ¬GitÏà¶ÔSVN±íÏÖ³öÀ´µÄ¸üÓÐÀûÓÚ¿ª·¢Õß°æ±¾¿ØÖƹÜÀíµÄÌØµã×ÔÈ»ÊÇ×îÖØÒªµÄÔÒò¡£
Git vs. SVN
ÒòΪ´ÓÊôÓÚ²»Í¬µÄ¼¯Öкͷֲ¼Ê½Ä£Ê½£¬Òò´Ë£¬´Ó¹¤×÷ģʽÀ´¿´£¬GitºÍSVN´æÔÚ×űȽÏÃ÷ÏԵIJ»Í¬£¬ÈçÏÂͼËùʾ¡£

¼¯ÖÐʽ°æ±¾¿ØÖÆÏµÍ³¹¤×÷Ä£ÐÍ

·Ö²¼Ê½°æ±¾¿ØÖÆÄ£ÐÍ
´ÓÁ½ÕߵŤ×÷ģʽ¿ÉÒÔ¿´µ½£¬·Ö²¼Ê½Ïà±ÈÓÚ¼¯ÖÐʽµÄ×î´óÇø±ðÔÚÓÚ¿ª·¢Õß¿ÉÒÔÌá½»´úÂëµ½±¾µØ£¬Ã¿¸ö¿ª·¢Õßͨ¹ý¿Ë¡£¨Git
clone£©£¬ÔÚ±¾µØ»úÆ÷ÉÏ¿½±´Ò»¸öÍêÕûµÄGit²Ö¿â¡£¶øSVNÔò±ØÐ뽫´úÂëÌá½»µ½ÖÐÐÄ¿ØÖÆÆ÷¡£¶øÓɴ˲úÉúµÄ²îÒìÐÔ£¬Ôò¾ö¶¨ÁËGitºÍSVNµÄ¸÷×ÔµÄÌØÐÔ¡£
°²È«ÐÔ
Ê×ÏÈÔÚ°²È«ÐÔ·½Ã棬ÓÉÓÚ²ÉÓ÷ֲ¼Ê½ÏµÍ³£¬Ã¿¸öÓû§¾ÍÏ൱ÓÚÒ»¸öGit¿âµÄ±¸·Ý£¬Í¬Ê±£¬Í¨¹ýSHA1¹þÏ£±£Ö¤Êý¾ÝµÄÍêÕûÐÔ£¬·ÀÖ¹¶ñÒâ´Û¸Ä£¬Òò´Ë£¬¾ßÓкܸߵݲȫÐÔ¡£¶øSVNÓÉÓÚ²ÉÓü¯ÖÐʽ£¬Òò´Ë£¬ËùÓдúÂë°æ±¾¿â¾ù´æ´¢ÔÚÖÐÑë·þÎñÆ÷ÖУ¬Òò´Ë£¬´æÔںܴóµÄµ¥µã¹ÊÕϵķçÏÕ£¬Í¬Ê±£¬µ±·þÎñÆ÷¶ËÀúÊ·Êý¾Ý±»´Û¸Äʱ£¬¿Í»§¶ËÄÑÒÔ·¢ÏÖ¡£
·ÖÖ§¹¦ÄÜ
ÔÚ·ÖÖ§¹¦ÄÜ·½Ã棬ÓÉÓÚGit²ÉÓñ¾ÖÊÉÏÖ¸ÏòCommit¶ÔÏóµÄ¿É±äÖ¸Õ룬Òò´Ë£¬±ãÓÚ²éѯºÍ×·ËÝ·ÖÖ§¼äµÄÌá½»ÀúÊ·£¬²¢Äܹ»Ö§³ÖË«ÏòºÏ²¢¡£¶øSVN·ÖÖ§²»Ö§³ÖÌá½»¸ôÀ룬ËäȻһ´ÎÌá½»¿Éͬʱ¸ü¸ÄÖ÷ÏߺͷÖÖ§µÄÄÚÈÝ£¬µ«ÎÞ·¨²éѯºÍ×·ËÝ·ÖÖ§¼äµÄÌá½»ÀúÊ·¡£
·¢²¼¿ØÖÆ
ÔÚGitÖУ¬¿ÉÒÔÉèÖÃÖ»Óз¢²¼¹ÜÀíÔ±²ÅÓÐȨÏÞÍÆË͵İ汾¿â»òÕß·ÖÖ§£¬ÓÃÓÚÎȶ¨·¢²¼°æ±¾µÄά»¤£¬»¹¿ÉÒÔÉèÖÃÖ»ÓÐÏîÄ¿¾Àí¡¢Ä£¿é¹ÜÀíÔ±²ÅÓÐÈ¨ÍÆË͵İ汾¿â»òÕß·ÖÖ§£¬ÓÃÓÚÕûºÏ²âÊÔ£¬Òò´Ë£¬·¢²¼¿ØÖÆÏ൱Áé»î£¬¶øSVN²¢Ã»ÓÐÃ÷È·µÄ·¢²¼¿ØÖÆÅäÖ㬸ü¶àµÄ»¹ÊÇÒÀ¿¿Óû§×Ô¼ºµÄϰ¹ß¡£
¿ª·¢ÉóºË
ÔÚ¿ª·¢ÉóºË·½±ã£¬GitÖ§³ÖÍŶӳÉÔ±×Ô½¨·ÖÖ§ºÍ°æ±¾¿â¡£Í¨¹ýºÏ²¢ÇëÇó»ò´Ó³ÉÔ±¸öÈ˰汾¿â¡¢·ÖÖ§»ñÈ¡Ìá½»£¬´ÓÌύ˵Ã÷¡¢´úÂë¹æ·¶µÈ·½Ãæ¶ÔÌá½»ÖðÒ»ÉóºË¡£¶øSVNÔò²»¾ß±¸ÕâЩ¹¦ÄÜ¡£
ºÏ²¢Ö§³Ö
Git»ùÓÚDAG£¨ÓÐÏò·Ç»·Í¼£©µÄÉè¼Æ±ÈSVNµÄÏßÐÔÌá½»Ìṩ¸üºÃµÄºÏ²¢×·×Ù£¬±ÜÃâ²»±ØÒªµÄ³åÍ»£¬Ìá¸ßÁ˹¤×÷ЧÂÊ¡£¶øGit»ùÓÚ¶ÔÄÚÈݵÄ×·×Ù¶ø·Ç¶ÔÎļþÃû×·×Ù£¬ËùÒÔÓöµ½Ò»·½»òË«·½¶ÔÎļþÃû¸ü¸Äʱ£¬Äܹ»ºÜºÃ½øÐÐ×Ô¶¯ºÏ²¢»òÌṩ¹¤¾ß¸¨ÖúºÏ²¢¡£¶øSVNÓöµ½Í¬ÑùÎÊÌâʱ»á²úÉúÊ÷³åÍ»£¬½â¾öÆðÀ´ºÜÂé·³¡£
Òò´Ë£¬´ÓÒÔÉϵĶԱȿÉÒÔ¿´³ö£¬GitÏà¶ÔÓÚSVN¾ßÓв»ÉÙµÄÓÅÊÆ£¬Òò´Ë£¬´ÓSVNÇ¨ÒÆµ½Git³ÉΪÁËÖڶ࿪·¢ÕßµÄÑ¡Ôñ¡£
´ÓSVNµ½Git
ÄÇô£¬´ÓSVNµ½µ×ÈçºÎÇл»µ½GitÄØ£¿Êµ¼ÊÉÏ£¬·½·¨ÓкܶàÖÖ£¬Ò²¶¼²¢²»ÊǺܸ´ÔÓ£¬ÆäÖУ¬CSDN²©Ö÷UrChenÌṩÁËÒ»ÖÖÇл»µÄ·½·¨£¬Ö»ÐèÒª¼òµ¥µÄ¼¸²½£¬¼´¿ÉÍê³É´ÓSVNÍêÃÀÇл»µ½Git¡£
1.ʹÓÃgit svn clone ¿½±´SVN²Ö¿â
cd ~/test_repo
git svn clone file:///home/*/Desktop/SVN/svn_repo/
-T trunk -b branches -t tags |
2.н¨Ò»¸öGitµÄbare²Ö¿â
cd ..
mkdir test.git
cd test.git
git init --bare
|
3.½«GitµÄĬÈÏ·ÖÖ§ºÍSVNµÄĬÈÏ·ÖÖ§trunk¶ÔÓ¦ÆðÀ´
4.½«test_repoÍÆË͵½test.gitÖÐ
cd ~/test_repo
git remote add bare ~/test.git
git push bare |
´Ëʱ¾ÍÍê³ÉÁËÍÆËÍ£¬¿ÉÒÔɾ³ýtest_repoÁË
5.½«Git repoÖеÄtrunkÖØÃüÃûΪmaster
cd ~/test.git
git branch -m trunk master |
6.½«SVN repoÖеÄtagsÒÆ¶¯µ½git repoµÄÏàӦλÖÃ
ʹÓÃgit svn cloneµ¼³ö°æ±¾¿âµÄʱºò»á½«svnÖеÄtags±£´æ³ÉgitÖеÄtags/**£¬¶ø²¢²»ÊÇĬÈϵÄtag£¬ËùÒÔÒª½øÐÐÒÆ¶¯¡££¨×¢Ò⣺´Ë½Å±¾½öʾÀýtagÊǵ¥¼¶Ä¿Â¼µÄÇé¿ö£¬Èç¹û
tag Êǰüº¬Ä¿Â¼µÄÁ½¼¶»òÕ߶༶tag£¬Çë×ÔÐÐÖØÐÂ׫д½Å±¾£©
cd ~/test.git
git for-each-ref --format='%(refname)' refs/heads/tags
|
cut -d / -f 4 |
while read ref
do
git tag "$ref" "refs/heads/tags/$ref";
git branch -D "tags/$ref";
done |
7.Íê³ÉÇ¨ÒÆ£¬µÃµ½test.git
½øÈ빤×÷Îļþ¼Ð£¬Ö´ÐÐ
OK£¬´ó¹¦¸æ³É£¬Ê¹ÓÃGit½øÐа汾¹ÜÀí°É¡£
³ý´ËÖ®Í⣬»¹Óм¸¸öÎÊÌâÐèҪ˵Ã÷£º
1¡¢Í¨¹ýgit-svn¹¤¾ß¿ÉÒÔÔÚSVNÇ¨ÒÆµ½GitÉÏ£¬±£Áô²Ö¿âÀúÊ·¼Ç¼¡£
2¡¢Çл»µ½GitºóÍÆ¼ö²ßÂÔ½¨Òé²ÉÓó¤ÆÚ·ÖÖ§¡¢ÌØÐÔ·ÖÖ§¡£
3¡¢Ä¿Ç°Git»¹Ã»·¨×öµ½ÏñSVNÖжÔÌØ¶¨Îļþ¼ÐµÄϸ·ÖȨÏÞ¿ØÖÆ£¬µ«¿Éͨ¹ý·Ö²Ö»ò½¨Á¢¶à·ÖÖ§µÄ·½Ê½Òýµ¼Óû§Ê¹Óá£
4¡¢Çл»µ½GitºóÓöµ½ºÏ²¢³åͻʱ£¬·ÖÁ½ÖÖÇé¿ö£º
ÀàÐÍ1£ºÐÞ¸ÄÁËͬһ¸öÎļþµÄͬһÐÐ
½â¾ö·½·¨£ºÈ·ÈÏÕýÈ·µÄÐ޸ģ¬È»ºóÓÃÃüÁîÐнâ¾ö£¬Ê¾ÀýÈçÏ£º



ÀàÐÍ2£ºÎļþ±»ÖØÃüÃûΪ²»Í¬µÄÃû×Ö£¨Ê÷³åÍ»£©
½â¾ö°ì·¨£ºÈ·ÈÏÄĸöÃû×ÖÊÇÕýÈ·µÄ£¬É¾³ý´íÎóµÄ£¬Ê¾ÀýÈçÏ£º



DevCloudÓëGit
Ç°ÃæÒѾ˵¹ý£¬»ªÎªÈí¼þ¿ª·¢ÔÆ£¨DevCloud£©ÖеÄÅäÖùÜÀí·þÎñÈ«ÃæÖ§³ÖGit£¬²¢¶ÔGit½øÐÐÁËÈ«ÃæÓÅ»¯¡£¶øÊµ¼ÊÉÏ£¬Õâ¸öÅäÖùÜÀí·þÎñ¾ÍÊÇÃæÏòÈí¼þ¿ª·¢ÕßÌṩµÄ»ùÓÚGitµÄÔÚÏß´úÂëÍйܷþÎñ¡£¶ÔÓÚ¹ÜÀíÔ±ºÍÏîÄ¿¾Àí£¬ËüÌṩÁ˲ֿâ¹ÜÀí¡¢È¨ÏÞ¹ÜÀí¡¢³ÉÔ±¹ÜÀí¡¢·ÖÖ§±£»¤¡¢°²È«¹Ü¿Ø¼°Í³¼Æ·þÎñ£¬¶ÔÓÚ¿ª·¢Õߣ¬ËüÔòÌṩÁË´úÂëÍйܡ¢´úÂë²Ö¿â¡¢ÔÚÏ߿ͻ§¶ËµÈ·þÎñ¡£ÅäÖùÜÀí·þÎñµÄ²úÆ·¼Ü¹¹Í¼£¬ÈçÏÂͼËùʾ£º

DevCloudµÄÅäÖùÜÀí·þÎñ¶ÔGitµÄÓÅ»¯Ö÷ÒªÌåÏÖÔÚÒÔϼ¸µã£º
1£©Ö§³Ö¿çµØÓòÐͬ¿ª·¢¡¢±¾µØÀëÏß²Ù×÷¡¢´úÂëºÏÈëÆÀÉó¡£
2£©Ö§³ÖÔÚÏ߿ͻ§¶Ë¡¢´úÂëÔÚÏßä¯ÀÀ¡¢Ð޸ġ¢Ìá½»¡¢ÔÚÏß´´½¨·ÖÖ§¡¢±È½Ï·ÖÖ§¡¢Ð½¨ºÏ²¢ÇëÇó¡£
3£©¾ßÓдúÂë¼ÓÃÜ´«Êä¡¢²Ö¿âȨÏÞ¹ÜÀí¡¢·ÖÖ§±£»¤µÈ¶àÖÖ°²È«´ëÊ©¡£
4£©ÌṩÁË´óÁ¿µÄ²Ö¿âÄ£°å¡¢Í¨ÓÃÄ£°å£¬ÒÔ·½±ã¿ª·¢ÕßÌá¸ß´´½¨Ð§ÂÊ¡£
5£©Ìṩ»ùÓÚ´úÂëµÄͳ¼Æ·ÖÎö¡¢²Ö¿âÌá½»ÐÅϢͳ¼Æ¡¢¹±Ï×Õßͳ¼ÆµÈÏà¹ØÍ³¼ÆÊý¾Ý¡£
×ܽá
×ÜÖ®£¬´ÓSVNÇл»µ½GitĿǰÀ´¿´£¬ÊÇÀû¶à±×ÉÙ£¬Ò²ÊÇÒ»¸öÇ÷ÊÆ£¬½¨ÒéÓÐÌõ¼þµÄ¿ª·¢ÈËÔ±¿ÉÒÔ³¢ÊÔһϣ¬´ËÍ⣬DevCloudÖеÄÅäÖùÜÀíÕë¶Ô¿ª·¢ÈËԱʹÓÃGit×öÁË´óÁ¿µÄÓÅ»¯¹¤×÷£¬¸ÐÐËȤµÄÅóÓÑÒ²¿ÉÒԵǼhttp://www.hwclouds.com/devcloud/ÍøÕ¾ÏÂÔØÊÔÓã¬ÌåÑéÒ»°ÑÓÃÓÅ»¯Á˵ÄGit½øÐа汾¿ØÖƵĸÐÊÜ£¡ |