Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes | ||
outils:git [2020/07/25 16:43] – [3. Git en ligne de commandes : les bases] philippe | outils:git [2023/08/19 12:21] – [3.5 Faire un enregistrement du projet] phil | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | [[: | ||
+ | |||
+ | ===== Outils - Démarrer avec Git et Github ===== | ||
+ | {{ : | ||
+ | |||
+ | ** Rédacteur(s)** : Philippe Mariano | ||
+ | |||
+ | [Mise à jour le 18/8/2023] | ||
+ | |||
+ | * **Sources** | ||
+ | * Youtube : < | ||
+ | * Openclassrooms : < | ||
+ | * Documentation sur le site de Git : < | ||
+ | |||
+ | * **Ressources** | ||
+ | * < | ||
+ | * < | ||
+ | * "Une référence visuelle de Git" est disponible < | ||
+ | |||
+ | * **Commandes** utilisées dans la page | ||
+ | |||
+ | ^^^^^^^^ | ||
+ | | **config** | ||
+ | | **branch** | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== 1. Introduction ==== | ||
+ | === 1.1 La gestion de version === | ||
+ | * **Présentation** de la gestion de version sur < | ||
+ | |||
+ | {{ : | ||
+ | === 1.2 Git === | ||
+ | * **Présentation** \\ Git est un système de < | ||
+ | {{ : | ||
+ | |||
+ | * **Principe de fonctionnement** | ||
+ | * Tout **projet Git** se compose de trois éléments : un **dépôt Git**, une **zone d' | ||
+ | * **validé** : les données sont stockées dans la base de données local. | ||
+ | * **modifié** : le fichier a été modifié mais il n'est pas encore stocké. | ||
+ | * **indexé** : le fichier a été marqué pour être ajouté au prochain instantané du projet. | ||
+ | {{ : | ||
+ | |||
+ | ==== 2. Installation et paramétrage de Git ==== | ||
+ | === 2.1 Installation === | ||
+ | * **Sous Windows10** | ||
+ | * Télécharger le logiciel et suivre les instructions sur le site de < | ||
+ | * **Vérifier la version** | ||
+ | * Entrer la commande **cmd** dans la barre de recherche pour ouvrir une **invite de commandes** puis tester la version avec le code ci-dessous. | ||
+ | {{ : | ||
+ | |||
+ | <code bash> | ||
+ | git --version | ||
+ | # Exemple de résultat : "git version 2.25.1.windows.1" | ||
+ | </ | ||
+ | {{ : | ||
+ | * **Sous Linux** | ||
+ | |||
+ | > Git est packagé pour la plupart des distributions Linux, on vérifiera la version avant de faire une mise à jour avec les commandes suivantes. | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git --version | ||
+ | # Exemple de résultat sur un Raspberry Pi : git version 2.20.1 | ||
+ | sudo apt install git | ||
+ | # Exemple de résultat : git est déjà la version la plus récente (1: | ||
+ | </ | ||
+ | |||
+ | === 2.2 Paramétrages === | ||
+ | * **Paramétrage initial** à faire une seule fois après l' | ||
+ | * **Définir son identité** avec les commandes ci-dessous pour éviter de le faire à chaque modification. | ||
+ | |||
+ | <code bash> | ||
+ | git config --global user.name " | ||
+ | git config --global user.email " | ||
+ | </ | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== 3. Git en ligne de commandes : les bases ==== | ||
+ | * **Commandes utilisées** dans ce paragraphe | ||
+ | |||
+ | ^^^^^^^^ | ||
+ | | **add** | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | {{ : | ||
+ | === 3.1 Créer un répertoire de travail === | ||
+ | > Créer un répertoire //nom_rep// et placer un fichier // | ||
+ | |||
+ | // Exemple // : le fichier index.html est situé dans le répertoire testgit | ||
+ | |||
+ | === 3.2 Se placer dans le répertoire de travail avec la console Git === | ||
+ | * Faire un** clic-droit** dans le réperoire de travail et sélectionner {{: | ||
+ | |||
+ | // Exemple// {{ : | ||
+ | |||
+ | === 3.3 Initier un dépôt Git dans le répertoire de travail === | ||
+ | * On utilise la commande ci-dessous pour initier un dépôt Git dans le répertoire de travail c'est à dire indiquer à Git que nous voulons faire de la gestion de version dans ce répertoire. | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git init | ||
+ | </ | ||
+ | |||
+ | //Exemple// : dépôt Git vide ! | ||
+ | {{ : | ||
+ | |||
+ | === 3.4 Connaître le statut des fichiers dans Git === | ||
+ | * On doit régulièrement vérifier le statut des fichiers dans un dépôt Git (notamment pour savoir s'ils ont été modifiés ou non depuis le dernier commit). Pour cela, on utilise la commande ci-dessous : | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git status | ||
+ | </ | ||
+ | |||
+ | //Exemple// : avant d' | ||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
+ | === 3.5 Faire un enregistrement du projet === | ||
+ | * Pour faire un **enregistrement** d'un ou plusieurs fichiers dans Git, **deux étapes** sont nécessaires : | ||
+ | - **Sélectionner** le ou les fichiers à ajouter à la **zone de transit** (également appelée **zone d' | ||
+ | - **" | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git add nomfichiers | ||
+ | git commit -m "texte explicatif" | ||
+ | </ | ||
+ | |||
+ | // Exemple // : Après avoir écrit du code dans un fichier index.html, on l' | ||
+ | |||
+ | <callout type=" | ||
+ | <code bash *.bash> | ||
+ | # Pour ajouter tous les fichiers du répertoire de travail dans la zone d' | ||
+ | git add . | ||
+ | # -a demande à Git de mettre à jour les fichiers existants | ||
+ | # dans sa zone de transit(index) | ||
+ | git commit -am "texte explicatif" | ||
+ | # pour faire un commit sans être l' | ||
+ | git commit -am "texte explicatif" | ||
+ | # Pour modifier le message du dernier commit faire | ||
+ | git commit --amend -m " | ||
+ | # Pour modifier le nom de l' | ||
+ | git commit --amend --author " | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | // Résumé // | ||
+ | {{ : | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | === 3.6 Afficher l' | ||
+ | * On utilise la commande ci-dessous pour visualiser l' | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git log # affiche tous les commits | ||
+ | git log -2 # limite l' | ||
+ | git log -p -2 # comme ci-dessus et affiche les modifications | ||
+ | </ | ||
+ | |||
+ | // Exemple // : deux commits on été réalisés sur le fichier index, dans l' | ||
+ | |||
+ | === 3.7 Revenir sur un commit === | ||
+ | Il est possible de se positionner sur un commit antérieur pour par exemple trouver la source d'une erreur apparue dans le dernier commit. | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git checkout SHAduCommit # SHA (acronyme de Secure Hash Algorithm) est associé à plusieurs fonctions de hachage | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | //Exemple// : étant sur le dernier commit, on se positionne sur le premier. | ||
+ | {{ : | ||
+ | |||
+ | < | ||
+ | |||
+ | === 3.8 Annuler, modifier un commit === | ||
+ | * **Annuler** un commit | ||
+ | Il est possible de changer d'avis et d' | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git revert SHAduCommit # annulation du commit ayant pour identifiant SHAduCommit | ||
+ | git revert HEAD # annulation du dernier commit | ||
+ | </ | ||
+ | |||
+ | * **Annuler** tous les changements (possible avant d' | ||
+ | <code bash *.bash> | ||
+ | git reset --hard # à utiliser avec précaution | ||
+ | </ | ||
+ | |||
+ | === 3.9 Travailler avec des branches === | ||
+ | > Une branche est une copie du projet initial. Elle permet de diverger de la ligne principale (master) pour continuer à travailler sans impacter cette ligne (faire des essais, travailler à plusieurs, etc.). | ||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | * **Commandes utilisées** dans ce paragraphe | ||
+ | |||
+ | ^^^^ | ||
+ | | **branch** | ||
+ | |||
+ | * **Créer** une branche | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git branch nombranche # Exemple : git branch backgroundcolor | ||
+ | </ | ||
+ | |||
+ | * **Lister** les branches du dépôt | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git branch | ||
+ | </ | ||
+ | |||
+ | // Exemple // {{ : | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | * **Changer** de branche | ||
+ | <code bash *.bash> | ||
+ | git checkout nombranch # Exemple : git checkout backgroundcolor permet de passer sur la branche backgroundcolor | ||
+ | </ | ||
+ | // Exemple// | ||
+ | {{ : | ||
+ | |||
+ | * **Fusionner** des branches | ||
+ | * Pour **intégrer** les modifications faites sur une branche dérivée à la branche master : | ||
+ | - **Basculer** sur la branche **master** | ||
+ | - **Fusionner** master et la branche dérivée | ||
+ | - **Supprimer** la branche dérivée (facultatif) | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git checkout master # 1 | ||
+ | git merge nombranche # 2 | ||
+ | git branch -d nombranche # 3 | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | //Exemple// : un répertoire **style**, contenant un fichier **style.css** a été ajouté sur la branche backgroundcolor du projet testgit.{{ : | ||
+ | - On se place sur master et on fusionne la branche backgroundcolor avec la branche master.< | ||
+ | git checkout master | ||
+ | git merge backgroundcolor | ||
+ | </ | ||
+ | - On supprime la branche backgroundcolor | ||
+ | <code bash *.bash> | ||
+ | git branch -d backgroundcolor | ||
+ | </ | ||
+ | {{ : | ||
+ | |||
+ | * **Résoudre** un conflit : < | ||
+ | |||
+ | === 3.10 Supprimer un dépôt git === | ||
+ | Pour supprimer le dépôt git du répertoire de travail, il suffit de supprimer le répertoire caché **.git**. Sous W10, celui-ci est affiché en cochant //Eléments masqués// dans le menu // | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== 4. Plus loin avec Git ==== | ||
+ | |||
+ | === 4.1 Retrouver le nom de l' | ||
+ | * **Commandes utilisées** dans ce paragraphe | ||
+ | |||
+ | ^^^ | ||
+ | | **blame** | ||
+ | |||
+ | > **git blame** a pour fonction générale d' | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git blame nom_fichier | ||
+ | </ | ||
+ | |||
+ | // Exemple // : dans le fichier index.html toutes les modifications ont été faites par Philippe Mariano | ||
+ | {{ : | ||
+ | |||
+ | > **git show** est un utilitaire de ligne de commande utilisé pour afficher des détails supplémentaires sur les objets Git, comme les blobs, les arborescences, | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git show | ||
+ | </ | ||
+ | // Exemple // : on voit ci-dessous qu'un fichier style/ | ||
+ | {{ : | ||
+ | |||
+ | |||
+ | === 4.2 Ignorer des fichiers === | ||
+ | Créer un fichier **.gitignore** et y placer le nom de tous les fichiers qui ne doivent pas être indexés. Voir la < | ||
+ | |||
+ | === 4.3 Eviter des commits superflus === | ||
+ | Voir la < | ||
+ | |||
+ | ---- | ||
+ | ==== 5. Collaboration sur Github ==== | ||
+ | * **Source** | ||
+ | * Documentation sur le site de Git : < | ||
+ | {{ : | ||
+ | |||
+ | < | ||
+ | |||
+ | * **Commandes utilisées** dans ce paragraphe | ||
+ | |||
+ | ^^^^^ | ||
+ | | **clone** | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | === 5.1 Présentation === | ||
+ | < | ||
+ | * **Situation de départ** | ||
+ | * Les fichiers de l' | ||
+ | * Les futurs **collaborateurs** possèdent un **compte sur GitHub** ou peuvent en créer un et y accéder. | ||
+ | |||
+ | * L' | ||
+ | - Il crée un compte s'ils n'en dispose pas (**§5.2**) | ||
+ | - Il crée un dépôt vide sur Github (sans README) (**§5.3.1**) | ||
+ | - Il associe son dépôt local et le dépôt distant. (**§5.3.2**) | ||
+ | - Il transfére l' | ||
+ | - Il effectue des sauvegardes, | ||
+ | - Transférer ses modifications vers le dépôt distant. (**§5.5.1**) | ||
+ | - Mettant à jour son dépôt local à partir du dépôt distant. (**§5.5.2**) | ||
+ | - Il attribue les **droits d' | ||
+ | |||
+ | * Le **collaborateur** fait une copie du contenu du dépôt distant sur sa machine une fois le projet installé sur GitHub, pour cela : | ||
+ | - Il crée un compte s'il n'en dispose pas (**§5.2**) | ||
+ | - Il crée un répertoire sur sa machine. | ||
+ | - Il transforment son répertoire en un dépôt local avec la commande git init . | ||
+ | - Il clone le dépôt distant dans le dépôt local. (**§5.4**) | ||
+ | - Lorsqu' | ||
+ | - Transférer ses modifications vers le dépôt distant. (**§5.5.1**) | ||
+ | - Mettre à jour son dépôt local à partir du dépôt distant. (**§5.5.2**) | ||
+ | |||
+ | === 5.2 Créer un compte === | ||
+ | * Se rendre sur https:// | ||
+ | {{ : | ||
+ | |||
+ | === 5.3 Travail préalable de l' | ||
+ | |||
+ | {{ : | ||
+ | == 5.3.1 Créer un dépôt distant public sur GitHub == | ||
+ | * Sélectionner **+** dans l' | ||
+ | // Exemple // | ||
+ | {{ : | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | // Résultat // | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | == 5.3.2 Associer un dépôt distant avec un dépôt local == | ||
+ | > Il s'agit de créer un pont entre le dépôt distant (sur github) et le dépôt local (sur son poste) . Pour cela, on exécute la commande ci-dessous. | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git remote add origin [url_du_dépôt_créé_par_github] # Indique à Git d' | ||
+ | # distant et de lui associer l' | ||
+ | # origin est une convention de Git | ||
+ | </ | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | // | ||
+ | <code bash *.bash> | ||
+ | git remote add origin https:// | ||
+ | # relie test1 local à test1 sur GitHub | ||
+ | </ | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git remote # cette commande permet de vérifier l' | ||
+ | </ | ||
+ | {{ : | ||
+ | |||
+ | == 5.3.3 Transférer l' | ||
+ | * Pour transférer les fichiers de son projet sur github, on utilise la commande **git push -u**. | ||
+ | {{ : | ||
+ | |||
+ | //Exemple// | ||
+ | <code bash *.bash> | ||
+ | git push -u origin master | ||
+ | </ | ||
+ | {{ : | ||
+ | |||
+ | === 5.4 Travail préalable du collaborateur : cloner un dépôt distant === | ||
+ | > Il est possible de télécharger l' | ||
+ | Pour cela : | ||
+ | - **Créer** un répertoire (sur sa machine) et **initier** un dépôt Git local avec git init. voir (**§3.3**) | ||
+ | - Dans le dépôt local, **cloner** le dépôt distant en entrant :<code bash *.bash> | ||
+ | git clone [url_du_dépot_créé_par_github] | ||
+ | </ | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | //Exemple// | ||
+ | {{ : | ||
+ | |||
+ | |||
+ | === 5.5 Faire des sauvegardes, | ||
+ | |||
+ | == 5.5.1 Accéder à un dépôt distant == | ||
+ | > La commande **git remote** permet de créer, d' | ||
+ | {{ : | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git remote # Permet de répertorier les connexions distantes avec d' | ||
+ | git remote -v # Idem ci-dessus mais inclut l'URL de chaque connexion. | ||
+ | git remote add < | ||
+ | git remote rm < | ||
+ | </ | ||
+ | |||
+ | // Exemple // | ||
+ | <code bash *.bash> | ||
+ | git remote add origin https:// | ||
+ | git remote add local 192.168.1.6 # Création d'une connexion avec un serveur git sur un NAS local | ||
+ | # Le dépôt local est connectée à deux dépôts distants | ||
+ | </ | ||
+ | |||
+ | // Exemple // | ||
+ | {{ : | ||
+ | |||
+ | == 5.5.2 Mettre à jour son dépôt local à partir d'un dépôt distant. == | ||
+ | > La commande **git fetch** télécharge des commits, des fichiers et des refs d'un dépôt distant vers le dépôt local. Le fetch est l' | ||
+ | |||
+ | > La commande **git pull** est utilisée pour faire un fetch du contenu d'un dépôt distant pour le télécharger, | ||
+ | {{ : | ||
+ | |||
+ | // Exemple// | ||
+ | <code bash *.bash> | ||
+ | git pull origin master | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | < | ||
+ | |||
+ | == 5.5.3 Transférer ses modifications vers le dépôt distant == | ||
+ | Une fois que des modifications ont été faites, ajoutées à l' | ||
+ | |||
+ | > La commande **git push** est utilisée pour charger le contenu d'un dépôt local vers un dépôt distant. | ||
+ | |||
+ | <code bash *.bash> | ||
+ | git push origin master # pour transférer le contenu du dépôt local (origin) vers la branche Master (Github) | ||
+ | git push origin < | ||
+ | </ | ||
+ | |||
+ | === 5.6 Inviter des collaborateurs et attribuer des droits === | ||
+ | - Sélectionner **Setting** sur la page du dépôt.{{ : | ||
+ | - Sélectionner {{: | ||
+ | - Inviter un collaborateur {{: | ||
+ | - Entrer le nom du collaborateur {{ : | ||
+ | - La personne sélectionnée apparaît dans la liste des collaborateurs. Elle dispose maintenant du droit d' | ||
+ | |||
+ | === 5.7 Proposer des modifications (pull requests)=== | ||
+ | * Source : < | ||
+ | |||
+ | Pour proposer des modifications sur GitHub, il faut faire des **pull requests**. | ||
+ | - Faire un **fork** (copie du dépôt d'un projet existant sur GitHub vers son compte Github) | ||
+ | - Cloner le projet vers sa machine | ||
+ | - Consulter les conditions pour réaliser une pull request dans le readme du projet | ||
+ | - Faire une modification et la pousser sur GitHub | ||
+ | - Faire une pull request | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | ====6. En résumé ==== | ||
+ | * Pour faire de la gestion de versions **sur sa machine** | ||
+ | - Télécharger et installer < | ||
+ | - Initialiser Git dans son répertoire de travail avec un (**git init**) | ||
+ | - Suivre le cycle : modification(s) -> ajout des fichiers à la zone d' | ||
+ | - Créer des branches (**git branch** // | ||
+ | * Pour **collaborer à un dépôt** | ||
+ | - Créer un compte sur GitHub | ||
+ | - Cloner un dépôt (**git clone** // | ||
+ | - Rapatrier sur sa machine les modifications du dépôt distant (**git pull** //origine// // | ||
+ | - Publier ses modifications (**git push** //origine// // | ||