Guest User

Untitled

a guest
Feb 18th, 2018
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.58 KB | None | 0 0
  1. Mémento de Git
  2. =============
  3.  
  4. ## Synopsis
  5. Ce mémento est un résumé de l'utilisation de Git pour le travail collaboratif.
  6.  
  7. ## Gestion de code sous GIT
  8. ### Les commandes utiles
  9. Commande | Explication
  10. --------------------------- |:------------
  11. `git status` | informations générales (fichiers non commités, branche ...)
  12. `git pull` | récupérer les changements sur le serveur
  13. `git push` | envoyer vos changements sur le serveur
  14. `git checkout master` | aller sur la branche master
  15. `git checkout -b my-branch` | créer la branche my-branch
  16. `git add my-file` | ajouter my-file au stage
  17. `git add -A` | ajouter tous les fichiers modifiés au stage
  18. `git commit` | créer un commit avec tous les fichiers fu stage
  19.  
  20. ### Les commits
  21. Un **commit** est un enregistrement du code dans l'historique de la branche.
  22. Un commit obéit doit être :
  23. - le plus petit possible (peu de changements)
  24. - fonctionnel (le code peut être exécuté sans lancer d'erreur)
  25.  
  26. Il est possible d'annuler les changements non commités, ce qui permet d'expérimenter du code puis de revenir à un état stable sans oublier de code expérimental quelque part.
  27.  
  28. #### Le stage
  29. GIT utilise le **stage** pour marquer les modifications à enregistrer. Par défaut une modification n'est pas dans le stage et apparaît en rouge lorsqu'on fait un `git status`. Pour ajouter les modifications apportées à un fichier dans le stage on fait un `git add path/to/my/file`. Si on fait un `git commit` après on enregistre alors toutes les modifications du stage dans l'historique de la branche.
  30.  
  31. Ceci permet de contrôler le contenu de ses commits (*exemple: j'ai un fichier de configuration que je ne veux pas ajouter dans git*).
  32.  
  33. ### Les branches
  34. Une branche permet d'écrire son code sans risquer d'entrer en conflit avec le travail des autres collaborateurs. La branche principale est `master`
  35.  
  36. **:warning: On ne push jamais sur la branche master**
  37.  
  38. On crée une nouvelle branche chaque fois qu'on implémente une nouvelle fonctionnalité (*exemple: utiliser la base de données pour récupérer les données*).
  39. Une fois le travail terminé on fait une **pull request**, qui consiste à demander à que son code soit intégré à la branche master.
  40.  
  41. #### Créer une branche
  42. Depuis la branche master :
  43. 1. on s'assure qu'on est sur master et que le code est à jour avec `git status` ;
  44. 2. on met à jour le code avec `git pull` ;
  45. 3. on crée une nouvelle branche avec `git checkout -b "my-branch"`.
  46.  
  47. #### Travailler sur sa branche
  48. On itère par commits. Une fois la fonctionnalité entièrement implémentée à l'aide d'un ou plusieurs commits la branche peut être mergée (**merging** en anglais) on peut faire une **pull request** (ou PR en abrégé) si on utilise github afin
  49. que le code de la branche soit enregistré dans master.
  50.  
  51. Les étapes sont :
  52. 1. envoyer la branche sur github avec `git push` ;
  53. 2. se rendre sur la *page github du projet* puis dans l'onglet *Pull requests* ;
  54. 3. cliquer sur *New pull request* ;
  55. 4. dans la liste *compare* choisir votre branche ;
  56. 5. cliquer sur *Create pull request*.
  57.  
  58. Maintenant vos collaborateurs peuvent venir consulter votre pull request, voir tous les changements que votre branche va apporter à master afin de s'assurer que vous n'introduisez pas d'erreur et commenter/valider votre PR.
  59.  
  60. Lorsque les changements ont été vérifiés un des collaborateurs peut alors accepter la PR, ce qui va merger votre code dans master. Si il n'y a pas de conflits ce sera fait automatiquement, sinon il faudra faire un rebase en local (voir plus loin).
  61.  
  62. ### Gérer les conflits de merging
  63. Lorsqu'on merge une branche dans une autre, si un fichier a été modifié dans les deux branches il peut y avoir un conflit: git ne sait pas quelles modifications enregistrer et lesquelles annuler.
  64.  
  65. Il faut alors en local:
  66. 1. faire un `git pull` sur les 2 branches pour s'assurer d'avoir des versions à jour
  67. 2. se rendre sur la branche à merger avec `git checkout my-branch` ;
  68. 3. faire `git rebase --onto master` (si on veut merger *my-branch* sur *master*) ;
  69.  
  70. Git va alors dérouler l'historique des commits jusqu'à arriver aux fichiers conflictuels, par commit.
  71.  
  72. Il faut alors faire pour chaque commit conflictuel :
  73. 1. `git status` pour voir quels fichiers posent problème
  74. 2. éditer les fichiers pour corriger les problèmes
  75. 3. ajouter les modifications au stage avec `git add -A`
  76. 4. relancer le processus avec `git rebase --continue`
  77.  
  78. Une fois que le rebase est complété, il faut refaire un `git push` pour l'envoyer sur le serveur github et compléter la PR.
Add Comment
Please, Sign In to add comment