Forking¹¤×÷Á÷ºÍÇ°ÃæÌÖÂ۵ļ¸ÖÖ¹¤×÷Á÷Óиù±¾µÄ²»Í¬¡£ÕâÖÖ¹¤×÷Á÷²»ÊÇʹÓõ¥¸ö·þÎñ¶Ë²Ö¿â×÷Ϊ¡ºÖÐÑë¡»´úÂë»ùÏߣ¬¶øÈø÷¸ö¿ª·¢Õß¶¼ÓÐÒ»¸ö·þÎñ¶Ë²Ö¿â¡£ÕâÒâζן÷¸ö´úÂë¹±Ï×ÕßÓÐ2¸öGit²Ö¿â¶ø²»ÊÇ1¸ö£ºÒ»¸ö±¾µØË½Óеģ¬ÁíÒ»¸ö·þÎñ¶Ë¹«¿ªµÄ¡£

Forking¹¤×÷Á÷µÄÒ»¸öÖ÷ÒªÓÅÊÆÊÇ£¬¹±Ï׵ĴúÂë¿ÉÒÔ±»¼¯³É£¬¶ø²»ÐèÒªËùÓÐÈ˶¼ÄÜpush´úÂëµ½½öÓеÄÖÐÑë²Ö¿âÖС£¿ª·¢Õßpushµ½×Ô¼ºµÄ·þÎñ¶Ë²Ö¿â£¬¶øÖ»ÓÐÏîĿά»¤Õß²ÅÄÜpushµ½Õýʽ²Ö¿â¡£ÕâÑùÏîĿά»¤Õß¿ÉÒÔ½ÓÊÜÈκοª·¢ÕßµÄÌá½»£¬µ«ÎÞÐè¸øËûÕýʽ´úÂë¿âµÄдȨÏÞ¡£
Ч¹û¾ÍÊÇÒ»¸ö·Ö²¼Ê½µÄ¹¤×÷Á÷£¬ÄÜΪ´óÐÍ¡¢×Ô·¢ÐÔµÄÍŶӣ¨°üÀ¨Á˲»ÊÜÐŵĵÚÈý·½£©ÌṩÁé»îµÄ·½Ê½À´°²È«µÄÐ×÷¡£Ò²ÈÃÕâ¸ö¹¤×÷Á÷³ÉΪ¿ªÔ´ÏîÄ¿µÄÀíÏ빤×÷Á÷¡£
¹¤×÷·½Ê½
ºÍÆäËüµÄGit¹¤×÷Á÷Ò»Ñù£¬Forking¹¤×÷Á÷ÒªÏÈÓÐÒ»¸ö¹«¿ªµÄÕýʽ²Ö¿â´æ´¢ÔÚ·þÎñÆ÷ÉÏ¡£µ«Ò»¸öеĿª·¢ÕßÏëÒªÔÚÏîÄ¿ÉϹ¤×÷ʱ£¬²»ÊÇÖ±½Ó´ÓÕýʽ²Ö¿â¿Ë¡£¬¶øÊÇforkÕýʽÏîÄ¿ÔÚ·þÎñÆ÷ÉÏ´´½¨Ò»¸ö¿½±´¡£
Õâ¸ö²Ö¿â¿½±´×÷ΪËû¸öÈ˹«¿ª²Ö¿â ¡ª¡ª ÆäËü¿ª·¢Õß²»ÔÊÐípushµ½Õâ¸ö²Ö¿â£¬µ«¿ÉÒÔpullµ½Ð޸ģ¨ºóÃæÎÒÃǺܿì¾Í»á¿´ÕâµãºÜÖØÒª£©¡£ÔÚ´´½¨ÁË×Ô¼º·þÎñ¶Ë¿½±´Ö®ºó£¬ºÍ֮ǰµÄ¹¤×÷Á÷Ò»Ñù£¬¿ª·¢ÕßÖ´ÐÐgit
cloneÃüÁî¿Ë¡²Ö¿âµ½±¾µØ»úÆ÷ÉÏ£¬×÷Ϊ˽ÓеĿª·¢»·¾³¡£
ÒªÌá½»±¾µØÐÞ¸Äʱ£¬pushÌá½»µ½×Ô¼º¹«¿ª²Ö¿âÖÐ ¡ª¡ª ¶ø²»ÊÇÕýʽ²Ö¿âÖС£È»ºó£¬¸øÕýʽ²Ö¿â·¢ÆðÒ»¸öpull
request£¬ÈÃÏîĿά»¤ÕßÖªµÀÓиüÐÂÒѾ׼±¸ºÃ¿ÉÒÔ¼¯³ÉÁË¡£¶ÔÓÚ¹±Ï׵ĴúÂ룬pull requestÒ²¿ÉÒԺܷ½±ãµØ×÷Ϊһ¸öÌÖÂ۵ĵط½¡£
ΪÁ˼¯³É¹¦Äܵ½Õýʽ´úÂë¿â£¬Î¬»¤Õßpull¹±Ï×Õߵıä¸üµ½×Ô¼ºµÄ±¾µØ²Ö¿âÖУ¬¼ì²é±ä¸üÒÔÈ·±£²»»áÈÃÏîÄ¿³ö´í£¬ºÏ²¢±ä¸üµ½×Ô¼º±¾µØµÄmaster·ÖÖ§£¬È»ºópushmaster·ÖÖ§µ½·þÎñÆ÷µÄÕýʽ²Ö¿âÖС£µ½´Ë£¬¹±Ï×µÄÌá½»³ÉΪÁËÏîÄ¿µÄÒ»²¿·Ö£¬ÆäËüµÄ¿ª·¢ÕßÓ¦¸ÃÖ´ÐÐpull²Ù×÷ÓëÕýʽ²Ö¿âͬ²½×Ô¼º±¾µØ²Ö¿â¡£
Õýʽ²Ö¿â
ÔÚForking¹¤×÷Á÷ÖУ¬¡º¹Ù·½¡»²Ö¿âµÄ½Ð·¨Ö»ÊÇÒ»¸öÔ¼¶¨£¬Àí½âÕâµãºÜÖØÒª¡£´Ó¼¼ÊõÉÏÀ´¿´£¬¸÷¸ö¿ª·¢Õß²Ö¿âºÍÕýʽ²Ö¿âÔÚGit¿´À´Ã»ÓÐÈκÎÇø±ð¡£ÊÂʵÉÏ£¬ÈÃÕýʽ²Ö¿âÖ®ËùÒÔÕýʽµÄΨһÔÒòÊÇËüÊÇÏîĿά»¤ÕߵĹ«¿ª²Ö¿â¡£
Forking¹¤×÷Á÷µÄ·Ö֧ʹÓ÷½Ê½
ËùÓеĸöÈ˹«¿ª²Ö¿âʵ¼ÊÉÏÖ»ÊÇΪÁË·½±ãºÍÆäËüµÄ¿ª·¢Õß¹²Ïí·ÖÖ§¡£¸÷¸ö¿ª·¢ÕßÓ¦¸ÃÓ÷ÖÖ§¸ôÀë¸÷¸ö¹¦ÄÜ£¬¾ÍÏñÔÚ¹¦ÄÜ·ÖÖ§¹¤×÷Á÷ºÍGitflow¹¤×÷Á÷Ò»Ñù¡£Î¨Ò»µÄÇø±ðÊÇÕâЩ·ÖÖ§±»¹²ÏíÁË¡£ÔÚForking¹¤×÷Á÷ÖÐÕâЩ·ÖÖ§»á±»pullµ½ÁíÒ»¸ö¿ª·¢Õߵı¾µØ²Ö¿âÖУ¬¶øÔÚ¹¦ÄÜ·ÖÖ§¹¤×÷Á÷ºÍGitflow¹¤×÷Á÷ÖÐÊÇÖ±½Ó±»pushµ½Õýʽ²Ö¿âÖС£
ʾÀý
ÏîĿά»¤Õß³õʼ»¯Õýʽ²Ö¿â

