Last active
April 25, 2019 15:49
-
-
Save dkurzaj/b50d67c26fbf8fc5c3b05d7cc55dacf5 to your computer and use it in GitHub Desktop.
Revisions
-
dkurzaj renamed this gist
Apr 25, 2019 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
dkurzaj created this gist
Apr 25, 2019 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,56 @@ S'assurer qu'on est sur la branche `develop` ``` git checkout develop ``` S'assurer que la branche est à jour ``` git pull ``` Maintenant pour faire les développements qu'on a en tête on crée une nouvelle branche qui porte un nom en rapport avec ce qu'on veut faire. ``` git checkout -b ajout-de-telle-fonctionalite ``` En fait `git checkout` sert normalement à passer d'une branche à une autre, pas à en créer une. C'est l'option `-b` qui fait qu'on crée une nouvelle branche au moment où on passe dessus. Cette nouvelle branche se crée en ayant pour base la branche sur la quelle où on se trouve juste avant (en l'occurrence `develop`). Afin d'avoir la liste des branches locale on peut utiliser la commande suivante (on peut voir d'ailleurs dans le résultat qu'on est bien sur la nouvelle branche `ajout-de-telle-fonctionalite`) : ``` git branch ``` Maintenant il faut qu'on envoie cette branche nouvellement créée en locale, vers notre dépôt git : ``` git push -u origin ajout-de-telle-fonctionalite ``` Maintenant on peut faire tous nos travaux et nos commits sur cette branche. Une fois qu'on a fini (ou de temps en temps), on peut récupérer ce qui a été fait sur `develop` afin que notre branche `ajout-de-telle-fonctionalite` garde les nouveautés ajoutées entre temps à `develop`. D'abord on met à jour notre branch `develop` locale, puis on retourne sur notre branche : ``` git checkout develop git pull git checkout ajout-de-telle-fonctionalite ``` Maintenant deux options s'offrent à nous pour appliquer les nouveautés de `develop` sur `ajout-de-telle-fonctionalite`. Ces deux méthodes sont l'objet de discussions : - https://www.atlassian.com/git/tutorials/merging-vs-rebasing - https://stackoverflow.com/questions/804115/when-do-you-use-git-rebase-instead-of-git-merge La première consiste à utiliser la commande de `rebase` qui revient en fait à intercaler tous les commits qui ont eu lieu dans `develop` avant ceux qu'on a fait dans `ajout-de-telle-fonctionalite`. Il va appliquer nos commits par-dessus ceux de `develop`. (Il y aura peut-être des conflits à corriger, la commande nous dit alors de faire des `git add` et `git rebase --continue` une fois les conflits résolus.) ``` git rebase develop ``` Il faut ensuiter pousser cette version modifiée de l'historique vers la branche `ajout-de-telle-fonctionalite` distante (en mode forcé car on change l'historique et que cela peut être dangereux suivant la branche où on le fait, cf. liens de discussions). ``` git push -f ``` L'autre option est de merger le contenu de `develop` dans `ajout-de-telle-fonctionalite`. (À nouveau, il y aura peut-être des conflits à corriger, la commande nous dit alors de faire des `git add` et `git merge --continue` une fois les conflits résolus.) ``` git merge develop ``` Il faut ensuite pousser notre merge vers le serveur distant (pas besoin du mode forcé dans ce cas) : ``` git push ``` Cela va créer un commit consacré au merge. Contrairement à la méthode du rebase, qui ne va pas créer de commit supplémentaire. Maintenant que notre branche est à jour avec `develop` et qu'elle n'a pas de conflit, on peut aller sur l'interface de Gitlab/Github pour faire une demande de merge/pull request depuis `ajout-de-telle-fonctionalite` vers `develop`. Cela va nous indiquer toutes les modifications faites dans `ajout-de-telle-fonctionalite` par rapport à `develop`, quelqu'un d'autre peut ainsi vérifier le code avant de l'accepter dans la branche `develop` qui sert de base de travail commune à tout le monde. Une fois notre branche `ajout-de-telle-fonctionalite` acceptée et mergée dans develop il ne nous reste plus qu'à la supprimer, pour ça on retourne sur `develop` sur laquelle on récupère les modifications qui ont été ajoutée suite à notre merge/pull request, et on supprime la branche `ajout-de-telle-fonctionalite` qui ne nous servira plus. ``` git checkout develop git pull git branch -d ajout-de-telle-fonctionalite ``` Et voilà ! :)