From 7ceac3d8ebdf1f9e56e5fb6919dce43e9d9626bc Mon Sep 17 00:00:00 2001 From: Jerry Lee Date: Sun, 31 Aug 2014 01:08:04 +0800 Subject: [PATCH] complete pull-request draft --- .../images/git-workflows-forking-1.png | Bin 0 -> 1597 bytes .../images/git-workflows-forking-2.png | Bin 0 -> 3445 bytes .../images/git-workflows-forking-4.png | Bin 0 -> 6846 bytes .../images/git-workflows-forking-5.png | Bin 0 -> 7570 bytes .../images/git-workflows-forking-6.png | Bin 0 -> 8479 bytes .../images/git-workflows-forking-7.png | Bin 0 -> 7973 bytes .../images/git-workflows-forking.png | Bin 0 -> 15572 bytes git-workflows-and-tutorials/pull-request.md | 2 + .../workflow-forking.md | 189 ++++++++++++++++++ 9 files changed, 191 insertions(+) create mode 100644 git-workflows-and-tutorials/images/git-workflows-forking-1.png create mode 100644 git-workflows-and-tutorials/images/git-workflows-forking-2.png create mode 100644 git-workflows-and-tutorials/images/git-workflows-forking-4.png create mode 100644 git-workflows-and-tutorials/images/git-workflows-forking-5.png create mode 100644 git-workflows-and-tutorials/images/git-workflows-forking-6.png create mode 100644 git-workflows-and-tutorials/images/git-workflows-forking-7.png create mode 100644 git-workflows-and-tutorials/images/git-workflows-forking.png diff --git a/git-workflows-and-tutorials/images/git-workflows-forking-1.png b/git-workflows-and-tutorials/images/git-workflows-forking-1.png new file mode 100644 index 0000000000000000000000000000000000000000..eaf9d6917670cdb7c802e5e752ed4f80fdd82a16 GIT binary patch literal 1597 zcmeAS@N?(olHy`uVBq!ia0vp^MnG)A!3HGvFIjyZNJ*BsMwA5Srr5%(GQ`zk9!uLS~AsQn;zFfp39xYDT62(s|s5su(?)1Hb_`sNdc^+B->UA;;0DU00rm#qErP_J!9Qu14BavGc!Fy z6H_xYLmdSp14AQy10XWfH8im@HM24@SAYT~plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d2fv+#z;JjjJKmmhHzap_f-%!s$KQ|ZTFR<$3lAu(CGq9>I4yi0i)elN7 z&Mz%W2F6F4GE6ft?C@IzQV4X7m48ttFj5k8T=J7kb5rw5JY8&+fHHb1nJHEVMi#(O zG&eCYH!?7@Ff?>@GIezWQbraorsj@D&M-5u=`}HNGP5wTv~YAZGBz}HH3Cv@&Iaag zj;`hw=9W&5Fuk66#U+V($*C}VGlBL(^_t_=Yvo*&npl!w6q28x14{t`8Tlpo#Toep z3eLf13L3tN$(eZ|0ZmW@LHz5IT9jFqn&MWJpQ`{4VXI6mE&zI$fX^X%Q^*N5eV}9X zLCFItxxj>gX%NJOCw?FYo_$jDfO)0}m^m17rU3I5Q?{pzV@SoVH?zF`4mcyRgFM8h0d(*O}a>ve+X-^%k4rZ2B z9JSc9>R-4z+Xs>4rtCB(#fIEnYbNKeNLuMw=HkFUQQ_I!_mkevxZ=6CD020rrN5I; zcm3b@T=VHJ+xk0StNs?UDH{Dwsg_ZdJ@vaPsLww{Cv;^->g}lBiAxKu)=I3q`*J1U z%*S6sPJg^~<%ZfTPw9@w>lZP&FIUsOZ*b1Jp}Ov4O?QWk(k8YEzY=uM_(ZR=iavGr zr^Slj?dz&)eu=DPbNDsGWAf2fL;Kn;9fsK0?SD(&{QeipD-wG`owtsh!c8y4;|9>zwbuI%chUyTfMB&bKujs_P!7{(U}~L8iX6 zS<}LI{>IB<(_fd_e--J-*199ISStDWd%=UXJ0y#&mcNiasqnd2)xLLLMwNG!LjAp> zf97XDFfCtc`(WuE)7=*Z9rztcut9$TG3IhNSi9*j~2o zdHR%DU$riH&zFa(0n@6sT>dw?=!oFVdQ&MBb@ E0N(dbxBvhE literal 0 HcmV?d00001 diff --git a/git-workflows-and-tutorials/images/git-workflows-forking-2.png b/git-workflows-and-tutorials/images/git-workflows-forking-2.png new file mode 100644 index 0000000000000000000000000000000000000000..fd1d1e00269cd60b01db247308135835ef0c45dc GIT binary patch literal 3445 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 literal 0 HcmV?d00001 diff --git a/git-workflows-and-tutorials/images/git-workflows-forking-4.png b/git-workflows-and-tutorials/images/git-workflows-forking-4.png new file mode 100644 index 0000000000000000000000000000000000000000..8920e658f98e39200344e8dcf6f691ab7e276a00 GIT binary patch literal 6846 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 literal 0 HcmV?d00001 diff --git a/git-workflows-and-tutorials/images/git-workflows-forking-5.png b/git-workflows-and-tutorials/images/git-workflows-forking-5.png new file mode 100644 index 0000000000000000000000000000000000000000..e54be44b5f2aeaf3c131f158575bcff89d31cfa6 GIT binary patch literal 7570 zcmbVx2UJtrwzdToMFo+LNC+ZDTId~tBoKN@=ma5j2oVUqsG!nCstAG*f-1puX_kVA^myztb_gdeqYp%KH-ib9f)V^|w>(Z%Hr>?+s zz@{`xq5Zn)&(n@#WffyI!ij}gV$Cov*gywg=TjO^7)NIS4DI0RZ0hXb6ztROta9qq zSvPmMCDzhFUkQali#wcP#DmcHY22qysi+6tcR+bMV*!rNuI}Edz>UUcAi&*86=)%A zAZc)4%h}CcC&bs;EW{9w3h_iKIsw(y04hOBGy!O5tOFnj?d9#K6r>9Lhg>Dv`N^;Z z5bzHO)>9Sumr<4m#sDphuQNbaTv`kz2?7D+rNJ>JI_LUO@$tcOn zDM`r#{`mpYwD~%@D4Bwx|I|ghQU$tUvGii#O{9CjiJovt|gsHP1#@`o3TMrlhznN*V`|lN<0BP1J z8Tq=?7RA8}j6wOMoxQOzuqu!?Bkttxq$DY&K#QWhjHJAjq?`f>q@gJbfzpVS0$5gF zLrUv!8UKz~0jj7Vr==mOK|_N;5Gf5QX{eT@JX8ZBuOP3esqr^2%-av^;Ei(rTdzA! zuRK@|EDM!W_-}cYw0xZ%uoz!B2IKX21{k|xuoyo#%zc2CnH)gKzyam%eKH_?vOs_N z3wHK(4{&yZ`eM+4e?(Zx{ohzXbN7Gn{4ZXo|4Y;)XvRpKq{n|sm%oQ-Ie2pVujHp) z{A>F-d(-xeFKu%?I0K@m?aPlaum(J6ay>^6Gu1I0tsQu$n!o*>40;lJ?&|%Af!71S zAl8kHi&oWk1$E9~=Ys43eS$GH7_PnRZC3uj-e;fvaF=l&IsC?OzKh*ztS@3kn{oAz z%oLs2_doaO=$!A|E*VnUdd+#&)e*;V^LJReP~gP!qWNhqq=HKLenC$E7R6#baho`|hrJ@P`Gw(9!8TTuVnLR+u?$5)A!#&3zp9iUm{1g%1+0Nx2ERi4G zWf)dIxn4<6$T_2*S+=%11DmzvR%BlaaDB+x&gkiTa4}Ta+dXm-Z2h2Q_=6K;!;uZHG_|TK;w2Q!8w}%?rh|02Rp7sgVXB za8a+&`D^zrh*VD6oJN_%xM}LV=5mO^o8Urksxp13-X)tjVc6?zge|zoOG=`;_-UAz=ZBDNxBD9iUWLZnv1|tce+F%M_&4bMv0v{XV*7vy-)nK z(ra>R$<@7c8@mP$7W0JGZ}_xi@+4!?Z|z>ZL=qlvzL-q@{$;&rUiZ8GvaEO_Ove9K zj-ooh+VSE-a{B1!iR%5MA!1UQCs~LvAVm?)krQ;BpVtmHX;4v3Ntqmv5qj`z#Oltx z=XC5E=LPhj3G22#**T#C(TbRX$OhW}Xc%iz5D3$+J4pTBt6qI~!l}c*9AYsPNm-nV zdO=mfK+o8&s4xBI{v@s?-nq0dl2cE^uh-;z4}4X-v&(bfvds&?jpv;`?B6F5WGBw@tjnQ+xphjxWqWO_fS5Xg z0KYl^u!je4v~jDRU!%gCeAqacxkx1$fCjP1zF$bEG~&6sedgNJS9e3vp8SbVi^tdc zH>szY>Ym5s&e*OgoaRHr4BUH^zYjbKCAbMr4pYwF7&a^E*MRBb$miFa_mqE} zUKu?X5Suk%%PRcqN#2!-<=jG9p-(9m>x?p0JE4se7@k9=F&s{w*s7{m#N`n$tJ53W z`1@$5dEt(Sh`4w}W<4PT{oN{;?y^9P*_CkhOwZa4>O31W@O$HD!!?40(?=?&S3o0^ zX#fY`sQmghlL@VU*x57p8nLS>0*e~IJ`T|5AG183j4Aee=f^*Sym}q(R~6eck`cop z?3BdJ1x+*RrpV#2MZ3P$W;??fW6$tRY=}|RuYF^L{k7mt zEqE+OJ@?C~vihd^RmfKHDxrGUda15-Ft)*~z_|!4l3x8(1bR{1y8QEGv0OPp1j#?2 zg$j&fk0`3QmNM<)AdK2wHoLst2bgqJ$XD&(`(P2O1D#p+S?QXptZGT6Yx^`-q1A1) zD0^Wubqq0Jm;)oW_9wF^ORdi?4#pdUJMlVOHoW&(Zb!8mxtiK%3FwDtLV4qK=^+A- zjp3R?B7Bc=%qN5;ok`Q=;t8Qm<``YHq8NbibS!A(-$T+3lXDg_z zf_<$z3+Fwdo_5vV>P|vZRNhqjT=}^)S-DQYk^DCAamdaKV$*7IlxG{U?m(13E>-ZY zq|a(!6H#HaI4XTGaE{tI%!RA?cIJa>kZ|4A2-cc-iMyOv8nyK?6V#j5lk=b>VG zYw{(w4lsPPRo>H2gv78MYH1fH@`7#E%R`8PrQmHbf-?Uj&x2|MJ|I^%+t@z)q7JiS zuiDzb`@W$BY_1P;NB#7-ZZd2e&Zoc3S58V}POb@ny9>POe?Og3h+ig`r_~b`%VaIno!4wNTjNSn-vDCU+PK8DO%d)-Zj;?C$?Bt zx@MeNYdPPipFLm85RPKzcjmoSH`0*Z>%<=U?Ge(|V?XXg02h0sTkeFrZHlJ1B;+FB zVsK>%3as-WuAwGZaSFAzL=-i!xYNhF+{|YQ{*jbY1t;9j>nPw&O;@> zgD;9Xc#m zoe|PKXBSU!xqN8*YC9l&mO6M>U@ek)S8awky&{};gjkn?Xb zAx~3wL!!D3ZYS)p1&4nC+a1rdF4{hyiktS{3>CQEQT=&}!Tv#g*In>`O^<(N%k#If zI}3S951Qm80w*eZ%8N-mn%>#IHulH!uR7&vn@%7ij_fYR z_4;ZT*7H8^H=?zr`lJdvJJVmG{hbfA^Z%rG7cZQ-!D&*6XB>?d!fvko3FtAkbOHRn zwp}&N)~M3PHJp8ItUhl`gcNUg_)efKZRe9QBs~&1qGEEIFB5cbr;go(mm-GTWXi(hFV_N`mkO+?0wlpe zM$)XFs~IreFfQm2oKJDElObI3!D82U=B_>VhB@e+Wk=jq7cpsSECE=1 zHqBubr9EsbE?5zEzdeP__#C_TT8!2sb6PdV;F+-2-Vu-97M6z(dC6!c6Q?+DHjxD& ztb0+@&1Yek`e|M9op%qc$WDpTgz?N*b+Ff~DgFKZaizS-9kCLg@J;zYZLX|MP;M;N z8tng&nK@}%f89;7Ml6)1HEjEQBHZ-s6%GW?K@iL{BLXDf?+IQ_kEUPrhr1l_^VKA@ zs*?Em?YrU`YS`baaU8RC4hm7`1btRW3>E`6!~Oy<(!$Jjy}Lq;SkH$i70*$4pf9Rl z`-_!`dm^D0q{ZZOEzAWatgGKA)m>|>d{&1GbCcpxUoE);IT1NFl71on^)@hnE562| zH%E1qI6`Qlp}S;ilNZsT^%VKuf@PppL*oX_{sR_NdzQOXg#Py)N{~}X9v{I$J=be%2v3YncM~ z%vY&6E))Nf*El7uH`U!?0|?~x8zcAB2%OpoNKQg(cK?%zs|%Ta*D8I>sU)VPnm%!UBAHps7 z%0MT+d<{Btdpp5zH#50BZl>vo{6_p4C{v9k0p(5bgR)v6l|`fNQ8Jev?nK1xr<$Q@ zJI^;xjOVuVEZ2Z_Yck#=U_O_pW6de3uD2SVp^D=-|gt`&oCkq1z012=fjX%4}tDqprBob-XQ~W0flo%*GPeuyzY}Zlx zvsF3Ig>KxR3b&9eSk)aw(Xk;6pv!6Ji;uZd&fP&ffg@~!-JvcjD*cM#Dot>33(~25 zE(AQndbW_Nep| zdAaG&(BJB~S(TBSUsI)vL_-iZfx4fRw|>aqObN;5Z)y06B#kj)BIfE`yy&fG!ha7` zjHikEsfX3D1r@u9=HWR=o2IoKpvP73pOkp=Tv#t4#P6b``-?Z6;UwOr8wGFZ!e=Sr z3FLOIuN`KRu6JeGQvw>={q9h<1YwVU3539p|MXXf{P zz~-czk%vcmBV0^L+deHF0i^_iMiwZN)Tj&gV#wK*#$yk-p+P&E^B zMb1d8(lId6oVe&UIt{WG2)O*a?N)K8d zFV(uZVX!njCSAJQa1X1-x9^C#6nFYKlQ^g_mc_DT{tc%Kv*V?6bhyOYnD~Wyie4vi z#dwoR>DG+Wp9pqdo*S>Vt4Jac|Gvm*D^4a=zS*&{jH0lJhocr1wpDGrZk0GQcg4sQ zoaCW>es11Sk+JXwyzTfPs$!~yX}jfuptMS!h*wvfFgW}i4uBqwes7!UGZ>Mmm?{Z- z$)kF7DXs(p5}r&5ImMIIz{!}z4xwAwGC?4IJHd{Yz1^()hUIv8?Tv=Z0 z^*F|L8WLf;m%6Qq>eNtN2x2T^Oomg>Mzh|t6G-s5Hc3c<2orRz2E}vKg=ZG#Q;pQ! zf9Y^dzK*Fbri^j>3l3}c!lj%MPxxF)14Pf89Bv-)?l;(%nbj~=xlv?5qMy`y>(LJ! zg#h05-}n>P2~x|JS)ZM)>rkK{`P&_2&*t?a_6bb#x_-yw&OvLKM{^Rr;z+BESmrmc z(#_H%lty|GBM`XyYVf9fE8P?|m;1@X9HrDrms7!Bue3ZX`xm%?GUFSnB;LFk7SWie zUtT5<{TYtgqIhc$2=_}1Xnj%>0ZoB3BoN%~?`o%+Bt9DsQ>&Od+cBCOetJbRS1)mx zTBRJ~PaL#TCUPetVW z3|MEk8I!BX;>Es6pMJY=Bpkg|!B1H0QIfxFg0|u}|E$b;AxFc(ka4o=-6QhXX;POx z6hO*Rk=212;V5vM@yIxezPsDbM8|~#hXi_L%*QO5BH{~M@2`UL{fa~93arg>c^29i zE`~fweD~6O7f9gmfPXxf*YdI8ex{`f0<+=1vC!N5vGS9GtA^bOUaHa}G#Zru@>=^! zBQv7UbVH`LrsUArbi|VHy9!EU{8RG#x4!SU3LcQFUu3O8FW zi*GexM!>*@ZB#XS4lTI%j^9Mm<;~MulrLNTf&7$2w(85ftqp>Ub-Xp%;N|TuIne|^ zBPZ+Zq?ZEHv41RK0^y{g#A3g4Cr+#~k?e0^d{CPwFa4(4OskP?VY>aIT~bGS^i#z@ z>N+($XX3Ls?qe{~6pYWXbU!_06h^x{I@BBS)K8-#8=1+%umfU$g1zMP2Q5ZIPSHB|@?J$e5~|2KnTV7Y1%P%vS2RM~hOP^X~&7JTBU%@t#74zAb{O zt#)LA;JQgwb{SmmanZzmy_~kiIXzOpC%4d60kg@G+5*?cwg!|h3xt!x?TXRkpEet2 znOOD)vYK4y7mDRd(9pRzc}0X{sRgKZHFga&;W!ND>9Q_9E=3)O06R&$XJ~J7sv5qT zziWB7>9O6Aa(sWXHJ39YgnQih>$vnFVIvWMV*`$=-Eu1CP#t&zp!Mw?c@({qw+zoE z!85h?_rf#Zj@_lQiDrZTQ1D}mt}1h^(5)~-U(U$6e3yqJED95ss2#k&naibGX9Osr&VfK_0jkC4yrQobDB>Obu9<%0nS7ETF7p?HKfRR@fXK*Ora$Qdi#u*_ zuO{hf+Q_wuKo)#Fz2^*TmiEqM)C#5RnzQT(ab#fTjy?RDM-FJsyKVga)6)aJOGRfY zrLWV8G9zZo8!}o4FSQR87H2;KlbzZxdAmZ3z8;G}FFS|}tcP+oBvGjO31gO+^J`i_c!^nC)$zhZ^ z*MhqA$rtRU6C7k*vkR3SkHybBIoJ1@cWyT7jGpzW?$ziq5n*Cqhy-!d;S;<2!k)1X z4I^bP4Kc^-{IaaL#yfvZSEpyw9VZjvma&VR2hL9pI~pRTDM0JVc&LUUxR=fGy@#02 zMsZmx;mwtBA*IXdkKe{L?0%(F$z?NY*eS8#p0|v-VO`X9Oxa>!9Jlk_13dzKDkAlD$?Ro*AN@p zAS~D++Q@XMz|rVSeuHvS3?Za3d|q;|q!>_CYRDjcww+13=Y7tsiJkkj)&wqN*1=G- zDS!ANHck46Zm?>7CIX*hHsxhLf5oh>Mw-<5rS(mfH|lwY_R7T!$bc;cyGZ75NTQ)(IzaV|JdM=VBy8X= zeBgT?K3^AClr$Qeq_nRq*v1Ls$!HC+hr*Fzn|u3X8eoA(@Bc?Z%{_+ zT8tpLJA@IyC(LUjASlQP1o8=r0DwS29!4PnK_Pwt)ECGrC?Wv>N(hNE{_DexvgU4U zC!r&+_%BOlS`_e1!d&`3W}&fNK76eDk}u~N5_AX6;l)! z1A=5lWKrCLf(k;iLc)q50Z~O+1yM0kaXHz4WR+nao?w^_q2V5pvPM>WUwu--Tt z8lAebysVz@!p=ukIL(W?z8K!6#K+QjP**x6EE>!L@=-h@w}PUIl67d@Uutl{;nf=@Q3ZGJ}6A%SMaN=F>=nkH!m&uoOl+)NP z@6^XOL}aw9md>{UWlLlkpVDhBDGT|sEEC%;AMR&N?d_afo@+GkH28R~1!gJMjD)&8 zCDWi9B9Pv@;_W%Uq|MlP4G}cp$ds07`BXL3sa@~$E$*G>b?~}ZdEcD!??f+&LfPDm zzMHw9W5CA*4#snJ`&|_R&s?$!k8~yX%Lw;rj<56jnm+C|mep(QcoZ(LUG6<=N8gda zt=m9L!i)}w`=LvGXdfb&K@i!ka8*3P9^$}u)f8(8Ico^8ZQnbIYYo9hyd$Mrfi$Gz-O&ips03s))4=xc`z}^-U=0A^_WxST~LRy55#WOP6B(%j^vzJ}k>vE<~ zTu8gDh>;%CA27aYs^|jq+{jvX`s`BZYH4A0owBz;rnNnf)7JS*=8U_a6Y^^(uj&Fj zcCT;ShL3c{bO#>f@f0aD{Mi+xq2pazRuhRon~$%?v~nIc$2-y&y0!P#Am!cT6p3;o0z%< zVHrYf3?OVOxt;#rTx30dC%y9t(FGYI*PBK>vn&dZ14DGSSieW$xRnV@+ab4yHy zpZly&tk8;U3l>5;V(4fW*u1>Ut+T_z4d}jy%+8<{j#c7{;<4!C$e^hN%E-spuqmVI z$d!NsD%N+7Kv`VKC{h!z5KxYo)ZBn8o~A-+87&&R*kRjhD9MF7xfN~^p>S69*1T~u z@#eTaltiUs4RUQW>|6_{{4M(WPD7-~L7i^QzBmL&Q*`BIE3o-)RtaXIscyP6$xpE} zHt~7%Xb6laa|Pb)JIvEQ+s!4!r$4_Pj|tEcj8;Q_@fs=J$Adq){@g@0GB)qU4#il%HZG z$ur;6?kDeQ^4SUhrrittL;GtIMfgIBK0I?-BI0DJ8W8{&+66;nI6` zB~xs#OJlQn|9raM5zWgS`}^{m$Jxfg>dyC{pdA<*eQ^D4`mOz4@W~0_vXbr`_h9mf zD9=L|`+L11`_67Nu~Y32dl{w26Okg0*xw57mj~0i$gD2h7U_I2`7NTsXh+~VY7Nb*R6cB&-rKA8w$Gw-*DUwbBA@7) zmTps%!yiR$mc~B{3vY@x@4AWCJyLiKcsAyo$E$n@7<_yKrjYX?^t5M2g&s%>avnA; zy|emuXG8g*l#@HK&*2ZVP;$FM_9|IHf*8~aJ|p40Xio`mzx>_KS9Vrkx>3QmX4}L> zzO+?rZ18hz<6;{lSSpEI9z!6cW|UUNcVvC#Jxyv{daIcGPbgJ>oJMHto_^y+<@?~IYo59KZ{ z!ZA%$-7#@->v)*cp51WZ-ac=EWsjARb1i|GF66_TW1s#O#jWEy@@L)j;pMgm(dHcz zghV>``3|8k>#Yto2Bu>Yc88|i25Bja;0#D?3TKLEt0xP&IdFHqDFG7L!Bq&WkkH~0bw?xN+5;PuY~wU=B2Gg7JItQk!224BS!$wpVRgKFK1uC=_|!xR+rsvv{r}`P*ikb@5Fs|PO%wJxQ%+tpn*{QUP}o+! zOPUo2XP@_E0f>KC&m47prePZ&2mKHgqF4qt$-->Q79*$jBgadnW1vR5qU6uw2#rp! z`gC6bJW%&o>MXp3mZnfYE#@hG(-Q|rGjB$KS2u#Sl7{Uxo4{ziz2teO(C1<|IjYA9pT&oWt>XgU0`7071&80U z9N)H-f;YcQ}R`Bw}QksMWBF;~1iUy48fFcY7-Fl+aN;VoD zUCS-Ug>#15i9c37%+P{jw<*$0NhJtj`E!WNv)ywTWDPy$`HcE2fLA=MptxM*7zNbO z_^hBeU%7zOsnod9kK2ZXh9#v+1i;6;a?+Iu*r1J2%q|!z{g(Va@(6fkwEu{>GJ zPQj0Gly921<)`*2SfQ}tDw{!v!HI{dM_3!TWNwttDc+7$54{xXxCBDhMUm$f@Me5v9FdU&JFp;wWFk4wMTAoYOsjrao~bq~6lcrdpb3np=VQcB5wi@` z#7~P-wj?EA79gqm#7Qw9;ik|{;I*jsH3Qjj0962`Q;R-VQrDfK;Izln zTP{Uead2GnWmKTw)}0ZWCjw<(h1GTr>8_U~K4S?Z^K(kCn#o>5MbipEq`8<2%Xly2 zNDXgI{sp7L08k+^cB~n=%N(e9^9qtM4XamB@{wWsfb{!>YRfsAh{rRsYJoZl%1bm< zfMt9#1bnSDb{QzxQ#pQ+5m*K*(uVF^2J`-uSE<_IuXwzv4vXm;r3Do5@K&yvc9LzJPHL(NqF0GBbO1y_&qt_Zru4lR$;C90GIZn!fZZo*!-6HZ2r@sL^eThT zD8w)Dx7nnnCam(G8wlqWv`xI2LV=4TGg1?FQR^K8?p&qElO73mR0@j~fUirE@trMXV%7IM4R4OzcnG~+}bmVSdHEJ#$Q z*ojI9OfOd65Ht^V682U8qT;PPh_gNykzXqj!#0?*IN{{ zfE6CbI6a$g!m5Nn)zH~Aka=u$>$#{`JKCqtno@&|Pj3Rx6rp^Jc>_OwG{Ri z?~7Xds>aG98o}hs8+}CKUJ}G+oR{yIoj4*3|t_$4%s* zfU_*OIkEupsHiw}ddlVVS!J?W*N|9b8!LKoae3l>0>5@Q4eJO2Mr^(<0HvT90HO+* zkbOPTgIi1b74A6tq$rWn_=#_!HaefG7^$P$be>EA73NC2n!ZVgrEo`97y@M!j0E0Ta#pBGiVpF2{`f%9iu<5VOES?K`(nhGt^t0S-$YJ zRJWtwL3{Jd;c0FBgw&CbEj204rHAAM^dTXE7cB;wSUqf{qtf_`n85|R@9 z&l{X#B2ACN-JkPdy?JBy#)SbAaN~O%X-DasgF+n0-NBXHHbnU+0LOUA`Zp%8fZ{o& zHxR4h40T&ZP0JALlA;i_{?hc4a_2IlV%Nl3mR!^|<>N5%Vf6{?gH6HqVs-zU9JGka zCGZF!rX~DkP*-S~_FhEQJ~?bDfcY9||I}L$D zadB}=eD%HXH#lwqATGnt?OKc!1meJtqx1Hg7Z-^iJvDZ#W6*isji72@>H}>e(yv$6`Nv)Hl@Z*!&VQKyC z27t;9eik0@Ag4>6VXzTzc{cR9)>f&y`eyqQByVH{fRa3~A!>WJycxrBqK|~Z#cH4$ z=R6N}|LMJ3Em{3iLk}wtzUnpC34SN(gr`X$Bi(ovweN&BCkkKL9N`c_fPa5pF=SGB z6L7pSEE6x+a99ot%1_ZCQD_bEv|#tz**;Q+M&GVA1uNyB_xK!`E1cE#z~e`@^GK$- zXq`py@`OZi9$SI5BgE_TXz7Z6DDD-<2l=h5&T3i3AKZ?%Uzi17Go`6no=-(S2ydcx z?j(5e$J`90opxzj#>DMDNAIi~#w)YtFz@WJ+D_T~C?aROE&bt=l9AH%1a3}*$5 z?B3&rQxyF!=>dPrS2!1 zqZFSRl3g0?l2gui7O9;D9NBHH3M5ptMnQ#XT}tk%&3n8hzyW^^zDKia6|mU(x_KiR zx}<{RNq?3X8&V~JuEIR?=Jd52zQ#E#9yICjF8xMW~^(U$pD`CUHPv z3tOIw35+iN)51a-|_P=g%GvVPV%={_r1q^+aXCt6Gx0bge(d;6(4q zm-&9zAkjYO#aiuG3nYESXC%z+kA_OzxT&fNvXbE@irmzc?bZXR8OI3i^Z?Y`lN9hxof=TF!Qfsn zo6dTHQ(_d66D*vXI}=ls8%C-|NJKB3z(TSTys797R`WZ)DntAhbr$3*Cs3@}%8bqC zP7jBwnHX{}@2|ARv`h`ZecgKdQfs@U zVt|8Mz4OhCOfCHhb*L;dB9OJ~Lx zUEpFJQHCjvRYoWlux6Ux5lnGHD9k`kcNmvrr=*lhBjlz}>q*V-`X{0d?d_>K6X%9x7fEAt z#l%J6j=$<3qDAcZ0vy&GlCx;>QqqMP?ZG;8e)<|G7mr1YI9k11#dxhDvlPDP&g_CP zjC`_CPwi2hFCl;L<$ zO}ea-Hr1b)s3#&wQm)N{Cj~y3A>YX9JECw(;V;PY;*drMTUQKUgii}xv5f05RzVzY z$J-gV_?!JyE?uxRh^rLCqoXq>1qbd~aSSWVV1P@&SH^0~1LK#ttGv-$E=G2Ggc*ik z;r8lrUd2{n?oF(y+z^-&37r!0DDnL~?|9o5Z<$B0k6^84y6Yve-nFQ|Vpp{4=tk!7 zkiK(8w=ehSX({=UgV}e?iAH`pfiw>7oinu5XqJn*VsAm1xtjW$ytLr!ClXjjR$kn| z%QdFl+UE-G1Z`GoEPLWZ{HCQ{7B{BF0MUs#RW6GuzsnYX=Lm zg>2w#rG@_7)p1CLm{b@Hj}Hd1CCW#gGqS`RqzWxR_%t=>fzi>Zx)w|_+Y9G7o#xU6 ziGyxS&S`hi=(nHFYk$9KDZC{iZ7bz{PEv>S%JGuJE%~IvYD%s+FJj!-WVCNwDw}s# zoODgJ=KDra*ZK^|5FVCpeNmFoF$yP_)tu$systE>gqg7A`cMxr2B%1S7b!q zVq1d)*>ly>Qd0M0<718t`C-6aj(J+UP@P)h@M?71sLWh*UL<(^pn$JkpA@Rx+-CSu zYl<-4PuT{lTtTt$S%RLzq^*~ecfATC_HD#@{b7)5DPeF{=#7PYW$k#tbPNwK5vF6X zGHAX8Fq7dHIiLSvN7(}=meSjK}pv{U%z{$;(Ab?O3(ll%4I;zugN76KVh;4v+r~rYY-l(FeC~V zuHjm9p`@Y75czF*w(z9u$VTi#%adK7YOq+(055Uztv4G%Z|YoKVPJsq*D~eReq&C{ zF{wb4?#gK7JX^}DxJ|l_fpnSg{2Ugzl^kcvqdP5aDV7RJTr5m4s9Qh_dS{}s6(o{` z4g|Kn8Xqu#aA>i&x;Gdg6DMI}f=5Nr(~@6e@-aAda-k;CVJ{+Tl2;d@K-%jZHP<_g zZg^p(Rm-lm>4&o-*7{JAWYq_jv8oOaao;_kA#D@8G*>)15FLIZ4P87ktv!a2Cj*Sv z2V^XfqKS2tCDfGfkSV;}d!p8bOj-7vhO18GF&|b5v{gYRQjWCFgYQ_V-+0h=Ym~=< zNjaf)>#qg5@zb0f(o|`RY~~54gT;UiBZ-llJw0{SoTAkYgAz2M*N77j_3DrlJ%|7Amx(%L*}$JM%dN}(XEH>k+Ah=dET^+P zD~tOYl7c4GI<23M@>~d=Lj@lP1jz)lS@uh5v14;n9P}EXm8@YcV*%0KcX;S~=!@2v zcJuw&-NDapyKw6u3xrU!cS-^kr8h z&}$SYBWyQT$RF!j0?Y6RQEU%IKVly8?y`!o#fWiEB)yOriLfgJes7%@2Skz}bZS3^ zYi6Q{UYhc1LO_$O6wBIfuwp&5(r{S2)IMyh%AV`3T@olA$;;n*21@dd^@@#5lfv1| zHy@O8dLVZa{c)K(M@ApEiT-TSvC}J&phKaLcVkxFSQprEC28>Vsv*$1{rOg=*_=b4 zLPJz7*^KJ4l>&Wth(XJ9T-QQ`8G}h9XCjx^BuB^m?nmNg1$Aou0&z*UlYU z%8i|Aw3%p&Gany2(*Rd?y>@3OdZof8gN9tLJF`7;<{9*1GvU9^2W|Sh(;K1?Fx$71 zz4QXA&L`a$>AB+$QlJdb)>-S*Ol_|R(yt|hm~-VVv90-js_SD_=u_-wyHF9DwAQtD zg}g=Qt|xEgJ!+=SshqM6viB-T+qOKN)PqgCU+;^&G}xz~+03 z991~~#0aGNr+&4cn=HBHJ#Mf*Xi@iG@qhO+i0RK4`)Q9zPZjd_qxFfBUz*5*h_Hu( if=HU%_wNV=&=_{+wNkfs5AOf6psb)F|3%K~)qep#64_1w literal 0 HcmV?d00001 diff --git a/git-workflows-and-tutorials/images/git-workflows-forking-7.png b/git-workflows-and-tutorials/images/git-workflows-forking-7.png new file mode 100644 index 0000000000000000000000000000000000000000..6fa644085c9e4f23ce47a855329d6ec0a1778d30 GIT binary patch literal 7973 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 TZ|_m0peZY8Kx^e*y#9Xx|KbpK literal 0 HcmV?d00001 diff --git a/git-workflows-and-tutorials/pull-request.md b/git-workflows-and-tutorials/pull-request.md index e69de29..319069e 100644 --- a/git-workflows-and-tutorials/pull-request.md +++ b/git-workflows-and-tutorials/pull-request.md @@ -0,0 +1,2 @@ +`Pull Requests` +======================= diff --git a/git-workflows-and-tutorials/workflow-forking.md b/git-workflows-and-tutorials/workflow-forking.md index e69de29..b61c420 100644 --- a/git-workflows-and-tutorials/workflow-forking.md +++ b/git-workflows-and-tutorials/workflow-forking.md @@ -0,0 +1,189 @@ +`Forking`工作流 +======================= + +`Forking`工作流和前面讨论的几种工作流有根本的不同。 +这种工作流不是使用单个服务端仓库作为『中央』代码基线,而让各个开发者都有一个服务端仓库。 +这意味着各个代码贡献者不只有一个而2个`Git`仓库:一个本地私有的,另一个服务端公有的。 + +![](images/git-workflows-forking.png) + +`Forking`工作流的一个主要优势是,贡献的代码可以被集成,而不需要所有人都`push`代码到仅有的中央仓库中。 +开发者`push`到自己的服务端仓库,而只有项目维护者才能`push`到正式仓库。 +这样项目维护者可以接受任何开发者的提交,但无需给他正式代码库的写权限。 + +效果就是一个发布式的工作流,为大型、自发性的团队(包括了不受信的第三方)提供了灵活的方式来安全的协作。 +也让这个工作流成为开源项目的理想工作流。 + +:beer: 工作方式 +--------------------- + +和其它的`Git`工作流一样,`Forking`工作流要先有一个公有的正式仓库存储在服务器上。 +但一个新的开发者想要在项目上工作时,不是直接从正式仓库克隆。 + +而是`fork`正式项目在服务器上创建一个拷贝。这个仓库拷贝作为他个人公开仓库 —— +其它开发者不允许`push`到这个仓库,但可以`pull`到修改(后面我们很快就会看这点是很重要的)。 +在创建了自己服务端拷贝之后,开发者执行`git clone`命令克隆仓库到本地机器上,作为私有的开发环境,和之前的工作流一样。 + +要提交本地修改时,`push`提交到自己公有仓库中 —— 而不是正式仓库中。 +然后,给正式仓库发起一个`pull request`,让项目维护者知道有更新已经准备好可以集成了。 +对于贡献的代码,`pull request`也可以很方便地作为一个讨论的地方。 + +为了集成功能到正式代码库,维护者`pull`贡献者的变更到自己的本地仓库中,检查变更以确保不会让项目出错, +[合并变更到自己本地的`master`分支](https://www.atlassian.com/git/tutorial/git-branches#!merge), +然后`push`到服务器的`master`分支上。 +到此,贡献的提交成为了项目的一部分,其它的开发者应该执行`pull`操作与正式仓库同步自己本地仓库。 + +### 正式仓库 + +在`Forking`工作流中,『官方』仓库的叫法只是一个约定,理解这点很重要。 +在技术观点上,各个开发者仓库和正式仓库在`Git`看来没有任何区别。 +事实上,让正式仓库之所以正式是是看公开仓库的维护者是谁。 + +### `Forking`工作流的分支使用方式 + +所有的个人分开仓库实际上只是为了方便和其它的开发者共享分支。各个开发者应该用分支隔离各个功能,就像在[功能分支工作流](workflow-feature-branch.md) +和 [`Gitflow`工作流](workflow-forking.md)一样。唯一的区别是这些分支被共享了,而功能分支工作流和`Gitflow`工作流是直接`push`到正式仓库中。 + +:beer: 示例 +--------------------- + +### 项目维护者初始化正式仓库 + +![](images/git-workflows-forking-1.png) + +和任何使用`Git`项目一样,第一步是创建在服务器上一个正式仓库,让团队成功可以访问。 +通常这个仓库也会作为项目维护者的公有仓库。 + +[公有仓库应该是裸仓库](https://www.atlassian.com/git/tutorial/git-basics#!init),不管是不是正式代码库。 +所以项目维护者会运行你下面的命令来搭建正式仓库: + +```bash +ssh user@host +git init --bare /path/to/repo.git +``` + +`Bitbucket`和`Stash`提供了一个方便的`GUI`客户端以完成上面命令行做的事。 +这个搭建中央仓库的过程和前面提到的工作流完全一样。 +如果已有代码库,维护者也要`push`到这个仓库中。 + +### 开发者`fork`正式仓库 + +![](images/git-workflows-forking-2.png) + +下一步,各个开发者会各自的公有仓库,用熟悉的`git clone`命令。 + +在这个示例中,假定用`Bitbucket`托管了仓库。记住,这样的话各个开发者需要各自的`Bitbucket`账号, +使用下面命令克隆服务端仓库: + +```bash +git clone https://user@bitbucket.org/user/repo.git +``` + +相比前面介绍的工作流只用了一个`origin`远程别名指向中央仓库,`Forking`工作流需要2个远程别名 —— +一个指向正式仓库,另一个指向开发者自己的服务端仓库。别名的命名可以任意命名,常见的约定是使用`origin`作为远程克隆的仓库的别名 +(这个别名会在运行`git clone`自动创建),`upstream`(上游)作为正式仓库的别名。 + +```bash +git remote add upstream https://bitbucket.org/maintainer/repo +``` + +需要自己用上面的命令创建`upstream`别名。这样可以简单地保持本地仓库和正式仓库的同步更新。 +注意,如果上游仓库需要认证(比如不是开源的),你需要提供用户: + +```bash +git remote add upstream https://user@bitbucket.org/maintainer/repo.git +``` + +在克隆和`pull`正式仓库时,需要提供用户的密码。 + +### 开发者开发自己的功能 + +![](images/git-workflows-forking-4.png) + +在刚克隆的本地仓库中,开发者可以像其它工作流一样的编辑代码、提交修改和新建分支: + +```bash +git checkout -b some-feature +# Edit some code +git commit -a -m "Add first draft of some feature" +``` + +所有的修改都是私有的直到`push`到自己公开仓库中。如果正式项目已经往前走了,可以用`git pull`命令获得: + +```bash +git pull upstream master +``` + +由于开发都应该在专门的功能分支上开发,`pull`操作会是[快进合并](https://www.atlassian.com/git/tutorial/git-branches#!merge)。 + +### 开发者发布自己的功能 + +![](images/git-workflows-forking-5.png) + +一旦开发者准备好了分享新功能,需要做二件事。 +首先,通过`push`他的贡献代码到自己的公开仓库中,让其它的开发者都可以访问到。 +他的`origin`远程别名应该已经有了,所以要做就是: + +```bash +git push origin feature-branch +``` + +和之前的工作流的差异就在于,`origin`远程别名指向开发者自己的服务端仓库,而不是正式仓库。 + +然后,开发者要通知项目维护者,想合并他的新功能到正式库中。 +`Bitbucket`和`Stash`提供了`Pull Request`按钮,弹出表单让你指定哪个分支要合并到正式仓库。 +一般你会想集合你的功能分支到上游远程仓库的`master`分支。 + +### 项目维护者集成开发者的功能 + +![](images/git-workflows-forking-6.png) + +当项目维护者收到`pull request`,他要做的是决定是否集成到正式代码库中。有二种方式来做: + +1. 直接在`pull request`中查看代码 +1. `pull`代码到他自己的本地仓库,再手动合并 + +第一种做法更简单,维护者可以在`GUI`中查看变更的差异,做评注和执行合并。 +但如果出现了合并冲突,需要第二种做法来解决。这种情况下,维护者需要从开发者服务端仓库上[`fetch`](https://www.atlassian.com/git/tutorial/remote-repositories#!fetch)功能分支, +合并到他本地的`master`分支,解决冲突: + +```bash +git fetch https://bitbucket.org/user/repo feature-branch +# Inspect the changes +git checkout master +git merge FETCH_HEAD +``` + +变更集成到本地的`master`分支后,维护者要`push`变更到服务器上的正式仓库,这样其它的开发者都能访问到: + +```bash +git push origin master +``` + +注意维护者的`origin`是指向他自己公有仓库的,即是项目的正式代码库。到此,开发者的贡献完全集成到了项目中。 + +### 开发者和正式仓库做同步 + +![](images/git-workflows-forking-7.png) + +由于正式代码库往前走了,其它的开发需要做同步: + +```bash +git pull upstream master +``` + +:beer: 下一站 +----------------- + +如果你之前是使用`SVN`,`Forking`工作流可能看起来像是一个激进的范式切换(paradigm shift)。 +但不要害怕,这个工作流实际上就是在[功能分支工作流](workflow-feature-branch.md)之上引入另一个抽象层。 +不是直接通过单个中央仓库来分享分支,而是把贡献代码发布到开发者自己的服务端仓库中。 + +示例中解释了,一个贡献如何从一个开发者流到正式的`master`分支中,但同样的方法可以把贡献集成到任一个仓库中。 +比如,如果团队的几个人协作实现一个功能,可以在开发之间用相同的方法分享变更,不涉及路面仓库。 + +这使得`Forking`工作流对于松散组织的团队来说是个很强大的工具。任一开发者可以方便地和另一开发者分享变更,任何分支都能有效地合并到正式代码库。 + +----------------- + +[« `Gitflow`工作流](workflow-gitflow.md)                                [`Pull Requests` »](pull-request.md)