Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Git merge-rebase

166 views

Published on

Git et rebase sont-ils équivalents ? Dans quels cas utiliser l'un ou l'autre ? Nous verrons que chacun a son utilité dans la gestion de branches et l'amélioration de l'historique.

Published in: Software
  • Be the first to comment

Git merge-rebase

  1. 1. #DevoxxFR T'es plutôt git merge ou git rebase ? Jean Detoeuf @thebignet 1
  2. 2. #DevoxxFR Jean Detoeuf Développeur freelance Software Crafter DDD Agile git 2
  3. 3. #DevoxxFR 3
  4. 4. #DevoxxFR 4 Développeur apprenant git
  5. 5. #DevoxxFR git log 5
  6. 6. #DevoxxFR 6 Deux manières de faire un merge
  7. 7. #DevoxxFR 7
  8. 8. #DevoxxFR 8 Merge
  9. 9. #DevoxxFR 9 merged feature A feature A Merge master
  10. 10. #DevoxxFR Quand faire un merge-commit ? • Sur les branches durables • Pour indiquer un fait marquant : • Release, Sprint • Mise en production 10
  11. 11. #DevoxxFR 11 feature A master Rebase
  12. 12. #DevoxxFR 12 master feature A Rebase
  13. 13. #DevoxxFR 13 master feature A Rebase
  14. 14. #DevoxxFR 14 master feature A Rebase
  15. 15. #DevoxxFR Quand faire un rebase ? • Sur acceptation d'une pull request de feature, suivi d'un merge fast-forward • Lors d'un git pull 15 git config --global branch.autoSetupRebase always git config --global pull.rebase = preserve
  16. 16. #DevoxxFR conflits 16
  17. 17. #DevoxxFR Eviter les conflits • Utiliser des retours à la ligne • Eviter de travailler sur les mêmes fichiers • Structurer correctement l'application en séparant les fonctionnalités dans des fichiers différents • Se répartir le travail intelligemment dans l'équipe • Commiter régulièrement • Faire des branches qui ne durent pas longtemps 17
  18. 18. #DevoxxFR Rebase/merge • Reuse Recorded Resolution pour éviter les corrections identiques 18 git config --global rerere.enabled true
  19. 19. #DevoxxFR Réécrire l'histoire - rebase intéractif pick f7f3f6d changed my name a bit pick 310154e updated README formatting and added blame pick a5f4a0d added cat-file # Rebase 710f0f8..a5f4a0d onto 710f0f8 # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. # # Note that empty commits are commented out 19
  20. 20. #DevoxxFR Workflows 20
  21. 21. #DevoxxFR Feature merge 21
  22. 22. #DevoxxFR git-flow 22
  23. 23. #DevoxxFR branche unique 23
  24. 24. #DevoxxFR GitHub style 24
  25. 25. #DevoxxFR 25 La branche est-elle terminée ? Intégrer une branche durable ? git merge --no-ff Intégrer les changements d'une branche durable ? L'historique a été revue ? non oui git merge Est-ce une branche durable ? oui non git pull --rebase=preserve git add git commit non oui non non oui git rebase -i oui
  26. 26. #DevoxxFR Merci ! @thebignet slideshare.net/JeanDetoeuf thebignet.github.io/talk-merge-rebase 26 Attribution 4.0 International

×