0% ont trouvé ce document utile (0 vote)
8 vues35 pages

3 SCM Git

Le document présente une introduction à la gestion du code source avec Git, en expliquant les concepts de base tels que les commits, les branches, et les dépôts distants. Il décrit également les commandes essentielles pour gérer les modifications et collaborer efficacement sur des projets en équipe. Enfin, il aborde des fonctionnalités avancées comme le stash et les opérations de fusion entre branches.

Transféré par

Abid Arij
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
8 vues35 pages

3 SCM Git

Le document présente une introduction à la gestion du code source avec Git, en expliquant les concepts de base tels que les commits, les branches, et les dépôts distants. Il décrit également les commandes essentielles pour gérer les modifications et collaborer efficacement sur des projets en équipe. Enfin, il aborde des fonctionnalités avancées comme le stash et les opérations de fusion entre branches.

Transféré par

Abid Arij
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

SCM av ec Git

S alah G on tar a
20 22- 20 23
Sour ce Code M an agem en t
◇ La gestion du code source (SCM)
est utilisée pour suivre les
modifications apportées à un
référentiel de code source.
◇ SCM suit un historique des
modifications apportées à une base
de code et aide à résoudre les
conflits lors de la fusion des mises
à jour de plusieurs contributeurs.
◇ SCM est également synonyme de
contrôle de version.
Codon s à plusieur s !
Versionner son projet avec Git
Pour quoi ut iliser git ?
Objectifs :

◇ travailler à plusieurs sans se marcher dessus :


indispensa ble pour les projets en équipe

◇ garder un historique propre de toutes les


modifications : on orga nise son tra va il sous forme de
“commits” documentés
La t héor ie de git
3 zones, 3 ambiances

Les modifications sont sauvegardés 3 fois

W orking directory Index Local repository

C’est la zone de travail : Zone qui permet de Code commité, prêt à être
les fichiers tout juste stocker les modifications envoyé sur un serveur
modifiés sont ici séléctionées en vue d’être distant
commitées
Les com m it s
Commit : ensemble de modifica tions cohérentes du
code

Un bon commit est un commit : C’est quoi concrètement un commit ?

◇ qui ne concerne qu’une s eule ◇ une différence (ajout / suppression de


fonctionna lité du progra mme lignes)

◇ le plus petit pos s ible tout en res ta nt ◇ des méta-données (titre, hash,
cohérent auteur)

◇ Idéa lement qu’il compile s eul


Les com m it s
Arbre de commits dans le git repository

4a7f5a6c478.. 7a4d5f97d8bb.. 0a4d9f8d4dda..

Ajout
Affichage des
Formulaire ajout commentaire
commentaires
commentaire dans base de
des publications
données
Aller jusqu’au com m it
3 zones, 3 ambiances

Les modifications sont sauvegardés 3 fois

W orking directory Index Local repository

C’est la zone de travail : Zone qui permet de Code commité, prêt à être
les fichiers tout juste stocker les modifications envoyé sur un serveur
modifiés sont ici séléctionées en vue d’être distant
commitées

git add git commit


Aller jusqu’au com m it
Où j’en suis dans mes 3 zones ?

git status

On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: views/add_commentaire.php

no changes added to commit (use "git add" and/or "git commit -a")
Aller jusqu’au com m it
Visualiser les différences entre le w orking directory et l’index

git diff

diff --git a/views/add_commentaire.php b/views/add_commentaire.php


index e69de29..8cff573 100644
--- a/views/add_commentaire.php
+++ b/views/add_commentaire.php
@@ -0,0 +1,6 @@
<?php include('header.php'); ?>

+<form action="/commentaire/ajouter" method="post">


+ <p>Pseudo : <input type="text" name="pseudo"/></p>
+ <p>Commentaire : <textarea name="commentaire"></textarea></p>
+</form>
Aller jusqu’au com m it
Ajouter mes modifications à la zone de staging (index)

git add views/add_commentaire.php


git status

On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

modified: views/add_commentaire.php
Aller jusqu’au com m it
Récupitulatif des commandes

a fficha ge
git diff git diff --staged
différences

w orking directory index git repository

git add mon_fichier


a jouter des
git add -p (interactif) git commit -m “message”
modifica tions
git add -A (tout ajouter)
Rev en ir au der n ier com m it
git status

On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: model/commentaires_model.php

no changes added to commit (use "git add" and/or "git commit -a")
Rev en ir au der n ier com m it
Enlever des modifications dans le w orking directory

git checkout -- monfichier


git status

On branch master
nothing to commit, working directory clean
Désin dexer des f ichier s
git status

On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

modified: model/commentaires_model.php
Désin dexer des f ichier s
git reset HEAD monfichier
git status

