Taille: 3903
Commentaire:
|
Taille: 6018
Commentaire:
|
Texte supprimé. | Texte ajouté. |
Ligne 79: | Ligne 79: |
* Récupérer localement un dépôt git existant sur serveur (pas encore récupéré) | * Initialiser un dépôt git sur le serveur ('''pas fait dans l'atelier''') * configurer en local l'URL où sera le dépôt sur serveur {{{ git config remote.origin.url ssh://gitosis@git.auf/atelier }}} * pousser sur le serveur son code local {{{ git push origin master }}} * Récupérer localement un dépôt git existant sur serveur (qui n'a pas encore été récupéré) |
Ligne 83: | Ligne 92: |
* Initialiser un dépôt git (pas fait dans l'atelier) * git config * git push |
|
Ligne 89: | Ligne 95: |
* Éditer l'arborescence du projet * vérifier l'état du dépôt local {{{ |
* vérifier l'état du dépôt local {{{ |
Ligne 94: | Ligne 99: |
* ajouter les fichiers et répertoires à l'index de git {{{ |
* tirer en local la dernière version du serveur {{{ git pull }}} * éditer l'arborescence du projet * au besoin, ajouter les fichiers et répertoires à l'index de git {{{ |
Ligne 98: | Ligne 108: |
* supprimer des fichiers ou répertoires de l'index {{{ |
* au besoin, supprimer des fichiers ou répertoires de l'index de git {{{ |
Ligne 102: | Ligne 112: |
* git commit * git pull * git push |
* engager ses changements {{{ git commit -a -m "message significatif de commit" }}} * s'assurer d'avoir la dernière version avant de pousser {{{ git pull }}} * pousser sa nouvelle version locale sur le serveur {{{ git push }}} == EXERCICE TRAVAIL COLLABORATIF == |
Ligne 108: | Ligne 129: |
Des branches pour faire évoluer le code en parallèle... Ex.: pour expérimenter (nouvelle fonctionnalité) ou gérer différents degrés de maturé du code (workflow de développement) * Lister les branches ''Branche en cours = précédée d'astérisque'' * locales {{{ git branch }}} * distantes (remotes) {{{ git branch -r }}} * toutes (all) {{{ git branch -a }}} |
|
Ligne 109: | Ligne 148: |
* git branch * créer en local à partir du serveur * git branch -t |
* créer branche neuve à partir du commit en cours {{{ git branch mabranchelocale }}} * créer branche en local à partir du serveur {{{ git branch mabranchelocale -t labrancheserveur }}} |
Ligne 113: | Ligne 157: |
* git push | {{{ git push origin labrancheserveur }}} |
Ligne 115: | Ligne 161: |
* git checkout | {{{ git checkout verscetteautrebranche }}} ''Se lit: "Je fais le checkout de la branche en cours pour aller vers cette autre branche"'' |
Ligne 117: | Ligne 166: |
* git merge | {{{ git merge cetteautrebrancheici }}} ''Se lit: "Je fusionne ici la branche en cours avec cette autre branche"'' * Fusion pas symétrique : ''(branche1) git merge branche2 '''≠''' (branche2) git merge branche1'' |
Ligne 120: | Ligne 174: |
* git branch | {{{ git branch -d mabranchelocale }}} |
Ligne 122: | Ligne 178: |
* git push | {{{ git push :labrancheserveur }}} == EXERCICE BRANCHES == * Vérifier qu'aucune branche n'existe sur le serveur nommée avec votre prénom * Créer une branche locale perso nommée avec votre prénom (ou autre si existe déjà) : ex.: thomas * Mettre cette nouvelle branche sur le serveur * Attendre les instructions du ''release manager'' (ici = présentateur) pour fusionner la branche master à jour dans sa branche perso * Mettre à jour sa branche perso sur le serveur * Copier en local la branche d'un collègue * Fusionner la branche du collègue avec la vôtre * Mettre à jour sa branche perso sur le serveur |
Git : versionner ses sources
Sommaire
INTRODUCTION
- Objectifs :
- connaître les commandes de base pour participer à un projet AUF
- Environnement technique :
- git-core
- gitk
- Pourquoi versionner?
- historique : voir versions passées
- expérimentation : explorer une nouvelle version possible
- travail collaboratif : travail sur versions en parallèle (en local, sur branches...) puis fusion des versions
- Pourquoi Git?
- nouvelle génération
- distribué (local, hors-ligne)
VERSIONNER EN LOCAL
- Initialiser un dépôt git
- créer un répertoire en local et s'y déplacer
mkdir atelier cd atelier
- initialiser un dépôt vierge
git init
- .git créé = tout le dépôt en local
- vérifier l'état du dépôt
git status
créer du contenu (un répertoire et un fichier) sous atelier
- créer le fichier caché commandant à git d'ignorer certains fichiers ou répertoires
.gitignore : suivre le modèle
- ajouter les fichiers et répertoires à l'index de git
git add .
- créer un répertoire en local et s'y déplacer
- Amorcer le suivi
- engager ses changements
git commit -a -m "message de commit"
- vérifier le journal des commits
git log
- vérifier l'historique des versions (commits)
gitk
- engager ses changements
INTERFACE WEB DU SERVEUR
- projets
- shortlog
- liste de commits
- tag master = head master
- commit
- hash identifiant commit et son parent
- diff, blob, (blame), history (+ diff to current)
- commitdiff
- tree : l'arborescence des sources (web)
- snapshot : les sources (téléchargement)
- heads (= branches)
VERSIONNER SUR SERVEUR
Initialiser un dépôt git sur le serveur (pas fait dans l'atelier)
- configurer en local l'URL où sera le dépôt sur serveur
git config remote.origin.url ssh://gitosis@git.auf/atelier
- pousser sur le serveur son code local
git push origin master
- configurer en local l'URL où sera le dépôt sur serveur
- Récupérer localement un dépôt git existant sur serveur (qui n'a pas encore été récupéré)
git clone ssh://gitosis@git.auf/espace-formation
PROCESSUS DE VERSIONNAGE
- vérifier l'état du dépôt local
git status
- tirer en local la dernière version du serveur
git pull
- éditer l'arborescence du projet
- au besoin, ajouter les fichiers et répertoires à l'index de git
git add .
- au besoin, supprimer des fichiers ou répertoires de l'index de git
git rm nom_fichier
- engager ses changements
git commit -a -m "message significatif de commit"
- s'assurer d'avoir la dernière version avant de pousser
git pull
- pousser sa nouvelle version locale sur le serveur
git push
EXERCICE TRAVAIL COLLABORATIF
BRANCHES
Des branches pour faire évoluer le code en parallèle...
Ex.: pour expérimenter (nouvelle fonctionnalité) ou gérer différents degrés de maturé du code (workflow de développement)
- Lister les branches
Branche en cours = précédée d'astérisque
- locales
git branch
- distantes (remotes)
git branch -r
- toutes (all)
git branch -a
- locales
- Créer en local
- créer branche neuve à partir du commit en cours
git branch mabranchelocale
- créer branche en local à partir du serveur
git branch mabranchelocale -t labrancheserveur
- créer branche neuve à partir du commit en cours
- Créer sur serveur
git push origin labrancheserveur
- Changer de branche
git checkout verscetteautrebranche
Se lit: "Je fais le checkout de la branche en cours pour aller vers cette autre branche"
- Fusionner les branches
git merge cetteautrebrancheici
Se lit: "Je fusionne ici la branche en cours avec cette autre branche"
- Fusion pas symétrique :
(branche1) git merge branche2 ≠ (branche2) git merge branche1
- Fusion pas symétrique :
- Conflits
- Supprimer en local
git branch -d mabranchelocale
- Supprimer sur serveur
git push :labrancheserveur
EXERCICE BRANCHES
- Vérifier qu'aucune branche n'existe sur le serveur nommée avec votre prénom
- Créer une branche locale perso nommée avec votre prénom (ou autre si existe déjà) : ex.: thomas
- Mettre cette nouvelle branche sur le serveur
Attendre les instructions du release manager (ici = présentateur) pour fusionner la branche master à jour dans sa branche perso
- Mettre à jour sa branche perso sur le serveur
- Copier en local la branche d'un collègue
- Fusionner la branche du collègue avec la vôtre
- Mettre à jour sa branche perso sur le serveur
WORKFLOW DE DÉVELOPPEMENT
- Développement (branch dev, environnement DEV)
- développement dans environnement DEV (local)
branche dev : code stable développé
- validation informatique du release
- Tests (branch test, environnement TEST)
- merge de branche dev dans la branch test
branche test : code stable à tester par responsables métier
- déploiement dans environnement de TEST (serveur, identique à PROD)
- validation métier du release
- Production (branch master, environnement PROD)
- merge de branch test dans la branch master
branch master : code stable validé
- déploiement dans environnement de PROD
- utilisation par utilisateurs finaux
CONCLUSION
- Tout projet doit être versionné sur le dépôt central (privé ou public)
- Aller plus loin :
- Participer aux projets
Explorer au besoin le Site officiel, notamment sa documentation