Table des matières

, ,

:TODO_DOCUPDATE:

Workflow avec git

Création du dépôt nu

Créer un dépôt nu sur le serveur, le dossier mon-projet.git conteneur du projet sera créé automatiquement après validation de la commande suivante:

$ git init --bare mon-projet.git

Clonage

pour pouvoir accéder au dépôt l'utilisateur doit avoir un compte sur le serveur et les droits de lecture/écriture sur le dépôt. On utilise ici le protocole ssh pour cloner le dépot du serveur sur la machine de dev.

$ git clone user@server:port/path/to/repo

Import initial

Configurer les préférences git sur la machine de dev (nom utilisateur, signature). Créer le squelette du projet. Pour procéder au premier commit:

# Placer l'ensemble des fichiers dans l'index
$ git add --all
 
# Faire le premier commit avec signature
$ git commit -S
 
# Pousser les modifications sur le serveur distant
$ git push origin master

Créer une version : Commiter

  1. On modifie le projet dans le working directory ;
  2. On regroupe dans la zone d'index (staging area) les modifications que l'on souhaite retenir pour la prochaine révision git add ou git add --patch, git mv ou git rm ;
  3. On vérifie le contenu de l'index avec git status et git diff --staged ;
  4. On commit avec git commit: le contenu de la zone d'index est alors enregistré dans le dépôt Git (local repository), une nouvelle révision est créée.

Branches

Conserve des versions fonctionnelles du projet sur la branche master. Pour développer une nouvelle fonctionnalité, créer une branche expérimentale et développer dans la branche.

$ git checkout -b experimental

Récupérer les modification effectuées par

$ git fetch

Par défaut les branches locales ne sont pas poussées sur le serveur distant. Pour partager une branche locale, il faut le faire explicitement:

$ git push origin master

La commande précédente pousse les modifications apportées sur la branche master locale vers la branche origin/master

Pour partager une branche créée localement

git push origin ma-branche

Une fois le programme fonctionnel dans la branche expérimentale, on peut procéder à la fusion (merge) sur la branche master.

Merge

Lors de la fusion bien penser à ne pas utiliser le fast forward (comportement par défaut) en spécifiant l'argument --no-ff

 

Références