Feature branches en ligne de commande

La plupart des entreprises utilisent Git pour développer et des « features branches » pour intégrer les nouveaux développements ou les corrections de bugs sur la branche principale, le « master ».

Donc, si comme moi vous utilisez Git et GitLab professionnellement ou pour des projets personnels, vous faites tout cela de l’une des deux façons suivantes:

  • Avec l’interface graphique de GitLab et les possibilités d’IntellJ IDEA
  • En ligne de commande avec les commandes git

On va donc voir dans ce billet comment on peut procéder avec la deuxième façon de faire: la ligne de commande.

1. Un project existant

On va supposer que notre projet de développement existe sur GitLab et qu’on peut le cloner par exemple:

git clone git@framagit.org:grumpyf0x48/my-software.git

2. La branche master

D’un qu’un premier commit a été effectué sur la branche principale, « master », on peut voir les branches existantes avec:

$ git branch --all --list
* master
  remotes/origin/master

3. Créer une branche

Maintenant, on souhaite développer une fonctionnalité « myfeature » et on va donc créer une branche du même nom.

On peut le faire de deux façons.

En deux commandes

On crée la branche puis on se positionne dessus:

$ git branch myfeature
$ git checkout myfeature

En une commande

$ git checkout -b myfeature

4. Implémenter la fonctionnalité

Par la suite, on va modifier et/ou ajouter des fichiers et faire un certain nombre de commits.

5. Valider la fonctionnalité

Une fois qu’on a terminé, on va valider nos modifications par un push sur le serveur:

$  git push
fatal: La branche courante myfeature n'a pas de branche amont.
Pour pousser la branche courante et définir la distante comme amont, utilisez

    git push --set-upstream origin myfeature

Et là, on se fait jeter ! Ce qui est normal puisque notre nouvelle branche n’existe pour l’instant que localement.

Heureusement, git nous donne la commande à passer:

$ git push --set-upstream origin myfeature
Décompte des objets: 3, fait.
Delta compression using up to 8 threads.
Compression des objets: 100% (3/3), fait.
Écriture des objets: 100% (3/3), 371 bytes | 0 bytes/s, fait.
Total 3 (delta 0), reused 0 (delta 0)
remote: 
remote: To create a merge request for myfeature, visit:
remote:   https://framagit.org/grumpyf0x48/my-software/-/merge_requests/new?merge_request%5Bsource_branch%5D=myfeature
remote: 
To git@framagit.org:grumpyf0x48/my-software.git
 * [new branch]      myfeature -> myfeature
La branche myfeature est paramétrée pour suivre la branche distante myfeature depuis origin.

On peut aussi utiliser:

$ git push -u origin myfeature

6. Créer une merge request

Ce qui est bien, c’est que le serveur GitLab nous propose d’emblée un lien pour créer une merge request à partir de nos modifications !

Nous n’avons plus qu’a lancer:

$ firefox https://framagit.org/grumpyf0x48/my-software/-/merge_requests/new?merge_request%5Bsource_branch%5D=myfeature &

7. Conclusion

Si vous souhaitez créer une branche et qu’elle soit visible sur GitLab sans aller sur l’interface graphique de ce dernier, il vous suffit de passer les deux commandes suivantes:

$ git checkout -b myfeature
$ git push -u origin myfeature