Exercices git/github
Installation
- Pour linux, rien à faire :)
- Pour windows, vous pouvez installer tout simplement ici : https://gitforwindows.org/
Configurer votre compte :
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
Exercice 1 : commandes de base en local
1) Créer un repository (en local)
cd desktop
git init demo
cd demo
ls -al
remarque : ls -al
est la commande linux pour lister le contenu du répertoire. Pour windows, on peut utiliser dir
git init
va créer un répertoire nommé demo. Ce répertoire contient un répertoire caché nommé .git et qui contiendra l’historique local des versions.
2) Créer un fichier
touch readme.md
git status
git add readme.md
git status
git commit -m 'ajoute le fichier readme'
git log
Créer le fichier avec la commande linux touch, cela ne modifie rien au git status, il faut utiliser git add.
git status
indique l’ensemble des différences avec HEADgit log
liste l’ensemble des commits réalisés
3) Réaliser d’autres commits
Ouvrir le fichier readme.md et le modifier en ajoutant le titre du projet, puis sauver.
git status
git add readme.md
git status
git commit -m 'ajout du titre du projet'
git status
Il faut ajouter les fichiers impactés à chaque modification avant de commiter. Chaque commit devrait être unitaire et impacter un changement précis.
Ou encore
git commit -a -m 'ajout du titre du projet'
L’option -a permet d’ajouter au stage tous les fichiers qui ont déjà été ajoutés précédemment et qui ont été modifiés ou supprimés, mais pas les fichiers qui n’ont jamais été ajoutés.
4) Revenir à un état antérieur
Dans le git log, regarder les 4 premiers caractères du commit auquel vous souhaitez accéder.
Entrer la commande suivante :
git reset --hard c60c
Cette commande va effacer toutes les modifications faites après le commit dont le numéro commence par c60c.
Plus de détail ici : stackoverflow -> how to revert a git repository to a previous commit
Exercice 2 : placer un repo sur github
Nous allons partir du repo local précédent et souhaitons que les commits soient enregistrés sur une machine distante. Celle-ci sera vue comme un remote
.
1) Créer un repo sur github du même nom que celui de l’exercice 1
2) On va ajouter dans notre repo local une référence au repo distant. On l’appelera origin.
git remote add origin (repo location)
git remote -v
tree .git/refs
L’emplacement du repo est qqch comme :
https://github.com/jtobelem/demo.git
. On peut consulter la liste des remote associés à notre repo avec -v.
tree .git/refs
Sous linux, on peut visualiser les remote avec la commande tree
3) Pusher une première modification sur le repo distant
git push -u origin master
-u est un raccourci pour –set-upstream, donc les prochaines fois, on pourra juste faire git push
4) Modifier le readme sur l’interface distante (donc sur github). Récupérer les modifications distantes non encore présente en local.
git fetch
git diff master origin/master
git merge
La commande git diff permet de comparer la branche locale master avec la branche master du remote origin
fetch permet récupérer les modifications distantes. On peut ensuite les intégrer avec la commande merge. fetch + merge = pull
5) Modifier à nouveau le readme sur l’interface distante en ajoutant ‘remote’ sur la dernière ligne ET en local en ajoutant ‘local’ sur la dernière ligne. Tentez un pull.. Réglez les conflits.
git config --global core.editor "atom --wait"
C’est assez pratique de configurer un editeur à utiliser avec git en cas de conflit. On peut le faire avec la commande précédente. Plus de détails sur la résolution de conflits : stackoverflow -> how to resolve merge conflicts
Utiliser git avec un ide
Un repo est un dossier qui contient un dossier caché nommé .git. Ce dossier contient l’historique des versions de vos fichiers.
Pour que votre ide puisse gérer les fonctions de git, il faut ajouter le repo (donc qui contient le .git). L’ide verra alors naturellement les fichiers qui ont été ajoutés, modifiés ou supprimés et vous proposera de les synchroniser avec votre repo distant (sur github ou gitlab généralement).
Utiliser git sans générer de conflit
Pour commencer avec git, nous allons faire en sorte de ne jamais générer de conflit (plus tard, vous n’aurez plus peur d’aller au “front”, et au “back” aussi d’ailleurs ^^). Pour cela, si vous travaillez en équipe (sinon, il ne risque pas d’y avoir de conflit), nommez une des personne gitmaster. C’est cette personne uniquement qui fera des push. Si vous avez des modifs à faire, il faudra lui envoyer vos fichiers modifiés.
Vous devrez aussi avoir une 2e version du repo dans laquelle vous ne faites que des pull. Si vous ne voulez pas avoir de conflit, ne faites pas de pull dans un repo que vous avez modifié.
Et maintenant, en équipe
Créez quatre équipes.
- nommez un git master
- choisissez un nom pour votre projet et créez ce projet sur github avec un readme.md vide
- chaque personne de l’équipe va sur son ordinateur dans un dossier de travail. On utilise ensuite
git clone
pour faire une copie locale du repo distant
Ensuite chacun son tour :
- ajoute une rubrique dans le readme.md avec un titre, un texte, une image et un morceau de code.
- envoie les modifs tour au git master
Après chaque modif :
- le git master averti toute l’équipe qu’il y a un pull en attente
- chaque membre de l’équipe fait un pull
Plus de détail sur le markdown : https://about.gitlab.com/handbook/product/technical-writing/markdown-guide/