Auteur : Renaud BURCK
- Formation Git pour le groupe projet numériques
- Sommaire
- Petite introduction sur la session
- Git
- Gitlab / Github :
- A traiter plus tard
- Crédits
- L'ensemble de la démonstration est basée sur les lignes de commandes Git
- Il y a des exercices à faire au cours de la session. Quand vous avez fini, mettre "nom_exercice plateforme fini" dans le chat ( ex : git_pull github fini)
-
Un gestionnaire de version
Ce qui veut dire que l'on peut garder la chronologie des modifications
-
Décentralisé
On a tous une copie du dépôt et on peut continuer à enregistrer ses modifications hors connexion
On peut aussi les partager avec les autres directement sans passer par le dépôt distant
L'intérêt de Git couplé à Gitlab pour notre groupe
- Partager son code source avec les autres membres de l'équipe
- Pouvoir faire tourner des scripts de tests automatique après avoir poussé chaque modification
- Rédiger un article scientifique en enregistrant les modifications au fur et à mesure
- Sauver votre travail en cas de feu
Git fonctionne avec les fichiers binaires de grande taille mais il vaut mieux travailler avec des fichiers textes.
Il faut télécharger l'installeur sur https://git-scm.com/download/win et faire Suivant à chaque page
On prend son gestionnaire de paquet préféré et on choisit le paquet git ! Au cas où Lien Unix
- Configuration de votre identité
- git config --global user.name "John Doe"
- git config --global user.email [email protected]
- Configuration du proxy
- git config --global http.proxy http://direct.proxy.i2:8080 // Si vous êtes au bureau
- git config --global --unset http.proxy // Si vous êtes à la maison
Dans ce répertoire, les fichiers seront éditables
cd mon/repertoire/à/suivre
git init .
Si vous voulez faire un répertoire qui sera partagé et sur lequel vous allez faire des opérations de type "push
Les fichiers ne pourront pas être édités. Cela sert principalement si vous voulez créer un dépôt distant centralisé.
cd mon/repertoire/à/suivre
git init --bare .
Les deux commandes vont créer un répertoire nommé '.git'. C'est le répertoire qui va stocker quasiment tout ce que Git stocke et manipule.
cd mon/repertoire/ou/mettre/les/fichiers
git clone adresse_du_dépôt
Un sous-répertoire va être créé avec le nom court du dépôt et il contiendra tous les fichiers clonés ainsi que le répertoire .git
- Cloner le dépot de la formation avec l'adresse 2 si vous avez un compte sinon sur l'adresse 1
- adresse 1 : https://github.com/RenaudBCEREMA/gpn-gitlearn
- adresse 2 : Gitlab CEREMA A FAIRE !!!!!!!!!!!!!!!!!!!!!!!!!
Les branches sont un moyen efficaces de faire des modifications sur des fichiers sans casser le fonctionnement principal de notre application
# dans le répertoire du projet git
## lister les branches
git branch # rajouter -v si vous voulez le texte du dernier commit sur la branche
# créer une branche
git checkout -b nom_de_ma_branche
# Supprimer une branche
git branch -d nom_de_la_branche_a_supprimer
Créer une branche à son nom depuis la branche dev
Non suivi : Le fichier est présent dans le répertoire mais n'est pas ajouté à l'index git. Non modifié : Le fichier est dans le répertoire et ajouté à l'index avec la commande git add. Si des changements ont été faits, ils n'ont pas été suivis. C'est aussi le statut des fichiers après un enregistrement dans le dépôt. Modified state : Le fichier suivi a été édité mais les changements n'ont pas été enregistrés dans le dépôt git. Staged state : Le fichier a été enregistré dans le dépôt git et est prêt à être envoyés sur le dépôt.
# création d'un fichier texte quelconque
touch text.txt
#Ajout du fichier à l'index
git add ./test.txt
#On regarde les modifications du dépôt le fichier est indiqué comme nouveau
git status
#Editer le fichier et ajouter du contenu
notepad ./test.txt
#On regarde les modifications du dépôt le fichier est indiqué comme nouveau et édité
git status
#Ajout des modifications à l'index
git add ./test.txt
# On enregistre les modifications dans le dépôt local
git commit -m "Ajout et édition du fichier test.txt"
#On regarde les modifications du dépôt le fichier n'est plus dans la liste
git status
Ajouter un fichier quelconque nommé mon_nom.txt à son dépôt Faire quelques modifications dans ce fichier et le "commité"
Plus sérieusement, je préconise des commits très réguliers ( dès qu'on a finit d'écrire sa fonction / son paragraphe par exemple) et des pushs quotidiennement
Cela permet d'avoir des commits qui ont un impact limité et sur lesquels on peut revenir rapidement. Cela force aussi à décrire ce que l'on fait très souvent et cela permet la compréhension du travail réalisé lors qu'une autre personne va relire votre description de commit. (NB c'est important et vous verrez pourquoi).
Les pushs quotidiens permettent de limiter le nombre d'envoi au dépôt distant et permettent par exemple de faire un cylce de travail en équipe du genre :
- le matin, je relis les commits de mes collègues pour voir si cela impacte mon code
- dans la journée, je fais mes modifications
- le soir je pousse mes modifications
# Pousser ses modifications
git push
# Si la branche n'existe pas sur le dépôt distant.
git push --set-upstream origin/nom_de_ma_branche
Pousser ses derniers commits sur le dépôt distant
Lorsque l'on collabore a plusieurs, il faut évidemment récupérer les modifications des autres
# Voir ce qui a été modifié
git fetch
git diff ..origin/nom_de_ma_branche
# Récupérer les changements
git pull
Récupérer les dernière modifications sur la branche dev distante et mettre à jour votre branche dev distante
Souvent au moment de push ses modifications, on se retrouve avec des conflits car des modifications ont été faites par les autres développeurs pendant que vous étiez en train de faire votre code. Il faut alors résoudre les conflits
Il existe plusieurs façons de faire. En voici une
# On met de côté ce que l'on a fait
git stash
# Récupérer les changements
git pull
# Ajouter ses changements
git stash apply
# Résoudire les conflits de merge
git mergetool
# Ajouter les fichiers corrigés
git add .
# Faire un commit de merge
git commit -m "Merge de la branche dev distante et de la branche dev local"
# On vide le stasg
git stash drop
# ON pousse tout cela
git push
Des modifications ont été faites sur votre branche personnelle sur le dépôt distant. Corrigez les !
- fusionner des branches
- blame
- cherry-pick
- partage sans dépôt distant
- CI/CD
- Les crédits pour les images sont inclus dans le fichier Markdown de source.
- Beaucoup de ressources sont extraites du livre "Pro Git" qui est mis à disposition sur Git SCM
- Article sur les statuts des fichiers dans Git