{{tag>dev git worflow}} :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 ===== - On modifie le projet dans le working directory ; - 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** ; - On vérifie le contenu de l'index avec **%%git status%%** et **%%git diff --staged%%** ; - 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 ===== * https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Les-branches-distantes * [[https://delicious-insights.com/fr/articles-et-tutos/git-zones/|Présentation des zones]]