From a1534100f7fde22bb872c1a92c8f52de7af3f04f Mon Sep 17 00:00:00 2001 From: adrien viala Date: Mon, 21 Jan 2019 11:28:36 +0100 Subject: [PATCH 1/6] wip --- images/git_centralized_workflow.svg | 1 + images/git_centralized_workflow_conflit.svg | 1 + images/lave_mains.jpeg | Bin 0 -> 7352 bytes index.html | 616 ++++++++++++++------ 4 files changed, 430 insertions(+), 188 deletions(-) create mode 100644 images/git_centralized_workflow.svg create mode 100644 images/git_centralized_workflow_conflit.svg create mode 100644 images/lave_mains.jpeg diff --git a/images/git_centralized_workflow.svg b/images/git_centralized_workflow.svg new file mode 100644 index 0000000..976cbcc --- /dev/null +++ b/images/git_centralized_workflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/git_centralized_workflow_conflit.svg b/images/git_centralized_workflow_conflit.svg new file mode 100644 index 0000000..cc19270 --- /dev/null +++ b/images/git_centralized_workflow_conflit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/lave_mains.jpeg b/images/lave_mains.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..cbe95735b8c8cc64cce9d7e3a3ceb4297c097903 GIT binary patch literal 7352 zcmXwdcQhPM*!7CuR$YW$y{%64-g~z?3DH~h-XePMo#<^5g4L4W ze((Fech21BJkOoE&zXPb%$djUkDCBeO;rt500ssCfbnkt9#;V|0DK%=3JP)%1qB6& z97Ih`4Wa_kP?6JsXsAITs{ba42ExfmL(2vMftUoD*r42ee0|gyqg( zum#B#3~ZUbqcU+QD&7kzem6D;LH8B$Z!_72`j7-A)q4E*Y=k11Q(MzrOdL#D= zqSJqMg||nU6_nq{JUldnBlmq3_GX{D_;%hhm&OiP8CEg}j~ya$6mY#W(FN#NXWI{h zmY!bVEkV>ECs`|DZ=B7~_ppUHQ7fAZK$QpuJ@ZV6-hSIvAlpf5UFT<=8Yfs7%6d%X z1$mHD!}!bb85~xkP<|*5qN3J&64^yUY%PjP3d zzjR9LfRxY0BH0Q$8@_!oIW>S2YT4V9olt*k=h4ZqLRjmc5pkV{Nk?>o_(#jaf?1$z&@(XRS_ZdgD! zNn+o=MfhH&3|g%r6xkMV&84|-+Jx2(i#rmXMiSb{iSCuOK#eko0~OcSBtGC~DNiL- zXY3+^$irTb?1z4XOxIkNLH@+WKx!*#2+_M3D9B$>(TD3dh?i=UOz~jG0%P6Gr+t2u z^n?kXJbL`f^EzE%`EGCe15n=$N3Zu3Y>(X#Dx%t@-Bx{pQ9Iw0wOFQ;@rm?Ke5Cbb zray;&?VfPRYa<9PTPsEJs;s2F2e(2mh+Ayz2Qmzv<1trgU_3F}Oxp_0~+gT0^> zeUucUfyu$I)VKuzmT>U^6DXy#TF|sMa2j&CkxBUMOwee->IFjUVGSj>V^*#hJ-57r ziBvspjET23f!If0xGWcCCq+hZ61ld$*C^mP)tlz0>)xM-F;iHZt1YL$iX)ro*Al%X zPRKc|QWIC(N*YSd`houH8`!$B=QL7`4eQbIPIYX@YM6p=2X!Ab2#w>-7Ez%^+8A5( zDo*_Gur+HgdDlW~K|!ClP%LEZfONmMTv0#}x~+slB72`AL_?)k2l;tB18vN9KF0Fx zzP|+4Ff)xOn*{G#9DM{N;Y&}H$*JTroxC6`_|(TQEfF;fB+;97-tchU403_l%7E1i zw+Xr)3Z3VEilm4QVN_a)4F@-ECyHy{KwG^n2$>a3+NQoX^8uUYXz_95`2u+}qw)-K zK>-D26Ng{9YYi;G&c6eu!Un$!o^4R_zg_vEPh4+l@Ga;O;Ff|H8HV-tRKF)o=JyNK zbR4Dv92uQnY$&_+UXz(aqAGfvd zN(0&F{piE^(iKe%Z2dsbi?uL=%2U&n*}6nF)xfuS;O$12m9<4_p6a_xar#5cvyB05 z;NN_H5LgJBJ}CDGU0=BjwKsTn18E$BSZ}5Y4(SGNdP@J+fPeTr#TfDOW5szXJ+19G zXJY4sCx8pW9T+-G&nG}T`@0Go=NVV&D|-dBsCE;4*9$c{Nmv9 zQ=#iSEJOAy-4AHa*cod}KxAZQghE1TmI++`=x{GR#nVUS4s1<(s}oNWfCK@ZkSnWk{;?!}(&%DZ z*T;6Y_r_<*eNNKzr0!gADChWO&6V6-Kfi-GrO@l@7Cx~1%_G?_B-N8J%Gv9X0UmDB zhz?5CWtk`2$56C%O~G!ibJL6QClA-0Sw@>6h>Xjj;#-zoa5*)dnjd*#a@HdjXZzdo zw^eRotASyQTFZaq1*np~bOd3VDOin4WZ`Yu3X*ax(@NB3ZR9{(n)G|Bq0MH(dZHKg!x=u1zb$`aK9G|c&r#03)V&RmC8H&1GHc}>H zaWVX@Evb|$S`WbasHW!N{OdNaY*OKd2Z87oOwi$NPDr_Jp3$UoJLUod1tJbgpDhxM z&DCx?9d(F;*5rZo^$p9qg5QgAX80}FX7vF4MjpeKQF3g6i*y( z^nj1OiK}g$)hBHXR~C=NSB2GrF`nko7)e+8f@gJQ8HB56y;Lk0#PQ5F)J?irAMVK{ z|FpSTB=Nh5KuLE$l>ihN^b@M3t@C!yPVZJy|}YPr-83Nvm2*Bz(hGRVGYlCG0_9&*cI$9k)v# zx*Y1@5OaNNZCWA$pzQZ-$qxmOfFgwg-lKQTA=&}DuROk^wiuKve`=)6`=!M?X{%8)5H@*!9?Ctg z`niS6fO4YWn#UrINGyF@k#@jFp%^&w)TDw&LfPd?{#vu@y0hB}x3abwmk7c1LN?7+ zQjDCkUL0J`xIv%5??JPV;<=>AGo2G$@Rw5=gX-rjkYOJh?=K^mz% zK4IWecy_j(ZruM=`2Lr5HO0tX9^czlo`^)FL?nr6mH-7Dgg*NwhO_4) z#U;K`Zg{Wfe-jMQJ|~{HCIT#}OE}?;k+JwC>-X^SJR?_r`xA|z@>{+jOms_$76@_A zS%$Et?6xVnER?*IUAw0)1G;+F&JT`!s8)*N;FZp0AphvnO)@E;8xd=R4V0Coj*h~L zzRw;u@3RZZ7d}|*>b8%|Ka*(Bi(cv^m7}$|gRi+i(`-qs%ej1diN|X`HzSchU5_o- z$9}4_mFUkDm3YQLT^VM0K$Ph=L^}~Ri5qR6{= zq13hHB2k|2l_ey}DGP2No!>ULlGIy#j!flsSx7&Cf3LR|uEVRT57` z)^VnCqe7ErPLGn1A88%Bahk*48W4P7y)~jOQ za^6&nAbe%1s+yxORO4TWyd&N921fPW)C6|2u%-C=E=1Z>oWe^}f;DS)_SjBjYamad z4%#dua?};dD{G&!$7IMWe^i(GPu8QlkPIXBX4?TSP&BW2quzr8wVsKc_bBg)Py3&n zLco*d<8&m|&9_ir<-f0GTdU7!=ZU&De-Fkw7BU8wq@f)7FziZLGrSUF7CjHd!IwpLWWs};R$`*pB_E!=nWtrl@-1Rkh~>U?^BBGLfQqQAFrM^));3%??? zUpLppn%-nB$7kH9Ft;~K9M1mkkAOncNJ7z3;mhmH0lMLc;%dJ}f|oK2#UU(qNS4IV zt~uI@txz-RY4|MZ;+$JRZt=VtMe?*&Fh}eqgtGQ9!FBn2<^7#;!#u^pYYwDX>w{50 zA5*J^ll$hFW``bRIS4BbXgN?g?g4+cD=yLozM$o3Ou)Ro;c7uL(XCA0%Mj$s&+A^~ zlR104e8$?2I%#?YXszL+h~aYQ%tjP ziQuez6B@SZE|jW36A`8apO!OMzS?q;YRs3ytC3#yI$qhwiN{ZvtbRE7T96E#uvMy$k|(^ zNc=2~uiFF^Y05;uj|#2V5P3V(o`mNY6L!+picfOIYgra9v!azoG~L^fce3iqeUAVl zG1jA;4?A@&S5nyiedS-V`U+BW){Kd}T!@7gU9@WP9|7Xfyj<^5zxlr|6Q8yfh|O1% zf9POcUZ4y2jm2H2#e6R~t2fLb#&nhwqDy|=TN0z57i|`4CF7pVm{F@)Gi$CGIiaHt z1^%<4+hyUoEipfFZKmf(q2SGj1gDh%mi}50SHxegMiVmd&4reO3z4vg%R)+o;G9pF zpDY`K7wav>Q!v(O6MqiD*%5}69o%Ljf5c2vLpLVq5B7CYSL(Nfbtf=tdO4hWYaQ|q zdnWKRS!~t=R;$u}QnLimJw9Eisq9xub0U{)WSdi+DX|L{MhU%ZQr^PlzyrnXwX9)0 zrPX}qA!B-_6rpNo&(GS?uD62UeKq-XgRxXI{qOQyOWS7h;=2p8chH>+2IP%0Y(#VE zsN-C%{Yw=o!esg1crfW0h003aanXeC@3Le?;ZIJOC7!^{-C3Q!Ir~`)-_=RulUts) z{Ycuhhd<+*2uZWeNbYX;4x@Q$^y;meHsfYt6;3amshLY1m?MdaDO{)kRslw-bV!aC z&1f*~?(i#^&A;~j{l_8+R=`VVfFPNioM#EE9$bhniG0=2c$Dn%MM=P#0^3CxkL#>T zdk(%vU2un)4Dr3sUHMXVU|9PgN?}|#IM0XmlEkMV3=#re3)wd*cPlU#ZefI26bkdm z&;xjp0`oBO&L`O^oUq=Rb)|dh{~HS6caeJf+`{}iK5E*VPMBO~p5PP7dcT$nRn)h$ z+23jgc^1@?M`Bp;#zow+P6~ov5WC~nNioT$!a;mK0$i;gdYGcr{Z!}Vm&|;h{O(=? z@Qyhmio(>e9xH4fQY67@L>?-OWX;~uR<7`tO->EaiPzf^#%@BBMa3>2PBk+1`q&*!3Ui!>- zu6DB-`-M=h-;KZXi`1K#`~}EqJ9(~0v37JBI*o2Z)M&i|XnRszDU2E>S0xiROT2lZ zSz}fz7OX%vL5?iU)gLRzP*M#lPlS$_QBNEd51wi%0=t{PGz5SIz`xiDGor zhP#@0?X()N!+fpGyYP)?nqC+*L42?D_;F)HTt0$qV#)ROmLzlQECV3@xJ}Hl_wZD|7x8+7MjShy%)X0j>yRqzFfD|S%<9}5ytj9{C;ok<_-QpYTUentJmx6t*elrc{qQ` zQNHXqqFh62DT(zd&IS@k6>|{DTdtRQ4Y)YTGIE*-Wsm^kPWo9C+n|xMcJHGGMPJ9P zD5{8#lmTb`nX(yAR z(%Xi^ABLqE9l}nnW|B4dYkk|}NZ_Zja=PmFRje!M#%Q32g)03<%S$r43!cvf-lFy{QpGTJNGwECRwBL!&)gNS}N zTQwQ(r~TXtSP?H0VftZtbs9gY+jzkf9xM8nYjjXI9N%Ms-NYg}xQ4k1(V_1i)F<+% zs0x6Y!VP@4e*I=#Gzpq>3+?5K_eYqEk2j=j3F&t>%gv?NqNV~BIx>}?58%E~Ik`7Y z4cdoYD;8&r<#I9G53=1c$}byhW``RiF;%b4LvWzY+S4M3H1E3o++!a&Q`d0Y-mPIs z9;fEoR+w7sdp@_m(HFMPYlB1Pa|6XU8|rOC6{jlF^V;0UVM)Q%L2Y zaiyxV67Yt6f{AFp6w;NbbD=!s>Ap6cYGp4@rM@`eW^23?v-lom&@CnIP=|DZ!g!~j zJD1&5@Cu{FQsV*>LNzdPg%=uh)S*RG7Z+|)SR)Jg{AP8UqxaOyX)MAjPy7+}0HVd;ieW#^fDI^S}Z#Wn@vUz8f<9|@{q1p`ig|WMF zB8H!uT}|=K+9dHuz$Lo$fR@usgx;RGhy!iPXU0FI_iAVeMeLbD(7BrZH@`7UNZq*Q zjzhPPa9Hq|f(0;YM)>n;C9}q0(klyp>{(X<;g_!&`!%0P0|I9)AIi}rvpzc(Fvn$I zSw;xM325PW?OVMohRU6ci&KLp#V50l2YDc=9DvK2cezR*9 z2BUj?ioxlVTsj=^oiTx0-$Zovcp7+#Pt&02G}hlq9jkzbVaJna% @@ -134,14 +135,17 @@

Kesako?

- Git a été créé par Linus Torvald (créateur de Linux) en avril 2005 pour proposer une alternative gratuite à BitKeeper. + Git a été créé par Linus Torvald (créateur de Linux) en avril 2005 pour proposer une + alternative gratuite à BitKeeper.

- C’est un gestionnaire de version décentralisé. Cette gestion décentralisée lui a valu son succès, notamment auprès de la communauté + C’est un gestionnaire de version décentralisé. Cette gestion décentralisée lui a valu + son succès, notamment auprès de la communauté du logiciel libre.

- Git a été pensé comme un système de fichier à part entière qui gère lui-même le versionnement de son arborescence (d’après + Git a été pensé comme un système de fichier à part entière qui gère lui-même le + versionnement de son arborescence (d’après Linus Torvald).

@@ -154,39 +158,49 @@

Décentralisé

- Git est un gestionnaire de version décentralisé. Chaque à contributeur possède donc localement un dépôt à part entière! + Git est un gestionnaire de version décentralisé. Chaque à contributeur possède donc + localement un dépôt à part entière!

- Chaque dépôt est totalement indépendant des autres. Les synchronisations entre dépôts sont à décider suivant vos méthodes + Chaque dépôt est totalement indépendant des autres. Les synchronisations entre dépôts sont + à décider suivant vos méthodes de travail.

-

Décentralisé

-

De manière générale, on travaille avec un dépôt central qui sert de maitre de la donnée. Ce dépôt est traditionellement appelé origin. Chacun des poste client récupére et synchronise ses sources avec origin.

-
+

Décentralisé

+

De manière générale, on travaille avec un dépôt central qui sert de + maitre de la donnée. Ce dépôt est traditionellement appelé origin. Chacun des poste + client récupére et synchronise ses sources avec origin.

+

La gestion de fichiers

-

Git indexe les fichiers d'après leur somme de contrôle calculée avec la fonction de hachage SHA-1. Quand - un fichier n'est pas modifié, la somme de contrôle ne change pas et le fichier n'est stocké qu'une - seule fois. En revanche, si le fichier est modifié, les deux versions sont stockées sur le disque.

+

Git indexe les fichiers d'après leur somme de contrôle calculée + avec la fonction de hachage SHA-1. Quand + un fichier n'est pas modifié, la somme de contrôle ne change pas et le fichier n'est stocké + qu'une + seule fois. En revanche, si le fichier est modifié, les deux versions sont stockées sur le + disque.

    -
  • Untracked: Le fichier n’est pas indexé, et n’est pas considéré pour le calcul des différences +
  • Untracked: Le fichier n’est pas indexé, et n’est pas considéré pour le calcul des + différences entre deux révisions
  • Stagged: Le fichier fait parti d’un lot prêt à être commité
  • -
  • Unmodified: Le fichier est indexé, mais ne possède aucune différence avec sa version de la révision +
  • Unmodified: Le fichier est indexé, mais ne possède aucune différence avec sa version de + la révision précédente
  • -
  • Modified: Le fichier est indexé, et possède des différences avec sa version dans la révision +
  • Modified: Le fichier est indexé, et possède des différences avec sa version dans la + révision précédente
@@ -194,7 +208,9 @@

La gestion de fichiers

Ignorer des fichiers

-

Il est possible de faire en sorte que des fichiers présents dans votre répertoire soit ignorés par Git. Il suffit de placer les repertoires/fichiers à ignorer dans le .gitignore

+

Il est possible de faire en sorte que des fichiers présents dans votre + répertoire soit ignorés par Git. Il suffit de placer les repertoires/fichiers à ignorer + dans le .gitignore


 lib/
 plugin/
@@ -204,16 +220,18 @@ 

Ignorer des fichiers

-
+

L'historique

-

L'historique de git est créé comme une chaîne de pointeurs entre les différentes révisions (commits) du projet

+

L'historique de git est créé comme une chaîne de pointeurs entre les différentes révisions (commits) du projet

Le Commit

- Un commit est une révision du projet. Le snapshot du projet à l’instant T où le commit a été créé. Il est identifié par son + Un commit est une révision du projet. Le snapshot du projet + à l’instant T où le commit a été créé. Il est identifié par son SHA-1 et contient les informations suivante:

    @@ -228,25 +246,26 @@

    Le Commit

    Exemple

-
+

Créer un dépôt Git

@@ -256,24 +275,28 @@

Git Init

git init __directory__ Transforme le dossier __directory__ en dépôt git.
git init [--bare]

Un repository - bare est un repository dans lequel on ne peut rien commiter directement. On ne peut que synchroniser + bare est un repository dans lequel on ne peut rien commiter directement. On ne + peut que synchroniser avec d'autre dépôt.

- Note: Si vous faites un git init dans un repertoire en étant déjà un depôt git, rien ne se passe. - Vous n'écraserez pas votre configuration. + Note: Si vous faites un git init dans un repertoire en étant déjà un depôt git, rien ne se + passe. + Vous n'écraserez pas votre configuration.

Git clone

-

Cette commande vous permez de cloner un dépôt existant (distant ou non). Un dossier portant le nom du - projet est créé dans le répertoire courant, et le dépôt est copié dans ce dossier.

+

Cette commande vous permez de cloner un dépôt existant + (distant ou non). Un dossier portant le nom du + projet est créé dans le répertoire courant, et le dépôt est copié dans ce dossier.

git clone __url__
git clone https://github.com/get-focus/formation-git-basic.gitPar exemple si vous voulez contribuer à l'amélioration de cette formation, vous pouvez copier le dépôt et commencer à coder =)

Git config

-

Permet de régler les configurations du compte git. Il est possible de gérer une hiérarchie des configuration:

+

Permet de régler les configurations du compte git. Il est possible de gérer une hiérarchie des + configuration:

  • system
  • global
  • @@ -285,7 +308,8 @@

    Git config

Les alias

-

Il est possible de se créer des alias pour simplifier l'utilisation de certaines commandes complexes

+

Il est possible de se créer des alias pour simplifier l'utilisation de certaines commandes + complexes

git config --global alias.ci commit
git config --global alias.amend git ci --amend
Ainsi la commandegit amend
@@ -335,32 +359,39 @@

Modifier des éléments

Git add

-

Cette fonction sert à passer des nouveaux fichiers, ou des fichiers modifiés à l'état +

Cette fonction sert à passer des nouveaux fichiers, ou des fichiers + modifiés à l'état staged afin qu'ils puissent par la suite être commités.

git add __file__
git add __directory__
git add ./src/*.js
-

La phase de stagging est une particularité propre à Git. Ce buffer entre la phase de travail, et - la phase d'historisation permet de morceler notre historique afin de rendre les commits les plus +

La phase de stagging est une particularité propre à Git. Ce buffer entre la phase de + travail, et + la phase d'historisation permet de morceler notre historique afin de rendre les commits les + plus atomiques possible.

Git commit

-

Cette commande sauvegarde l'ensemble des modifications dans l'état +

Cette commande sauvegarde l'ensemble des modifications dans + l'état staged et l'ajoute à l'historique du projet.

git commit -m "__message_de_commit__"
-

Une fois nos modifications commitées, Git ne les oubliera jamais. Il est bien sur possible de modifier +

Une fois nos modifications commitées, Git ne les oubliera jamais. + Il est bien sur possible de modifier l'historique, mais là encore il existe des possibilités pour retrouver nos modifications.

-

Attention! Ceci n'a rien à voir avec la fonction commit de SVN. Ici l'historisation n'est faite que +

Attention! Ceci n'a rien à voir avec la fonction commit de SVN. Ici l'historisation n'est + faite que sur votre depôt local. La synchronisation avec un serveur central se fait séparément.

-
+

Revenir en arrière

@@ -372,185 +403,249 @@

Git commit --amend

git commit --amend -m "Update README.txt"Applique les modification à l'ancien commit, et change le message de commit en "Update README.txt".
-
Attention: on modifie l'historique en faisant cela. Le --amend n'est utilisé que lorsque les modifications ne sont pas synchronisées avec le serveur.
+
Attention: on modifie l'historique en faisant cela. Le --amend n'est utilisé que + lorsque les modifications ne sont pas synchronisées avec le serveur.

Git reset

-

Vous permez de revenir à l'état de n'importe quel commit. Efface les liens des commits concernés.

+

Vous permez de revenir à l'état de n'importe quel commit. Efface + les liens des commits concernés.

git reset HEAD^Revient au commit précédent. En gardant l'ensemble des modifications dans l'état modified
git reset HEAD~3 --hardRevient trois commits en arrière en effaçant l'ensemble des modifications.
git reset origin/master --hardRevient à l'état dans lequel est la branche sur le dépôt origin.
-

Le HEAD

-

Il s'agit de votre emplacement actuel dans l'arbre d'historique

-
- -
-

C'est un tag particulier qui pointe vers le commit. On retrouvera cette notion pour les branches

- -
+

Le HEAD

+

Il s'agit de votre emplacement actuel dans l'arbre + d'historique

+
+ +
+
+

C'est un tag particulier qui pointe vers le commit. On retrouvera cette notion pour les + branches

+
+ + -
+

Les Branches

-

Il s'agit de la grande puissance de Git! Rendre les branches plus facile d'utilisation pour s'adapter à n'importe quelle méthode de travail.

+

Il s'agit de la grande puissance de Git! + Rendre les branches plus facile d'utilisation pour s'adapter à n'importe quelle méthode de + travail.

Git branch

-

Pour Git, une branche n'est qu'une chaîne de commit pointant chacun sur son parent!

+

Pour Git, une branche n'est qu'une chaîne de commit pointant chacun sur son parent!

git branch ma-nouvelle-featureCrée une nouvelle branche appelée ma-nouvelle-feature
-

Une branche est représentée dans Git par un tag pointant vers le dernier commit de la branch.

+

Une branche est représentée dans Git par un + tag pointant vers le dernier commit de la branch.

- +

Git checkout

-

Cette commande sert à naviguer (déplacer le HEAD) dans l'arbre d'historique. De cette manière, vous remplacez votre arborescence de fichier par celle en l'état au moment du commit choisi.

+

Cette commande sert à naviguer + (déplacer le HEAD) dans l'arbre d'historique. De cette manière, vous remplacez + votre arborescence de fichier par celle en l'état au moment du commit choisi.

git checkout 6b2488
git checkout master
-

Vous pouvez identifier un commit juste avec le début de son SHA-1. S'il n'y a pas d'ambiguïté, Git comprendra naturellement de quel commit il s'agit.

+
+

Vous pouvez identifier un commit juste avec le début de son SHA-1. S'il n'y a pas + d'ambiguïté, Git comprendra naturellement de quel commit il s'agit.

+

Git stash

-

Le stash est utile pour stocker temporairement des modifications.

+

Le stash est utile pour stocker + temporairement des modifications.

git stashPrend l'ensemble de vos modifications en attente, et les place dans le stash.
git stash popVide le stash, et applique les modifications qu'il contenait.
git stash dropVide le stash sans appliquer les modifications.
-

Si vous avez des modifications en cours que vous ne voulez pas commiter, mais que vous voulez tout de même mettre à jour votre branche avec le serveur, le stash est la solution ;)

+
+

Si vous avez des modifications en cours que vous ne voulez pas commiter, mais que vous + voulez tout de même mettre à jour votre branche avec le serveur, le stash est la solution + ;)

+
-
+

Synchronisation

Git pull

-

Cette commande sert à récupérer les commit sur origin pour mettre à jour notre dépôt local

+

Cette commande sert à récupérer les commit sur origin + pour mettre à jour notre dépôt local

git pullRécupère et merge les commits de la branche serveur correspondant à notre branche locale.
git pull origin masterRécupère et fusionne les commit de la branche master sur origin à notre branche locale.
-

La commande git pull est une contraction des deux commande git fetch et git merge. Dans la plupart des cas (et aussi pour éviter des commit de merge inutiles) on préfèrera utiliser la commande suivante:

+
+

La commande git pull est une contraction + des deux commande git fetch et git merge. + Dans la plupart des cas (et aussi pour éviter des commit de merge inutiles) on préfèrera + utiliser la commande suivante:

git pull --rebase
git config --global pull.rebase trueTous vos pull seront des pull --rebase ;)

Git push

-

Cette commande sert à pousser nos modifications locales sur une branche serveur

+

Cette commande sert à pousser nos modifications + locales sur une branche serveur

git pushPousse les commits locaux sur la branche serveur configurée pour notre branche locale
git push origin masterPousse les commits locaux sur la branche master sur le dépôt origin
-

Si vous avez des modifications en attente, ou si vous n'êtes pas à jour avec le serveur, Git refusera de pusher!

+
+

Si vous avez des modifications en attente, ou si vous n'êtes pas à + jour avec le serveur, Git refusera de pusher!

+

Git merge

-

Fusionne les modifications d'une branche sur une autre

+

Fusionne les modifications d'une branche sur + une autre

git merge ma-nouvelle-featureMerge la branche ma-nouvelle-feature sur la branche courante
- +

Git rebase

-

Ré-applique les commits sur le commit sélectionné

+

Ré-applique les commits sur le commit + sélectionné

git rebase masterRebase la branche courante sur master
- - -

Attention, on réécrit l'historique. Donc les SHA-1 des commits changent

-
- + gitGraphRebased.branch("ma-nouvelle-feature").commit().commit({ message: "pret à rebase!", tag: "ma-nouvelle-feature" }); + } + }); + master.commit({ tag: "master", sha1: "029bdd", dotColor: "green", messageColor: "green" }); + })(); + +
+
+

L'intérêt du rebase

+ +
@@ -560,66 +655,140 @@

Git au quotidien

Les logiciels de dépôt

-

Ils permettent de gérer efficacement un dépôt. Sécuriser certaine branches, mettre en place des builds automatiques, des workflows particuliers...

+

Ils permettent de gérer efficacement un dépôt. Sécuriser certaine + branches, mettre en place des builds automatiques, des workflows particuliers...

- +

Les clients graphiques

-

Indispensable à une utilisation efficaces de Git. On evite les erreurs, on comprend et donc maîtrise ce que l'on fait.

+

Indispensable à une utilisation efficaces de Git. On evite les + erreurs, on comprend et donc maîtrise ce que l'on fait.

-
+

Workflows

Pour une organisation du travail efficace et qualitative!

+
    +
  1. Workflow centralisé tout sur master
  2. +
  3. Feature Branch workflow une branche par fonctionnalité
  4. +
  5. Gitflow workflow calé sur les cycles de livraisons
  6. +
  7. Forking workflow décentralisation totale (pas pour Klee)
  8. +
+
+

Workflow centralisé

-

Flow mono-branche. Seule la master est présente, chaque personne doit pusher des versions stables de l'application.

-

Flow le plus utilisé à l'heure actuelle chez Klee. Simple, léger, efficace. Pas de garde fou ni de modularité.

+

Flow mono-branche. Seule la master est présente, chaque personne + doit pusher des versions stables de l'application.

+

Flow le plus utilisé à l'heure actuelle chez Klee. Simple, léger, + efficace. Pas de garde fou ni de modularité.

Les étapes de flow centralisé

  1. Je code sur mon dépôt local
  2. -
  3. Je me synchronise avec origin (pull --rebase)
  4. +
  5. Je me synchronise avec origin (fetch)
  6. +
  7. Je mets à jour ma branche locale avec origin (rebase + or merge)
  8. Je push
+

+ +

+
+
+

La gestion des conflits

+

Conflits locaux. Au moment du rebase localement, le + développeur rencontre un conflit.

+

Cela se produit quand plusieurs développeurs touchent à la même partie + du + code.

+

Résolution locale qui peut demander développeurs concernés de + se pencher ensemble sur le problème.

+

+ +

+

En pratique, le développeur qui fait face au conflit a tendance à le + résoudre plus simplement possible et à pusher. + +

+
+
+

Avantages

+
    +
  1. Très très simple
  2. +
  3. Transition depuis SVN facile
  4. +
+
+
+

Défauts

+
    +
  1. Pas de contrôle du code : revue de code difficile
  2. +
  3. Mélange des commits : impossible de livrer une fonctionnalité mais + pas les autres tant que l'ensemble des développements n'est pas fini.
  4. +
  5. Conséquence : anti-agile & réactivité coûteuse
  6. +
  7. Pas de branches dédiées à des rôles spécifiques : pas d'intégration + continue automatisée, pas de brach sécurisée, etc.
  8. +
  9. Détricotage compliqué et long
  10. +
+
+
+

Quand l'utiliser ?

+
  • Petite équipe : 3 développeurs maximum
  • +
  • Projet facile avec métier simple et + évolutions peu fréquentes.
  • +
  • Projet en TMA, pas en cours de construction
  • +
    +

    Feature branching

    -

    Flow multi-branches. Une branche principale servant à l'integration des fonctionnalités (souvent appelée develop). Puis une branche par fonctionnalité basée sur develop.

    -

    L'idée de ce flow est de séparer les concepts métiers en story utilisateurs. Il permet une plus grande modularité et une meilleure maîtrise dans la façon de travailler.

    -

    Souvent couplé avec la méthodologie Kanban. Possibilité de forcer la relecture de code avant intégration via pull request

    +

    Flow multi-branches. Une branche principale servant à + l'integration des fonctionnalités (souvent appelée develop). Puis une branche par + fonctionnalité basée sur develop.

    +

    L'idée de ce flow est de séparer les concepts métiers en story + utilisateurs. Il permet une plus grande modularité et une meilleure maîtrise dans la façon + de + travailler.

    +

    Souvent couplé avec la méthodologie Kanban. Possibilité de + forcer + la relecture de code avant intégration via pull request

    Travail supplémentaire à l'intégration d'une feature.

    - - +

    Les étapes du feature-branching

    @@ -637,37 +806,108 @@

    Les étapes du feature-branching

  • Je code sur ma branche (commit et push régulier)
  • Je résous les conflits avec dev (merge ou rebase)
  • Je crée la pull request
  • -
  • Un relecteur valide ma pull request ou me renvoie à l'étape 2
  • +
  • Un relecteur valide ma pull request ou me renvoie à + l'étape 2
  • -

    L'intérêt du rebase

    - - +
    + +

    Exercices

    -

    Prise en main

    -

    Branching

    +

    Prise + en main

    +

    Branching

    +
    +

    Pas de conflits ne veut pas dire pas d'effet de bord

    +

    Ce n'est pas parce que les lignes de code se sont bien mergés que le travail + d'un développeur n'a pas cassé le travail d'un autre.

    +

    Les tests fonctionnels sont à toujours à faire.

    +
    @@ -701,4 +941,4 @@

    Exercices

    - + \ No newline at end of file From 8c20fb98f85c8c46fce7e87494a5dc65b6bbf765 Mon Sep 17 00:00:00 2001 From: adrien viala Date: Mon, 21 Jan 2019 12:20:23 +0100 Subject: [PATCH 2/6] workflows detailles bases premier jet --- images/git_flow.svg | 1 + images/git_flow_features.svg | 1 + images/git_flow_master_dev.svg | 1 + images/git_flow_release.svg | 1 + images/git_forking_workflow.png | Bin 0 -> 94255 bytes index.html | 168 +++++++++++++++++++++++++++----- 6 files changed, 146 insertions(+), 26 deletions(-) create mode 100644 images/git_flow.svg create mode 100644 images/git_flow_features.svg create mode 100644 images/git_flow_master_dev.svg create mode 100644 images/git_flow_release.svg create mode 100644 images/git_forking_workflow.png diff --git a/images/git_flow.svg b/images/git_flow.svg new file mode 100644 index 0000000..7774eed --- /dev/null +++ b/images/git_flow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/git_flow_features.svg b/images/git_flow_features.svg new file mode 100644 index 0000000..c9c66b8 --- /dev/null +++ b/images/git_flow_features.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/git_flow_master_dev.svg b/images/git_flow_master_dev.svg new file mode 100644 index 0000000..c347b4d --- /dev/null +++ b/images/git_flow_master_dev.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/git_flow_release.svg b/images/git_flow_release.svg new file mode 100644 index 0000000..640f80a --- /dev/null +++ b/images/git_flow_release.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/git_forking_workflow.png b/images/git_forking_workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..a882182992d2dda3018ba8c93b5ea1462550f6f8 GIT binary patch literal 94255 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 Lrw`L?Jt_YI!%D2( literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 225af57..8575bb8 100644 --- a/index.html +++ b/index.html @@ -519,6 +519,7 @@

    Git stash

    +
    @@ -648,7 +649,7 @@

    L'intérêt du rebase

    - +

    Git au quotidien

    @@ -670,6 +671,16 @@

    Les clients graphiques

    + +
    +
    +

    Exercices

    +

    Prise + en main

    +

    Branching

    +
    +
    +
    @@ -683,6 +694,7 @@

    Workflows

    +
    @@ -763,10 +775,11 @@

    Quand l'utiliser ?

  • Projet en TMA, pas en cours de construction
  • +
    -

    Feature branching

    +

    Feature Branching Workflow

    Flow multi-branches. Une branche principale servant à l'integration des fonctionnalités (souvent appelée develop). Puis une branche par fonctionnalité basée sur develop.

    @@ -820,7 +833,6 @@

    Remarques

    Il n'y a pas d'exclusivité à un seul développeur.

    Pour une simplification de l'arbre des commits, git merge --squash bugfix. Cela concatène tous les commits de la branche Mantis_845 en un seul.

    -

    Les merges des fonctionnalités dans la branche de développement peuvent être fait localement (sur le poste de travail du lead tech par exemple). Ils peuvent être fait dans les forges logicielles (recommandé).

    @@ -866,45 +878,149 @@

    Quand l'utiliser ?

    la responsabilité.
    - +
    -

    Gitflow

    -

    Cadrage strict du Feature Branch Workflow. +

    +

    Cadrage théorique strict du Feature Branch Workflow. Il est proposé en janvier 2010 par Vincent Driessen et a connu une large adoption.

    Gitflow est conçu pour les gros projets qui font des livraisons - régulièrement. C'est le cadre ultime pour gérer des

    - - - +
    +

    Avantages

    +
      +
    1. Tous les avantages du Feature Branch Workflow
    2. +
    3. Fluidité pour la livraison régulière
    4. +
    5. Naturellement adapté à l'agile
    6. +
    7. Supporte des gros projets et beaucoup de développeurs + en compartimentant les responsabilités
    8. +
    9. Historiques du code et du projet très liés et cadrés
    10. +
    +
    +
    +

    Défauts

    +
      +
    1. Compliqué à respecter : nécessite un responsable
    2. +
    3. Demande de la rigueur
    4. +
    5. À mon avis, exige d'avoir une
    6. forge logicielle
    7. (TFS, + GitLab, GitHub, Bitbucket...) opérationnelle +
    +
    +
    +

    Quand l'utiliser ?

    +
  • Moyenne ou + grosse équipe
  • +
  • Projet à livraisons régulières ou fréquentes : cycle agile, TMA + dynamique.
  • +
  • Grosse base de code en construction
  • +
  • Au moins un développeur prêt à monter en compétence sur Git et prendre + la responsabilité.
  • -
    -
    + + +
    -

    Exercices

    -

    Prise - en main

    -

    Branching

    +

    Forking Workflow

    +

    Complètement différent de ce qu'on a vu jusqu'à présent

    +

    Projets open-source et collaboratifs.

    +

    + +

    +

    Chaque développeur a son repo local et un repo public.

    +

    La Pull Request est l'outil clef.

    +
    +
    +

    Avantages

    +
      +
    1. Ouvert aux suggestions de contribution de tout le monde
    2. +
    3. Bases de code publiques accessibles à tous en lecture
    4. +
    5. Tout le monde peut faire sa version et la partager
    6. +
    7. Supporte des énormes projets et beaucoup de + développeurs
    8. +
    9. Le maintainer officiel peut sous-traiter l'aggrégation et la + vérification des Pull Request
    10. +
    11. Pas de source unique de vérité
    12. +
    +
    +
    +

    Défauts

    +
      +
    1. Compliqué
    2. +
    3. Lourd pour chaque développeur (mais les Githubs&Cie machent + le travail)
    4. +
    5. Pas de source unique de vérité
    6. +
    +
    +
    +

    Quand l'utiliser ?

    +
  • Grosse équipe sur plusieurs sites, fuseaux horaires, entreprises, etc.
  • +
  • Projet à multiples parties prenantes
  • +
    -

    Pas de conflits ne veut pas dire pas d'effet de bord

    -

    Ce n'est pas parce que les lignes de code se sont bien mergés que le travail +

    0 conflit != 0 effet de bord

    +

    Ce n'est pas parce que les lignes de code se sont bien mergés que le + travail d'un développeur n'a pas cassé le travail d'un autre.

    Les tests fonctionnels sont à toujours à faire.

    From 0d4caf0c42b13e6c2a179a77b6149cac0a9c47f4 Mon Sep 17 00:00:00 2001 From: adrien viala Date: Mon, 21 Jan 2019 12:25:26 +0100 Subject: [PATCH 3/6] =?UTF-8?q?git=20status=20m=C3=A9rite=20son=20propre?= =?UTF-8?q?=20slide?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/index.html b/index.html index 8575bb8..54a1ccf 100644 --- a/index.html +++ b/index.html @@ -670,6 +670,20 @@

    Les clients graphiques

    +
    +

    GIT STATUS

    +

    git status est la commande ultime : +

  • donne l'état
  • +
  • explique ce qui s'est passé
  • +
  • recommande la prochaine commande à exécuter
  • +

    +

    À utiliser systématiquement : +

  • avant un commit pour vérifier quoi et
  • +
  • quand un merge ou un rebase se passe mal
  • +
  • quand on a un doute
  • +
  • avant de m'appeler (parce que c'est la première chose que je vais faire en arrivant)
  • +

    +
    @@ -1024,6 +1038,7 @@

    0 conflit != 0 effet de bord

    d'un développeur n'a pas cassé le travail d'un autre.

    Les tests fonctionnels sont à toujours à faire.

    + From 350de2c7702f5ba419286dd49dce74f904e33ebf Mon Sep 17 00:00:00 2001 From: adrien viala Date: Mon, 21 Jan 2019 12:55:29 +0100 Subject: [PATCH 4/6] ajustements --- index.html | 66 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/index.html b/index.html index 54a1ccf..9ff4b15 100644 --- a/index.html +++ b/index.html @@ -125,7 +125,7 @@ * Les concepts de Git * Les fonctions de bases * Travailler concrètement avec Git - * Pour aller plus loin + * Les workflows @@ -390,6 +390,7 @@

    Git commit

    +
    @@ -444,6 +445,7 @@

    Le HEAD

    +
    @@ -684,6 +686,24 @@

    GIT STATUS

  • avant de m'appeler (parce que c'est la première chose que je vais faire en arrivant)
  • +
    +

    0 conflit != 0 effet de bord

    +

    Ce n'est pas parce que les lignes de code se sont bien mergés que le + travail + d'un développeur n'a pas cassé le travail d'un autre.

    +

    Les tests fonctionnels sont à toujours à faire.

    +
    +
    +

    Règles d'or

    +

    Je commit souvent

    +

    Chaque commit n'est lié qu'à un seul sujet

    +

    Je push tous les jours

    +

    Je mets à jour mon repo local tous les jours

    +

    Je mets mes expérimentations dans des branches à part et je les push

    +

    Si j'ai un doute, je fais une branche ou un tag puis j'essaye

    +

    Rien n'est jamais vraiment perdu (ou presque)

    +

    Il y a la solution à mon problème sur Stackoverflow

    +
    @@ -700,6 +720,8 @@

    Exercices

    Workflows

    Pour une organisation du travail efficace et qualitative!

    +

    Git est un outil génial à bien utiliser : les workflows sont les processus + de gestion de code qui permettent une d'en tirer le maximum

    1. Workflow centralisé tout sur master
    2. Feature Branch workflow une branche par fonctionnalité
    3. @@ -795,8 +817,8 @@

      Quand l'utiliser ?

      Feature Branching Workflow

      Flow multi-branches. Une branche principale servant à - l'integration des fonctionnalités (souvent appelée develop). Puis une branche par - fonctionnalité basée sur develop.

      + l'integration des fonctionnalités (souvent appelée master). Puis une branche par + fonctionnalité basée sur master.

      L'idée de ce flow est de séparer les concepts métiers en story utilisateurs. Il permet une plus grande modularité et une meilleure maîtrise dans la façon de @@ -849,7 +871,7 @@

      Remarques

      bugfix. Cela concatène tous les commits de la branche Mantis_845 en un seul.

      Les merges des fonctionnalités dans la branche de développement peuvent être fait localement (sur le poste de travail du lead tech par exemple). Ils peuvent - être fait dans les forges logicielles (recommandé).

      + être fait dans les forges logicielles (par pull request).

      En plus de la relecture, un build automatique peut (devrait) être mis en place. Si ce n'est pas automatisé, c'est à la charge du mergeur de tester le build et le démarrage de l'application

      @@ -896,14 +918,15 @@

      Quand l'utiliser ?

      -

      +

      Gitflow

      Cadrage théorique strict du Feature Branch Workflow. Il est proposé en janvier 2010 par Vincent Driessen et a connu une large adoption.

      Gitflow est conçu pour les gros projets qui font des livraisons - régulièrement. C'est le cadre ultime pour gérer des paquebots.

      + régulièrement. C'est le cadre ultime pour gérer des bases de code paquebots avec de multiples + équipes de développeurs en interne.

      git-flow est la boîte à outil pour implémenter les règles théoriques.

      @@ -916,7 +939,7 @@

      Gitflow en une image

      Règle 1 : master & develop

      -

      Master ne contient que des releases.

      @@ -925,7 +948,7 @@

      Règle 1 : master & develop

      Règle 2 : feature branching

      -

      Le développement se fait essentiellement sur des branches dédiées.

      @@ -934,7 +957,7 @@

      Règle 2 : feature branching

      Règle 3 : branche de livraison

      -

      Une semaine avant la livraison, une branche dédiée est crée : on @@ -947,7 +970,7 @@

      Règle 3 : branche de livraison

      Règle 4 : branche de patch - le hotfix

      - +

      Basée sur master. Seules branches qui "sortent" de master

      Une fois le bug corrigé, la branche de @@ -960,7 +983,7 @@

      Avantages

      1. Tous les avantages du Feature Branch Workflow
      2. Fluidité pour la livraison régulière
      3. -
      4. Naturellement adapté à l'agile
      5. +
      6. Naturellement adapté à l'agile
      7. Supporte des gros projets et beaucoup de développeurs en compartimentant les responsabilités
      8. Historiques du code et du projet très liés et cadrés
      9. @@ -971,8 +994,8 @@

        Défauts

        1. Compliqué à respecter : nécessite un responsable
        2. Demande de la rigueur
        3. -
        4. À mon avis, exige d'avoir une
        5. forge logicielle
        6. (TFS, - GitLab, GitHub, Bitbucket...) opérationnelle +
        7. À mon avis, exige d'avoir une forge logicielle (TFS, + GitLab, GitHub, Bitbucket...) opérationnelle
      @@ -995,12 +1018,15 @@

      Quand l'utiliser ?

      Forking Workflow

      Complètement différent de ce qu'on a vu jusqu'à présent

      Projets open-source et collaboratifs.

      + +

      Chaque développeur a son repo local et un repo public.

      +

      La Pull Request est l'outil clef.

      +
      +

      -

      -

      Chaque développeur a son repo local et un repo public.

      -

      La Pull Request est l'outil clef.

      Avantages

      @@ -1031,14 +1057,6 @@

      Quand l'utiliser ?

      -
      -

      0 conflit != 0 effet de bord

      -

      Ce n'est pas parce que les lignes de code se sont bien mergés que le - travail - d'un développeur n'a pas cassé le travail d'un autre.

      -

      Les tests fonctionnels sont à toujours à faire.

      -
      - From eda4102afab3115e3eed3621e724654aa1aa78ad Mon Sep 17 00:00:00 2001 From: adrien viala Date: Mon, 21 Jan 2019 18:35:19 +0100 Subject: [PATCH 5/6] cleaning up --- index.html | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/index.html b/index.html index 9ff4b15..3daa292 100644 --- a/index.html +++ b/index.html @@ -851,10 +851,11 @@

      Feature Branching Workflow

      Les étapes du feature-branching

        -
      1. Je crée une branche à partir de devs liés à une issue/WI
      2. -
      3. Je code sur ma branche (commit et push régulier)
      4. -
      5. Je résous les conflits avec dev (merge ou rebase)
      6. -
      7. Je crée la pull request
      8. +
      9. Je crée une branche Mantis_845 à partir de master + liés à une issue/WI
      10. +
      11. Je code sur ma branche (commit et push réguliers)
      12. +
      13. Je résous les conflits avec master (merge ou rebase)
      14. +
      15. Je crée la pull request
      16. Un relecteur valide ma pull request ou me renvoie à l'étape 2
      @@ -862,8 +863,8 @@

      Les étapes du feature-branching

      Remarques

      On peut continuer à développer sur la feature branch Mantis_845 - même après un merge sur la branche dev. Le prochain merge de Mantis_845 ne fera - que rajouter les nouveaux commits dans dev

      + même après un merge sur la branche master. Le prochain merge de Mantis_845 ne + fera que rajouter les nouveaux commits dans master

      Plusieurs développeurs peuvent travailler ensemble sur une même branche Mantis_845. Il n'y a pas d'exclusivité à un seul développeur.

      @@ -888,7 +889,8 @@

      Avantages

    4. Pousse à la relecture de code
    5. Modularise les développements
    6. Réactivité possible
    7. -
    8. Versionning naturel : dans la branche dev, ce n'est qu'une +
    9. Versionning naturel : dans la branche master, ce n'est + qu'une succession de fonctionnalités terminées.
    @@ -898,7 +900,7 @@

    Défauts

  • Plus compliqué à suivre
  • Demande de la rigueur
  • Risque fort de problème de conflits (si les développeurs ne - mettent pas à jour leur branche Mantis_845 avec dev
  • + mettent pas à jour leur branche Mantis_845 avec master
  • Certaines fonctionnalités ne se prêtent pas au découplage sur plusieurs branches car elles partagent du code
  • Historique du code plus compliqué à remonter
  • From 70372a09aec245b0743cc34864124240d3625efd Mon Sep 17 00:00:00 2001 From: adrien viala Date: Mon, 21 Jan 2019 19:24:04 +0100 Subject: [PATCH 6/6] misc --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 3daa292..23ef319 100644 --- a/index.html +++ b/index.html @@ -856,7 +856,7 @@

    Les étapes du feature-branching

  • Je code sur ma branche (commit et push réguliers)
  • Je résous les conflits avec master (merge ou rebase)
  • Je crée la pull request
  • -
  • Un relecteur valide ma pull request ou me renvoie à +
  • Un relecteur valide ma pull request ou me renvoie à l'étape 2