ºÍÈκÎʹÓÃGitÏîĿһÑù£¬µÚÒ»²½ÊÇ´´½¨ÔÚ·þÎñÆ÷ÉÏÒ»¸öÕýʽ²Ö¿â£¬ÈÃËùÓÐÍŶӳÉÔ±¶¼¿ÉÒÔ·ÃÎʵ½¡£Í¨³£Õâ¸ö²Ö¿âÒ²»á×÷ΪÏîĿά»¤ÕߵĹ«¿ª²Ö¿â¡£
¹«¿ª²Ö¿âÓ¦¸ÃÊÇÂã²Ö¿â£¬²»¹ÜÊDz»ÊÇÕýʽ´úÂë¿â¡£ËùÒÔÏîĿά»¤Õß»áÔËÐÐÏñÏÂÃæµÄÃüÁîÀ´´î½¨Õýʽ²Ö¿â£º
ssh user@host
git init --bare /path/to/repo.git
BitbucketºÍStashÌṩÁËÒ»¸ö·½±ãµÄGUI¿Í»§¶ËÒÔÍê³ÉÉÏÃæÃüÁîÐÐ×öµÄÊ¡£Õâ¸ö´î½¨ÖÐÑë²Ö¿âµÄ¹ý³ÌºÍÇ°ÃæÌáµ½µÄ¹¤×÷Á÷ÍêȫһÑù¡£Èç¹ûÓÐÏÖ´æµÄ´úÂë¿â£¬Î¬»¤ÕßÒ²Òªpushµ½Õâ¸ö²Ö¿âÖС£
¿ª·¢ÕßforkÕýʽ²Ö¿â

