Git

Présentation

  • Développeur web freelance depuis 5 ans

  • http://www.boxydev.com

  • Expérience en agence web, E-Commerce (annonceur)

  • Formation Informatique et Autodidacte

  • Formateur et fan des OSS, contributeur à mes heures perdues

  • Solutions phares : Wordpress, Symfony, Magento, Prestashop, Angular

  • Langages : PHP, MySQL, HTML, CSS, JS

  • Outils : Git, Docker, Vagrant, Trello
  • Stack: ArchLinux, Gentoo, Mac OS (Unix addict)

Qu'est-ce que Git ?

Git est un outil, créé par Linus Torvalds, nous permettant de faire du versioning (versionner notre code).

 

- Historique / Timeline des modifications

- Travailler sur des branches (Plusieurs versions)

Pourquoi ?

- Historique de toutes les modifications du projet

- Travail en équipe : Fusion du code de chacun

- Revenir en arrière

- Suivre l'évolution du projet

- Travailler sur plusieurs branches en parallèle

Installation

https://git-scm.com/downloads

Utilisation

Git s'utilise principalement en CLI (Command Line Interface).


git --version # Permet de vérifier la version de Git installée sur le système

git init # Initialise un dépôt git dans un projet existant

git status # Affiche les fichiers/dossiers qui ont été modifiés depuis le dernier commit
git log # Liste l'historique des commits

git add FILE1 FILE2 # Ajouter les fichiers FILE1 et FILE2 dans la file d'attente
git add . # Ajouter tous les fichiers nouveaux / modifiés dans la fille d'attente

git commit -m "An amazing commit" # Créer un commit avec les fichiers dans la file d'attente

git push origin master # Mettre à jour le dépôt distant

git pull origin master # Mettre à jour le dépôt local

Utilisation

Il existe des GUI...

- Github Desktop

- Gitkraken

- Sourcetree

Branches

- Développer une feature de manière isolée

- Garder une version stable du projet et tester quelque chose


git branch <branch> # Créer une branche

git checkout <branch> # Se positionner sur la branche

git checkout -b <branch> # Créer la branche et se positionner dessus en une commande

git merge <branch> # Fusionner la branche dans la branche courante

Conflits

- Peut arriver lors des fusions

- 2 branches modifient la même ligne et Git ne sait pas laquelle est correct

# Fichier dans master:
Le nombre de planètes est neuf.

# Fichier dans branch:
Le nombre de planètes est huit.

# On veut fusionner branch dans master.
git merge branch

# Si on voit quelque chose comme ça dans le résultat de la CLI
CONFLICT (content) : Merge conflict in <your_file.ext>

# Le fichier indique maintenant cela
<<<<<<< HEAD
Le nombre de planètes est neuf.
=======
Le nombre de planètes est huit.
>>>>>>> branch

# On peut corriger le conflit par
Le nombre de planètes est neuf, ou huit, cela dépend à qui vous demandez.

Dépôt local / distant

- Dépôt local au minimum

- Dépôt distant pour synchroniser avec une équipe et / ou partout dans le monde

- Serveur git, Github, Bitbucket, Gitlab

Fork

Le Fork est une copie que vous faites d'un dépôt existant. Vous pouvez ensuite effectuer vos modifications et proposer une pull request pour que le créateur du dépôt original accepte la modification... Ou pas.

Pull Request (PR)

C'est lorsqu'une demande de fusion d'une branche dans une branche (ou d'un dépôt forké dans son dépôt original) est demandée.

Issue

Permet de signaler un bug, demander une nouvelle fonctionnalité, ...

 

Possibilité de link avec une PR ou un / plusieurs commits.

Workflow

http://www.nicoespeon.com/fr/2013/08/quel-git-workflow-pour-mon-projet/

 

https://i.stack.imgur.com/NuThL.png

Exercice

- Cloner le dépôt JS du formateur
  git clone URL DOSSIER
- Créer une branche prenom (matthieu par exemple ou julien)
  cd javascript-formateur
  git branch prenom
- Créer un dossier example avec ce que vous avez fait
- Faire un commit
- Pousser la branche
- On devrait pouvoir créer une Pull Request sur Github

Git

By Matthieu Mota