15'' GIT

Git : rappel

Publier son travail

  • Localement :
    • git add (git add . ajoute tout)
    • git commit (création commit local)
  • Publier :
    • git push

Pull 

  • Aucun commit local non push
    • git pull
  • Pour un pull avec des commits locaux
    • git pull --rebase=preserve
    • pensez à faire un alias (ex : pullrp)
    • ne peut pas être exécuté avec des fichiers locaux modifiés --> pensez a git stash

Branche

  • Branche de la dernière version : master
  • Branche pour chaque versions maintenues : G6R2, G6R3...
  • Tag pour les correctifs : G6R3C3, G6R4C1...
    • C'est celui qui commence le nouveau correctif qui créé le tag.

 

  • 1 Branche par feature !                                                    

Nommage

  • Story : story-fti4181_ssl_two_way
  • CR : cr-385-fti5678_je_suis_un_cr
  • Defect : defect-410-fti4185_js_disable
  • Transverse/Autre : trans-up_version_G6R5

Se déplacer sur les branches

  • git checkout <branch_name>
  • Création : git checkout -b <branch_name>
    • Création a partir de l'état courant : penser à pull !
  • Checkout remote branch : 
    • git fetch
    • git checkout <branch_name>

Merge

  • On se place sur la branche cible puis
    • git pull
    • git merge <branch_to_merge>
  • En cas de conflit
    • On règle les conflits (voir git status)
    • git add <fichiers_conflit>
    • git commit

Dev G6R4 exemple

  • git checkout G6R4
  • git pull
  • git checkout -b trans_ma_feature
  • (je fais mes dev)
  • git add . && git commit
  • git push
  • git checkout G6R4
  • git pull
  • git merge trans_ma_feature
  • git push
  • git checkout master
  • git pull
  • git merge trans_ma_feature
  • git push

general Tips

  • La partie add/commit est facile/pratique sur Eclipse
  • Google est un expert Git
  • Les messages d'erreurs Git contiennent souvent la solution
  • Tant que ce n'est pas push on peut (presque) tout corriger
  • git status --> commande magique !

Command tips

  • git stash
    • sauvegarde et enlève tous les changements (sur les fichiers tracké, -u pour tous les fichiers)
    • git stash apply les rejoues (même sur une autre branche)
  • git commit --amend (sur un commit non push)
    • modification du dernier commit (contenu + commentaire)
  • git rebase -i (sur des commits non push)
    • couteau suisse mais permet de modifier les commits (contenu + commentaire)

Command tips

  • git reset HEAD^ (sur un commit non push)
    • supprime le dernier commit MAIS garde les changements

Phabricator

vs

Gitlab

Pahbricator

  • Pros
    • liste exhaustive des commits à revoir
    • existant
    • workflow avec CI
  • Cons
    • liste exhaustive des commits à revoir
    • pas de revue de branche
    • CI cassée par des commits qui ne passent pas la revue

Gitlab

  • Pros
    • revue de branche
    • merge request
    • clarté
    • un outil en moins
  • Cons
    • revue avant CI (si merge request)
    • plus facile de rater un commit (cas sans merge request)

Demo

merge request

Demo

Avec DÉPLOIEMENT QI Obligatoire

Discussion

(et toujours si besoin/envie)

15'' : https://try.github.io

ultra complet : http://learngitbranching.js.org/

15'' Git

By Anthony Gauchy

15'' Git

Présentation rapide sur Git. Puis comparaison Phabricator/Gitlab

  • 24