ÆäËüËùÓеĿª·¢ÐèÒªforkÕýʽ²Ö¿â¡£¿ÉÒÔÓÃgit cloneÃüÁîÓÃSSHÐÒéÁ¬Í¨µ½·þÎñÆ÷£¬¿½±´²Ö¿âµ½·þÎñÆ÷ÁíÒ»¸öλÖÃ
¡ª¡ª Êǵģ¬fork²Ù×÷»ù±¾ÉϾÍÖ»ÊÇÒ»¸ö·þÎñ¶ËµÄ¿Ë¡¡£BitbucketºÍStashÉÏ¿ÉÒÔµãһϰ´Å¥¾ÍÈÿª·¢ÕßÍê³É²Ö¿âµÄfork²Ù×÷¡£
ÕâÒ»²½Íê³Éºó£¬Ã¿¸ö¿ª·¢¶¼ÔÚ·þÎñ¶ËÓÐÒ»¸ö×Ô¼ºµÄ²Ö¿â¡£ºÍÕýʽ²Ö¿âÒ»Ñù£¬ÕâЩ²Ö¿âÓ¦¸ÃÊÇÂã²Ö¿â¡£
¿ª·¢Õ߿ˡ×Ô¼ºfork³öÀ´µÄ²Ö¿â

ÏÂÒ»²½£¬¸÷¸ö¿ª·¢ÕßÒª¿Ë¡×Ô¼ºµÄ¹«¿ª²Ö¿â£¬ÓÃÊìϤµÄgit cloneÃüÁî¡£
ÔÚÕâ¸öʾÀýÖУ¬¼Ù¶¨ÓÃBitbucketÍйÜÁ˲ֿ⡣¼Çס£¬Èç¹ûÕâÑùµÄ»°¸÷¸ö¿ª·¢ÕßÐèÒªÓи÷×ÔµÄBitbucketÕ˺ţ¬Ê¹ÓÃÏÂÃæÃüÁî¿Ë¡·þÎñ¶Ë×Ô¼ºµÄ²Ö¿â£º
git clone https://user@bitbucket.org/user/repo.git |
Ïà±ÈÇ°Ãæ½éÉܵŤ×÷Á÷Ö»ÓÃÁËÒ»¸öoriginÔ¶³Ì±ðÃûÖ¸ÏòÖÐÑë²Ö¿â£¬Forking¹¤×÷Á÷ÐèÒª2¸öÔ¶³Ì±ðÃû
¡ª¡ª Ò»¸öÖ¸ÏòÕýʽ²Ö¿â£¬ÁíÒ»¸öÖ¸Ïò¿ª·¢Õß×Ô¼ºµÄ·þÎñ¶Ë²Ö¿â¡£±ðÃûµÄÃû×Ö¿ÉÒÔÈÎÒâÃüÃû£¬³£¼ûµÄÔ¼¶¨ÊÇʹÓÃorigin×÷ΪԶ³Ì¿Ë¡µÄ²Ö¿âµÄ±ðÃû£¨Õâ¸ö±ðÃû»áÔÚÔËÐÐgit
clone×Ô¶¯´´½¨£©£¬upstream£¨ÉÏÓΣ©×÷ΪÕýʽ²Ö¿âµÄ±ðÃû¡£
git remote add upstream https://bitbucket.org/maintainer/repo |
ÐèÒª×Ô¼ºÓÃÉÏÃæµÄÃüÁî´´½¨upstream±ðÃû¡£ÕâÑù¿ÉÒÔ¼òµ¥µØ±£³Ö±¾µØ²Ö¿âºÍÕýʽ²Ö¿âµÄͬ²½¸üС£×¢Ò⣬Èç¹ûÉÏÓβֿâÐèÒªÈÏÖ¤£¨±ÈÈç²»ÊÇ¿ªÔ´µÄ£©£¬ÄãÐèÒªÌṩÓû§£º
git remote add upstream https://user@bitbucket.org/maintainer/repo.git |
ÕâʱÔÚ¿Ë¡ºÍpullÕýʽ²Ö¿âʱ£¬ÐèÒªÌṩÓû§µÄÃÜÂë¡£
¿ª·¢Õß¿ª·¢×Ô¼ºµÄ¹¦ÄÜ