On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: model/commentaires_model.php

no changes added to commit (use "git add" and/or "git commit -a")
Aller jusqu’au com m it
Récupitulatif des commandes

w orking directory index git repository

git diff git diff --staged

git add monfichier git commit -m “titre”

git commit -am “titre” (si le fichier a déjà été indexé)

git checkout -- monfichier git reset HEAD monfichier

git reset --hard


Les br an ches

◇ branche : pointeur vers un commit

◇ une bra nche principa le : master

◇ B ra nche coura nte : HEAD

◇ en généra l, une bra nche pa r fonctionna lité en cours de


développement
Les br an ches
master*

C1 C2 C3

fonctionnalité

C4 C5
Les br an ches et com m it s
Arbre de commits dans le git repository
HEAD

master

4a7f5a6c478.. 7a4d5f97d8bb.. 0a4d9f8d4dda..

ajout
affichage des
formulaire ajout commentaire
commentaires
commentaire dans base de
des publications
données
Gest ion des br an ches
Création et modification de branches

git branch : affichage des branches

git branch ma_branche : créer la branche ma_branche


git checkout ma_branche : déplace HEAD vers ma_branche

ou pour simplifier...

git checkout -b ma_branche : créer la branche


ma_branche et déplace HEAD dessus
Gest ion des br an ches
Merge : intégration des modifications d’une branche dans la branche
courante

git merge ma_branche: merge ma branche dans la branche


courante

ma ster*

C1 C2 C3

bugFix

C4 C5
Gest ion des br an ches
Merge : intégration des modifications d’une branche dans la branche
courante

git merge ma_branche: merge ma branche dans la branche


courante

ma ster*

C1 C2 C3 C6

bugFix

C4 C5
Les dépot s dist an t s
Centraliser les données sur un dépot git !
Les dépôt s dist an t s

◇ git directory sur un serveur distant pour le travail collaboratif

◇ Dépots dis ta nts :


■ github (pa ck étudia nt)
■ Gitlab (en cours)

P ourquoi gitla b ?
◇ code review , merge reques t, interfa ce w eb, ...
Voir et ajout er des
dépots dis tan ts

Cloner un dépot distant : crée un dossier et récupère les fichiers

git clone <url>


En v oy er sur le dépot
dis tan t
git push

Envoie notre local repository sur le dépot distant

On ne touche plus aux commits pushés !


Recev oir depuis le dépot
dis tan t
git pull

Récupère les commits sur le dépot distant et met à jour le w orking directory
Le schém a de base de git
Récupitulatif des commandes
remote git
w orking directory index git repository
repository

git diff git diff --staged

git add git commit

git checkout -- git reset

git reset --hard


git push

git pull

git fetch
In st allat ion de git
Sous w indow s :
◇ https ://git- for- w indow s .github.io/
◇ http://ba bun.github.io/ (Emulateur de s hell)

S ous OS X :
◇ http://s ourceforge.net/projects /git- os x- ins ta ller

S ous Linux :
◇ <votre pa cka ge ma na ger> ins ta ll git

( a pt- get, rpm, …)


Aut hen t if icat ion par clé
Pour accéder aux dépots sur gitlab, il faut y ajouter sa clé

On génère une pa ire de clés :


ssh-keygen -t rsa -C " [email protected]"

On a ffiche le contenu de la clé publique :


cat ~/.ssh/id_rsa.pub

On copie tout le contenu de la clé publique sur https://gitla b.com/eps_devops


> mon profil > clés S S H
Con f igur at ion m in im ale

git config --global user.name "Prénom Nom"


git config --global user.email “[email protected]

En option mais c’est mieux :


git config --global color.ui true
git config --global color.diff.meta yellow
La zon e de bor del : S tas h
Le stash ça sert à :

◇ S a uvega rder les modifica tions du w orking directory da ns une


zone ta mpon pour rendre le w orking directory propre.
◇ P os s ibilité de rejouer les modifica tions s ta s hées n’importe où
◇ P eut être vu comme une zone de brouillons
St ash : les
c om m an des
On stash un ensemble de modifications
git stash

On récupères les modifica tions sta shées


git stash apply

P our plus ieurs sta shs :


git stash list
git stash apply stash@{id}

Effa cer le contenu du sta sh


git stash clear
Pour aller plus loin av ec
git...

◇ git rebase ou git merge ?

◇ balader ses commits avec git cherry-pick

◇ afficher un commit : git show <commit>

◇ Engueulez vos a mis : git blame <fichier>

◇ vis ua lis er l’his torique des commits : git log

◇ J’a i tout ca s s é ! git reflog

Vous aimerez peut-être aussi