Semaine 05: Git en ligne de commande - semiria/INF2015 GitHub Wiki

Note

Git Bash est déjà installé sur les postes des laboratoires de l'UQAM. Pour installer Git Bash à la maison, consultez les références.

Objectifs

  • Manipuler les commandes principales de Git à la console
  • Manipuler un dépôt distant sur github

Prérequis

  • Git

Exercices

Les exercices sont une reprise du laboratoire précédant. Le déroulement sera similaire, la seule différence étant que les actions (clone, add, push, etc.) seront exécutées en ligne de commande.

Configurer Git

Git utilisera ces préférences pour les log. C'est ce que vous verrez apparaître lorsque vous consulterez les logs sur Github ou en ligne de commande.

  1. Ouvrir Git Bash
  2. Changer le nom utilisateur
    • git config --global user.name "[Nom]"
  3. Changer l'adresse courriel
    • git config --global user.email "[Adresse courriel]"

Créer un nouveau dépôt (instance 1)

  1. Créer un nouveau dépôt distant sur Github
  2. Ouvrir NetBeans et créer un nouveau projet appelé instance1
  3. Compiler et exécuter le projet
  4. Ouvrir Git Bash
  5. Rejoindre l'emplacement de la racine du nouveau projet
    • cd Documents/demo/inf2015/instance1
  6. Initialiser le projet Git
    • git init
  7. Ajouter le dépôt distant
    • git remote add origin https://github.com/semiria/semaine5.git
  8. Ajouter tous les fichiers du projet à l'exception des dossiers nbproject/private/, build/ et dist/
    • git add src/*
    • git add build.xml
    • git add manifest.mf
    • git add nbproject/*.*
  9. Vérifier l'état de l'index et s'assurer que les dosssiers nbproject/private/, build/ et dist/ ne sont pas inclut dans Changes to be committed
    Stephanies-MacBook-Air:instance1 mimac$ git status
    On branch master
    
    Initial commit
    
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
    
    	new file:   build.xml
    	new file:   manifest.mf
    	new file:   nbproject/build-impl.xml
    	new file:   nbproject/genfiles.properties
    	new file:   nbproject/project.properties
    	new file:   nbproject/project.xml
    	new file:   src/instance1/Instance1.java
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
    	build/
    	dist/
    	nbproject/private/
    
  10. Faire le commit
    • git commit -m "Commit initial du projet"
  11. Pousser les modifications sur le dépôt distant
    • git push origin master

Ignorer des fichiers (instance 1)

  1. Créer le fichier .gitignore à la racine du projet
    • touch .gitignore
  2. Ouvrir le fichier .gitignore
    • vim .gitignore
  3. Ajouter les fichiers à ignorer
    • Taper le caractère i pour passer en mode édition
    • Ajouter tous les fichiers et dossiers à ignorer (voir exemple d'un .gitignore plus bas)
    • Taper la touche escape pour sortir du mode édition
    • Taper :wq pour quitter le mode VIM en sauvegardant les modifications
  4. Ajouter le fichier .gitignore à l'index
  5. Faire le commit
  6. Pousser les modifications sur le dépôt distant
#Exemple .gitignore pour NetBeans
# NetBeans #
nbproject/private/
build/
dist/

Importer un dépôt distant existant (instance 2)

  1. Rejoindre l'emplacement où le projet sera cloné
    • cd /Users/mimac/Documents/demo/inf2015
  2. Cloner le dépôt distant
    • Récupérer l'URL https du dépôt distant créé précédemment
    • git clone https://github.com/semiria/semaine5.git instance2 Noter que instance2 correspond au nom du répertoire dans lequel le projet sera cloné
  3. Dans NetBeans, ouvrir le projet java instance2

Modifier le dépôt distant (instance 2)

  1. Dans NetBeans, modifier la méthode main
  2. En ligne de commande, rejoindre l'emplacement de l'instance 2
  3. Ajouter le fichier modifié à l'index
  4. Faire le commit
  5. Pousser les modifications sur le dépôt distant
    • git push origin master

Mettre à jour le dépôt local (instance 1)

  1. En ligne de commande, rejoindre l'emplacement de l'instance 1
  2. Télécharger la dernière version du dépôt distant
    • git pull origin master

Modifier le commit précédant (instance 1)

  1. Dans NetBeans, modifier la méthode main
  2. En ligne de commande, rejoindre l'emplacement de l'instance 1
  3. Ajouter le fichier modifié à l'index
  4. Faire le commit
  5. Afficher les logs
    • git log
    • Remarquer le dernier message de commit
    • Entrer q pour quitter les logs
  6. Répéter les étapes 1 à 3
  7. Faire le commit amend
    • git commit --amend -m "[Message]"
  8. Afficher les logs et remarquer que le commit de l'étape 2 a été changé pour le commit de l'étape 5
  9. Pousser les modifications sur le dépôt distant

Régler un conflit de merge (instance 2)

  1. Dans NetBeans, modifier la méthode main à la même ligne que l'exercice précédant
  2. En ligne de commande, rejoindre l'emplacement de l'instance 2
  3. Ajouter le fichier modifié à l'index
  4. Faire le commit
  5. Télécharger la dernière version du dépôt distant. Git indiquera qu'il y a eu des conflits et qu'ils doivent être résolus
  6. Obtenir la liste des fichiers en conflits
    • git status
  7. Ouvrir chacun des fichiers en conflits
  8. Modifier le fichier de telle sorte que le conflit soit réglé
  9. Sauvegarder
  10. Ajouter le fichier modifié à l'index
  11. Faire le commit
  12. Pousser les modifications sur le dépôt distant

Annuler un commit (Revert) (instance 1 ou instance 2)

  1. Ajouter une méthode à la classe principale du projet
  2. Ajouter le changement à l'index
  3. Faire un commit
  4. Répéter les étapes 1 à 3 3 fois afin d'ajouter 3 commits différents qui ajoutent chacun une nouvelle méthode
    commit 5b72cb4e1bd8da97bf8757490624f0e24150f6af
    Author: Pascal St-Louis <[email protected]>
    Date:   Sat Sep 27 14:35:14 2014 -0400
    
        FonctionC
    
    commit 4256bbf2e789768e887248b996d6efb3434c8bad
    Author: Pascal St-Louis <[email protected]>
    Date:   Sat Sep 27 14:34:26 2014 -0400
    
        Fonction B
    
    commit 8bf33f2595bdbf1e5734421f39656ca837578474
    Author: Pascal St-Louis <[email protected]>
    Date:   Sat Sep 27 14:33:42 2014 -0400
    
        fonctionA
    
  5. Identifier le SHA du commit à annuler (Revert). Le SHA peut être trouvé en faisant la commande git log, ou dans la liste des commits sur gitHub
  6. En ligne de commande, rejoindre l'emplacement de l'instance sur laquelle vous avez fait vos modifications
  7. Faire la commande de revert
    • git revert 4256bbf2e789768e887248b996d6efb3434c8bad
  8. Pousser les modifications sur le dépôt distant

Solutionnaire

Aucun solutionnaire ne sera fournit à la fin de cette démonstration.

Références

⚠️ **GitHub.com Fallback** ⚠️