ÔÚ¸Õ¿Ë¡µÄ±¾µØ²Ö¿âÖУ¬¿ª·¢Õß¿ÉÒÔÏñÆäËü¹¤×÷Á÷Ò»ÑùµÄ±à¼´úÂë¡¢Ìá½»Ð޸ĺÍн¨·ÖÖ§£º
git checkout -b some-feature // Edit some code git commit -a -m "Add first draft of some feature" |
ËùÓеÄÐ޸ͼÊÇ˽ÓеÄÖ±µ½pushµ½×Ô¼º¹«¿ª²Ö¿âÖС£Èç¹ûÕýʽÏîÄ¿ÒѾÍùǰ×ßÁË£¬¿ÉÒÔÓÃgit
pullÃüÁî»ñµÃеÄÌá½»£º
ÓÉÓÚ¿ª·¢ÕßÓ¦¸Ã¶¼ÔÚרÃŵŦÄÜ·ÖÖ§ÉϹ¤×÷£¬pull²Ù×÷½á¹û»á¶¼ÊÇ¿ì½øºÏ²¢¡£
¿ª·¢Õß·¢²¼×Ô¼ºµÄ¹¦ÄÜ

Ò»µ©¿ª·¢Õß×¼±¸ºÃÁË·ÖÏíй¦ÄÜ£¬ÐèÒª×ö¶þ¼þÊ¡£Ê×ÏÈ£¬Í¨¹ýpushËûµÄ¹±Ï×´úÂëµ½×Ô¼ºµÄ¹«¿ª²Ö¿âÖУ¬ÈÃÆäËüµÄ¿ª·¢Õß¶¼¿ÉÒÔ·ÃÎʵ½¡£ËûµÄoriginÔ¶³Ì±ðÃûÓ¦¸ÃÒѾÓÐÁË£¬ËùÒÔÒª×öµÄ¾ÍÊÇ£º
git push origin feature-branch |
ÕâÀïºÍ֮ǰµÄ¹¤×÷Á÷µÄ²îÒìÊÇ£¬originÔ¶³Ì±ðÃûÖ¸Ïò¿ª·¢Õß×Ô¼ºµÄ·þÎñ¶Ë²Ö¿â£¬¶ø²»ÊÇÕýʽ²Ö¿â¡£
µÚ¶þ¼þÊ£¬¿ª·¢ÕßҪ֪ͨÏîĿά»¤Õߣ¬ÏëÒªºÏ²¢ËûµÄй¦Äܵ½Õýʽ¿âÖС£BitbucketºÍStashÌṩÁËPull
Request°´Å¥£¬µ¯³ö±íµ¥ÈÃÄãÖ¸¶¨Äĸö·ÖÖ§ÒªºÏ²¢µ½Õýʽ²Ö¿â¡£Ò»°ãÄã»áÏ뼯³ÉÄãµÄ¹¦ÄÜ·ÖÖ§µ½ÉÏÓÎÔ¶³Ì²Ö¿âµÄmaster·ÖÖ§ÖС£
ÏîĿά»¤Õß¼¯³É¿ª·¢ÕߵŦÄÜ

