Pour la formation avancée : FormationGitAdvanced
- Synopsis
Formation git débutant. Après cette formation, l'utilisateur saura comment utiliser git sur koumbit, particulièrement avec Redmine. Ce cours, ou du moins les connaissances ici, sont nécessaires pour suivre la FormationGitAvancée.
- Auditoire
- Débutants git, intégrateurs, graphistes, développeurs ne connaissant pas git du tout
- Formateurs
- Public
- externe
Plan de cours
Contents
Introduction
Systèmes de contrôle de versions (VCS)
- pourquoi: garder l'historique, collaborer, corriger les erreurs, revenir en arrière
- concepts de base:
- Dépôt: où l'historique est conservée
- Répertoire de travail: les fichiers qu'on modifie
- Commit: un ensemble de modifications aux fichiers, stockés dans le dépôt
- Historique: liste des commits
- Branches? plusieurs historiques! (non-couvert dans la formation de base)
... distribués? (DVCS)
- git vs SVN
- dépôt local
- pas important: on utilise git comme un système centralisé
Présentation de git
- Git, créé par Linus Torvalds pour le kernel Linux
- Git, parce que:
- Bitkeeper, logiciel propriétaire, embêtait les développeurs
- Les patches s'échangent beaucoup par courriel
- Le "Linux officiel" est simplement le dépôt de Linus
- Les grandes forces de git:
- rapide
- gestion des branches facile
- complètement décentralisé
- Les faiblesses de git:
- un peu plus difficile que d'autres VCS (e.g. subversion, mercurial sont plus faciles) - bien que ça s'améliore beaucoup
- DVCS difficile pour les gens non-familiers avec un VCS au départ
Workflow de base et architecture
Les bases
Installation de git
Linux:
Debian/Ubuntu, ligne de commande: apt-get install git
- Interfaces graphiques:
rabbit vcs s'intègre bien avec Nautilus et peut aussi supporter d'autres outils de contrôle de version
gitk - navigateur d'historique
gitg - comme gitk mais peut aussi faire des commits
Git cola - bon navigateur et pour "commit/push"
- Interfaces console:
tig - interface très rapide et puissante pour accélerer l'utilisation de git
Windows:
Instllation standard - ligne de commande
- Interfaces graphiques:
TortoiseGit - Windows explorer integration
Git Extensions - plugin Visual Studio et Windows Explorer
Git cola - bon navigateur et pour "commit/push"
Smart Git - support rebase, non-libre
OSX:
Installation standard - ligne de commande
- Interfaces graphiques:
Web:
- gitweb
- github
- redmine
Utilisation de Drupal.org
- Créer un compte sur Drupal.org: choisir un nom d'utilisateur et courriel, attendre courriel pour validation
- Authentification SSH: générer une clef SSH, avec la commande:
ssh-keygen
- Envoyer la clef dans vos préférences sur Drupal.org
- Choisir son courriel sur Drupal.org
- Configurer son identité:
git config --global user.name "Mon Nom" git config --global user.email moi@moi.ca
Créer un nouveau dépôt et premiers commits
- créer un dépôt local:
mkdir foo cd foo git init
- ajouter des fichiers:
edit README.txt # enregistrer... git add README.txt git commit -m"ajouter le README"
- réviser ses changements:
git log
- décrire ce qu'on voit dans git log: date, hash, auteur, commitlog
Voir la page GoodCommit pour plus d'informations sur un bon commitlog.
Utiliser un dépôt distant
- créer un dépôt sur Drupal.org
- ajouter le dépôt comme "remote":
git remote add origin <url>
- envoyer ses changements:
git push -u origin master
Workflow normal
Utiliser cette recette à répétition:
git pull edit fichier.txt git diff git add fichier.txt git commit fichier.txt git push
pull: on va chercher les derniers changements des autres
edit: on édit le fichier avec son éditeur de texte favori (vi, emacs, gedit, nano, etc)
diff: on voit ce qu'on a modifié après l'édition
add: on ajoute le fichier au commit à venir
commit: on commit
- répéter 2 à 5, jusqu'à la fin de la journée ou qu'on soit satisfait/complet
push: on envoie les changements de la journée - si ça échoue, refaire un pull
Autres commandes utiles
Revenir en arrière
- renverser un commit existant:
git revert
- voir la version précédente d'un fichier:
git checkout <rev> <file>
- ... et y revenir:
git commit
Collaborer avec les "patch" (rustines)
générer une patch sur drupal.org:
git diff origin > issue_1234.patch
- voir les patches dans l'historique:
git log -p
- appliquer une patch:
git apply nomdu.patch git commit
Inspecter le dépôt et notre espace de travail
- état de notre répertoire de travail:
git status
- voir le dernier commit:
git show
- voir un commit en particulier:
git show <hash>
Sommaires des commandes git présentées
init - créer un nouveau dépôt local
diff - voir les modifications
add - ajouter des fichiers au dépôt
commit - enregistrer les changements
remote add origin - ajouter un dépôt distant
push origin master - pousser les modifications sur le dépôt distant
pull - reprendre et fusionner les modifications du dépôt distant
clone - cloner un dépôt distant dans un nouveau dépôt
log -p - lister les changements au dépôt, incluant les modifications
push - pousser les changements au dépôt
revert - renverser des modifications
checkout <rev> <file> - aller chercher la version antérieure d'un fichier
diff origin - faire une patch
apply patch - appliquer une patch
show - voir un commit (par défaut le dernier)
status - voir l'état de notre espace de travail
Plus d'information sur git
Nous n'avons touché qu'à la surface de git. Git nous permet de faire beaucoup plus, notamment pour la création et la manipulation de versions, de branches et de patchs; la fusion (merge) du code; et la gestion des conflits éventuels causés par ces fusions. Il y a beaucoup plus à apprendre!