Outils pour utilisateurs

Outils du site


git-de-facon-collaborative

Description: ce document contient des instructions git en ligne de commande pour un travail collaboratif sur un dépôt commun, après avoir créé un dépôt distant, et après avoir générer le dépôt sur la machine locale et établit le pont entre les deux. Il est possible de reproduire les principes décrits, sans ligne de commande, en utilisant uniquement l'interface utilisateur web des services GIT distants (ithub, Gitlab, Gitea, Bitbucket, …). Il existe aussi d'autres façon d'utiliser GIT de façon collaborative.


Instructions GIT en ligne de commande recommandées pour un travail collaboratif via un dépôt GIT distant commun unique

Contexte: Un dépôt GIT distant commun est créé. Des personnes contribuent à plusieurs sur ce dépôt distant, en faisant des modifications sur leurs machines locales, et en établissant des ponts avec le dépôt distant, en ligne de commande.

Pré-requis:

  • Un dépôt GIT distant est créé
  • Les réglages de ce dépôt GIT distant sont réalisés (création des 2 branches éternelles, protégées, celle qui n'est pas “master” a le statut “par défaut”)
  • Les personnes qui contribuent à distance de façon participative collaborative au dépôt GIT distant depuis leur machine locale, savent utiliser les lignes de commandes de GIT sur leur machine locale.

Convention pour le nommage des branches

Nom des deux branches éternelles

  • `master` - doit être protégée sur le dépôt distant
  • `develop` - branche à créer sur le dépôt distant, lui donner le statut de “branche par défaut”, et la protéger sur le dépôt distant

Nota: la branche “develop” peut avoir un autre nom, celui que vous voulez. Dans ce cas, il faut adapter tout ce qui suit avec cet autre nom.

Nom des branches éphémères

Exemple de principe général pour les noms des branches éphémères:

  • “`NOM-CATEGORIE-DE-LA-BRANCHE`” (+) “`/`” (+) “`Nom-De-La-Branche`”

“`NOM-CATEGORIE-DE-LA-BRANCHE`” en majuscule dont les mots sont séparés par des tirets du 6 (“`-`”), suivi du séparateur “`/`”, suivi du “`Nom-De-La-Branche`” en minuscule dont les mots sont séparés par des tirets du 6 (“`-`”).

Exemple de 3 uniques catégories de branches éphémères:

  • PROPOSITIONS # branche éphémère pour proposer des améliorations
  • VERSIONNAGE # branche éphémère pour préparer une version
  • CORRECTIF # branche éphémère pour effectuer une correction sur une version

Exemple de noms de branches éphémères:

  • PROPOSITION/ma_jolie_proposition
  • VERSIONNAGE/3.0.beta.2
  • CORRECTIF/3.0.beta.3
  • PROJET/10_caracteristiques

Exemple de principe de numérotage des versions

  • [MAJEUR].[MINEUR].[CORRECTIF]-[phases].[Numéro de phase]
  • [MAJEUR]= 0 ⇒ pré-versions d'essais, de dev, de brouillon, etc …
  • [phases]: pre-alpha < alpha < beta < rc
  • Hiérarchie: 1.0.0-pre-alpha < 1.0.0-pre-alpha.1 < 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.

Enchaînement du workflow GIT en lignes de commandes

Rappel: l'enchaînement des commandes GIT ci-dessous, s'envisage lorsqu'un dépôt distant est ouvert, qu'il a été configuré de ses deux branches éternelles, et que plusieurs personnes effectuent un travail collaboratif via ce dépôt GIT distant à partir de leurs machines locales.

Mettre à jour le dépôt local

```

  git checkout master
  git pull origin master
  git status
  git checkout develop
  git pull origin develop
  git status

```

Créer une proposition

Prendre connaissance de la convention des noms des branches (ci-dessus). Puis:

```

  git checkout develop
  git branch -a
  git branch PROPOSITION/Nom-De-La-Proposition
  git checkout PROPOSITION/Nom-De-La-Proposition
  git push -u origin PROPOSITION/Nom-De-La-Proposition

```

Travaillez sur votre proposition

Produire le contenu de la proposition en local

Produisez vos contenus, ajoutez, supprimez, modifiez, etc …

Enregistrer les changements en local

```

  git checkout PROPOSITION/Nom-De-La-Proposition
  git add -A .
  git commit -m "commentaire descriptif"

```

Régulièrement, rembobiner

Attention: bien écrire la commande rebase en plaçant un “/” devant la branche concernée par le rembobinage. Sinon, vous aurez des erreurs. ```

  git checkout PROPOSITION/Nom-De-La-Proposition
  git fetch origin
  git rebase origin/master
  git rebase origin/develop
  git rebase origin/PROPOSITION/Nom-De-La-Proposition

``` Si conflits, résolvez !

Partager sur le site distant pour favoriser le travail collaboratif et obtenir des avis:

Plus c'est partagé tôt, mieux c'est ! Cela permet aux autres de savoir ce que vous faites. Cela peut leur donner des idées d'améliorations à partager avec vous.

```

  git checkout PROPOSITION/Nom-De-La-Proposition
  git push -u origin PROPOSITION/Nom-De-La-Proposition

```

Répéter autant de fois que nécessaire

Répétez les étapes du workflow de production de votre proposition, autant de fois que vous le souhaitez, tout au long de la progression de vos travaux de production.

Prépararer la fusion

Faire un dernier rembobinage:

Attention: bien écrire la commande rebase en plaçant un “/” devant la branche concernée par le rembobinage. Sinon, vous aurez des erreurs. ```

  git checkout PROPOSITION/Nom-De-La-Proposition
  git fetch origin
  git rebase origin/master
  git rebase origin/develop
  git rebase origin/PROPOSITION/Nom-De-La-Proposition

``` Si conflits, résolvez !

Demander une autorisation de fusion, une fois le travail accompli !

```

  git checkout PROPOSITION/Nom-De-La-Proposition
  git push -o merge_request.create -o merge_request.target=PROPOSITION/Nom-De-La-Proposition

```

Effectuer les modifications demandées

S'il vous est demandé de faire des modifications, re-travaillez votre proposition, effectuez les éventuelles modifications demandées, recommencez les étapes relatives à la production de la proposition, puis rembobinez, puis redemandez une autorisation de fusionner votre branche dans `develop`. Recommencez ces opérations tant que l'autorisation de fusion n'est pas obtenue. Une fois que tout va bien, passez à l'étape d'après.

Fusionner

une fois l'autorisation de fusion obtenue

A T T E N T I O N - D A N G E R !!!

Ne faites pas ce qui suit si vous avez l'intention de revenir sur votre branche pour continuer des travaux. Si vous voulez continuer à travailler sur votre branche, continuez à répéter les instructions précédentes. Sinon, vous allez au devant de grandes difficultés !!!

```

  git checkout PROPOSITION/Nom-De-La-Proposition
  git rebase -i develop
  git checkout develop
  git pull origin develop
  git merge --no-ff PROPOSITION/Nom-De-La-Proposition
  git push origin develop
  git branch -d PROPOSITION/Nom-De-La-Proposition
  git push origin --delete PROPOSITION/Nom-De-La-Proposition
  

```

Versionner

Choisir un numéro de version

Informez-vous sur la convention de numéros des versions - voir début de document.

Puis, regardez dans la liste des versions existantes: ```

  git checkout develop
  git tag

``` Décidez d'un nouveau numéro de version, arrivant à la suite des précédents selon la liste [NumVersion].

Repérer le numéro abbrégé du commit pour la version

```

  git checkout develop
  git log --abbrev-commit

``` Décidez du numéro de commit sur lequel versionner [NumCommit]

Procéder au versionnage

```

  git checkout develop
  git branch VERSIONNAGE/NumVersion NumCommit
  git checkout VERSIONNAGE/NumVersion
  git tag NumVersion
  git checkout develop
  git merge VERSIONNAGE/NumVersion
  git push --tags origin develop
  git branch -d VERSIONNAGE/NumVersion
  git checkout master
  git merge --f-only NumVersion

```

Corriger des versions publiées

Utilisez ces instructions de “correctifs”, uniquement pour appliquer des correctifs rapides à une version publiée (notion de rustine, de patch, de hot-fix). Si vous envisagez de produire d'importantes modifications, alors ce ne sont pas des correctifs, mains plutôt de nouveaux travaux de production d'une nouvelle version. Dans ce cas, il vous faut vous référer aux sections précédentes.

Déterminer correctement le numéro de correctif à appliquer

Repérez le numéro de la version sur laquelle vous allez opérer un correctif: ```

  git checkout master
  git tag

``` Le numéro de correctif [NumCorrectif], que vous allez appliquer, est le numéro de version à corriger augmenté d'un cran supérieur (exemple: 2.1.0 → 2.1.1; 0.1.pre-alpha.1 → 0.1.pre-alpha.2)

Créer la branche du correctif à produire

```

  git branch CORRECTIF/NumCorrectif master
  git checkout CORRECTIF/NumCorrectif

```

Appliquer le correctif

```

  git checkout CORRECTIF/NumCorrectif
  git tag NumCorrectif
  git checkout develop
  git merge CORRECTIF/NumCorrectif
  git push --tags origin develop
  git branch -d CORRECTIF/NumCorrectif
  git checkout master
  git merge --ff-only NumCorrectif
  

```

Voir aussi

Sources, inspirations, remerciements:

git-de-facon-collaborative.txt · Dernière modification: 2020/07/31 10:04 par Antoine C.