µ±ÏîĿά»¤ÕßÊÕµ½pull request£¬ËûÒª×öµÄÊǾö¶¨ÊÇ·ñ¼¯³ÉËüµ½Õýʽ´úÂë¿âÖС£ÓжþÖÖ·½Ê½À´×ö£º
Ö±½ÓÔÚpull requestÖв鿴´úÂë
pull´úÂëµ½Ëû×Ô¼ºµÄ±¾µØ²Ö¿â£¬ÔÙÊÖ¶¯ºÏ²¢
µÚÒ»ÖÖ×ö·¨¸ü¼òµ¥£¬Î¬»¤Õß¿ÉÒÔÔÚGUIÖв鿴±ä¸üµÄ²îÒ죬×öÆÀ×¢ºÍÖ´Ðкϲ¢¡£µ«Èç¹û³öÏÖÁ˺ϲ¢³åÍ»£¬ÐèÒªµÚ¶þÖÖ×ö·¨À´½â¾ö¡£ÕâÖÖÇé¿öÏ£¬Î¬»¤ÕßÐèÒª´Ó¿ª·¢ÕߵķþÎñ¶Ë²Ö¿âÖÐfetch¹¦ÄÜ·ÖÖ§£¬ºÏ²¢µ½Ëû±¾µØµÄmaster·ÖÖ§£¬½â¾ö³åÍ»£º
git fetch https://bitbucket.org/user/repo feature-branch // ²é¿´±ä¸ü git checkout master git merge FETCH_HEAD |
±ä¸ü¼¯³Éµ½±¾µØµÄmaster·ÖÖ§ºó£¬Î¬»¤ÕßÒªpush±ä¸üµ½·þÎñÆ÷ÉϵÄÕýʽ²Ö¿â£¬ÕâÑùÆäËüµÄ¿ª·¢Õß¶¼ÄÜ·ÃÎʵ½£º
×¢Ò⣬ά»¤ÕßµÄoriginÊÇÖ¸ÏòËû×Ô¼º¹«¿ª²Ö¿âµÄ£¬¼´ÊÇÏîÄ¿µÄÕýʽ´úÂë¿â¡£µ½´Ë£¬¿ª·¢ÕߵűÏ×ÍêÈ«¼¯³Éµ½ÁËÏîÄ¿ÖС£
¿ª·¢ÕߺÍÕýʽ²Ö¿â×öͬ²½

ÓÉÓÚÕýʽ´úÂë¿âÍùǰ×ßÁË£¬ÆäËüµÄ¿ª·¢ÐèÒªºÍÕýʽ²Ö¿â×öͬ²½£º
ÏÂÒ»Õ¾
Èç¹ûÄã֮ǰÊÇʹÓÃSVN£¬Forking¹¤×÷Á÷¿ÉÄÜ¿´ÆðÀ´ÏñÊÇÒ»¸ö¼¤½øµÄ·¶Ê½Çл»£¨paradigm shift£©¡£µ«²»Òªº¦Å£¬Õâ¸ö¹¤×÷Á÷ʵ¼ÊÉϾÍÊÇÔÚ¹¦ÄÜ·ÖÖ§¹¤×÷Á÷Ö®ÉÏÒýÈëÁíÒ»¸ö³éÏó²ã¡£²»ÊÇÖ±½Óͨ¹ýµ¥¸öÖÐÑë²Ö¿âÀ´·ÖÏí·ÖÖ§£¬¶øÊǰѹ±Ï×´úÂë·¢²¼µ½¿ª·¢Õß×Ô¼ºµÄ·þÎñ¶Ë²Ö¿âÖС£
ʾÀýÖнâÊÍÁË£¬Ò»¸ö¹±Ï×ÈçºÎ´ÓÒ»¸ö¿ª·¢ÕßÁ÷µ½ÕýʽµÄmaster·ÖÖ§ÖУ¬µ«Í¬ÑùµÄ·½·¨¿ÉÒ԰ѹ±Ï×¼¯³Éµ½ÈÎÒ»¸ö²Ö¿âÖС£±ÈÈ磬Èç¹ûÍŶӵöÈËÐ×÷ʵÏÖÒ»¸ö¹¦ÄÜ£¬¿ÉÒÔÔÚ¿ª·¢Ö®¼äÓÃÏàͬµÄ·½·¨·ÖÏí±ä¸ü£¬ÍêÈ«²»Éæ¼°Õýʽ²Ö¿â¡£
ÕâʹµÃForking¹¤×÷Á÷¶ÔÓÚËÉÉ¢×éÖ¯µÄÍŶÓÀ´ËµÊǸö·Ç³£Ç¿´óµÄ¹¤¾ß¡£ÈÎÒ»¿ª·¢Õß¿ÉÒÔ·½±ãµØºÍÁíÒ»¿ª·¢Õß·ÖÏí±ä¸ü£¬ÈκηÖÖ§¶¼ÄÜÓÐЧµØºÏ²¢µ½Õýʽ´úÂë¿âÖС£ |