|<- [[Enabling collaboration]]|[[Setting up aliases for common commands]] ->| === user a (1) === // sur un dépôt existant, local // si l'on est pas sur la branch master, on s'y place : git checkout master // on met à jour la branche origin/master // (qui est une représentation locale de l'état d'un dépôt distant, // ici unique donc pas d'options particulières) git fetch // on va maintenant merger ce qui a été fetché dans notre master git merge origin/master // à ce stade on est sync // on va maintenant créer une branche pour notre nouvelle feature git checkout -b ma_feature // ici on fait nos modifs, nos add // et on commit git commit -m "mon commit" // on fetch histoire de voir où on en est par rapport au dépôt distant // et avant de pouvoir faire un push git fetch // on push notre branche, en créant un lien tracking // afin que lorsque par la suite on rebossera sur notre branche // le lien soit présent et qu'on puisse juste faire push // sans préciser la cible. git push -u origin ma_feature === user b === Cet ensemble intervient APRÈS les actions de user a. User b veut voir le travail d'user a. // on se place sur la bonne branche si besoin, après un git clone si nécessaire git checkout master // fetch pour pouvoir voir les modifs d'user a sur le repo distant git fetch // on merge, bonne pratique, histoire d'avoir sa branche master à jour git merge origin/master // on passe sur la branche ma_feature : en fait on créé la branche à partir // de la copie du repo distant qu'on vient de sync git checkout -b ma_feature origin/ma_feature git log git show // tambouille // commit git commit -am "add + commit" git fetch git push === user a (2) === git fetch // on jette un œil avant merge // l'option -p (patch) va montrer toutes les entrées log // avec un diff de tous les changements fait pour cette entrée // ici depuis le pointeur de la version locale de la branche ma_feature avant merge, // jusqu'au pointeur de origin/ma_feature (ici les mofis d'user b) git log -p ma_feature..origin/ma_feature // merge git merge origin/feedback_form // si merge fast-forward ok // si on avait fait des modifs depuis, // une fois le merge fait, on peut faire un push // ici on va juste considérer la feature fini et la merger dans master // on se place donc sur master git checkout master // on fetch git fetch // on merge si nouveautées fetchées git merge origin/master // on merge ma_feature dans master git merge ma_feature // on push git push