Git & GitHub

Hello 👋

Pourquoi?

Git

Version control

Garder historique de toutes les modifications, naviguer dans l'historique

Collaboration

Travailler en parallèle sur plusieurs versions du projet, en grand nombre, expérimenter...

"Git gets easier once you get the basic idea that branches are homeomorphic endofunctors mapping submanifolds of a Hilbert space."

— Isaac Wolkerstorfer

Principes et bonnes pratiques

Branches, merge & PR

Workflow

Profil GitHub

Today

Principes

Les espaces

Appareil photo 📷

First things first

$ git status
  • Différences entre index et workspace
  • Différences entre index et local repository
  • Fichiers non suivis

Détails des différences

$ git diff

Ajoute les modifs et nouveaux fichiers à l'index

$ git add path/file_name
ou
$ git add -A
$ git commit
ou
$ git commit -m "commit short message"

Ajoute le contenu actuel de l'index dans un commit du repository local

First things first

Séparer les commits

$ git add path/file_name

$ git add path/file_name2

$ git commit -m "Commit one feature"

$ git add path/another_file

$ git commit -m "Commit another unrelated update"
$ git add --patch

patch !

Your turn

Commits

Message de commit

  • Titre clair et concis
  • Anglais !
  • Présent, impératif
  • Description si besoin

Bon :

Add integration tests for character CRUD

X Pas bon :

Added new CSS and the styling is now over

Bug corrigé sur le formulaire

Titre uniquement

$ git commit -m "Fix typo in config file"

Avec description

$ git commit

Historique

git log

SHA

$ git reset --hard

$ git reset --hard [SHA_COMMIT]

$ (git checkout [SHA_COMMIT])

Your turn

Remote

Sauvegarde de son code à distance
Collaboration via un remote partagé

$ git remote add origin git@github.com:etc.

$ git push origin branch-name
$ git push -u origin branch-name

$ git push

$ git pull

Alias

Quick Tips

Package éditeur

Sublime : GitGutter package

Branches

Tester, expérimenter

Créer des nouvelles features

Travailler en équipe

Navigation entre branches

Lister les branches

créer une branche


 

se positionner sur une branche

$ git branch branch-name
$ git checkout branch-name
$ git checkout -b branch-name

combo

$ git branch

Your turn

Merge

Fusionner 2 branches

Updater une branche

Ramener les modifs validées sur master

 

 

 

 

 

 

$ git checkout nom-branche1

$ git merge nom-branche2

Pull request

(Merge Request sur GitLab)

 

 

 

 

 

 

 

  • Titre clair et explicite
  • Mentionner ou affecter les personnes concernées
  • Même principe que pour les commits : ne pas tout mélanger

 

Relire ses modifs !

Your turn

Fork

Principe

Copie d'un repository sans affecter le repository original

  • Contribuer à des projets sans avoir les droits sur le repo
  • Expérimenter en partant d'un projet existant

 

 

Contribution à des projets open source :

Git stash

Pile de travail en cours

 

 

 

 

 

Passer temporairement sur une autre branche

Déplacer le travail en cours sur une autre branche

$ git stash

$ git stash pop

Gérer les conflits

Everything's gonna be alright

(but maybe it's time to talk with your team)

 

Command line

git ajoute des marqueurs dans le fichier

<<<<<<< HEAD
Update hello again from feature1 branch
=======
Update hello again from master
>>>>>>> master

résoudre le conflit, supprimer les marqueurs

$ git commit

puis                            sans message de commit

Your turn

GitHub (PR)

GitHub vérifie les conflits automatiquement

au moment de la PR

résoudre les différents conflits dans l'interface GitHub (meh)

Travail en équipe

workflows

Avec ou sans PR

Gestion des conflits

pull-merge-push

git pull

git checkout -b cool-feature

modifs...

git commit...

modifs...

git commit...

git checkout master

git pull

git merge cool-feature

git push

Workflow 1

Pull requests

git pull

git checkout -b cool-feature

modifs...

git commit...

modifs...

git commit...

git push origin cool-feature

 

 

Open Pull Request

 

Workflow 2

Your turn

Gérer les conflits en amont

Merger master sur sa branche

Gérer les confits

Merger sa branche sur master

$ git pull origin master
$ git merge master
...
$ git checkout master
$ git merge cool-feature
$ git push

pull-merge-push

git pull

git checkout -b cool-feature

modifs...

git commit...

modifs...

git commit...

git pull origin master

git merge master

git checkout master

git merge cool-feature

git push

Clean Workflow 1

Gestion des conflits

Pull requests

git pull

git checkout -b cool-feature

modifs...

git commit...

modifs...

git commit...

git push origin cool-feature

PR de master depuis cool-feature

Gestion des conflits

PR de cool-feature depuis master

 

Clean Workflow 2

Clean Workflow, with PR 🤓

git checkout master

git pull

git checkout -b feature1

modifs...

git commit...

modifs...

git commit...

git checkout master

git pull

git checkout feature1

git merge master

git push -u origin feature1

Open Pull Request

Commandes destructrices

  • git reset
  • git push --force
  • git merge

(think twice)

Profil GitHub - CV

Quoi mettre dedans ?

Cheat Sheets

Tests techniques

Projets persos

Contributions

Exemples

Présentation

Tips

  • Clean code (keep it simple)
  • Varier le type de projet
  • Varier outils utilisés
  • Nom des variables
  • Nom des commits...

Ressources

1/2

Ressources

2/2

Try git

https://try.github.io

 

 

 

#tutor_zaratan

Workshop Git

By durev

Workshop Git

  • 714