Memo GIT ligne de commande

De Didaquest
Aller à la navigationAller à la recherche

Installer Git

un bon exemple: [1]

Assurer que git soit bien installé

git --version


Configurer son identité

La première chose à faire est de configurer son identité.

  • Commencer par renseigner votre nom et votre adresse e-mail. C'est une information importante car toutes les validations dans Git utilisent cette information et elle est indélébile dans toutes les validations que vous pourrez réaliser :
$ git config --global user.name "<prénom> <nom>"
$ git config --global user.email "<adresse@mail.tld>"

Grâce à l’option --global, vous n’aurez besoin de le faire qu'une fois.

  • Si vous souhaitez par contre, pour un projet spécifique, changer votre nom d’utilisateur, vous devrez repasser cette ligne mais sans le --global.

Afin de vérifier que vos paramètres aient bien été pris en compte, et vérifier les autres paramètres, il suffit de passer la commande git config --list

Activer la coloration syntaxique (optionnel)

Soit en automatique

git config --global color.ui auto

Soit, il est recommandé d’activer les couleurs afin d’améliorer la lisibilité des différentes branches. Pour cela, passez ces trois lignes dans Git Bash :

$ git config --global color.diff auto
$ git config --global color.status auto
$ git config --global color.branch auto

Par défaut, Git utilisera Vim comme éditeur et Vimdiff comme outil de merge. Vous pouvez les modifier en utilisant :

$ git config --global core.editor notepad++ $ git config --global merge.tool vimdiff

Créer un dépôt local

Pour ce faire, deux solutions possibles :

  • Créer un dépôt local vide pour accueillir un nouveau projet ;
  • Cloner un dépôt distant, c’est-à-dire rapatrier tout l’historique d’un dépôt distant en local, afin de pouvoir travailler par dessus.
Dans un logiciel de gestion de versions comme Git, un dépôt représente une copie du projet.
Chaque ordinateur d’un développeur qui travaille sur le projet possède donc une copie du dépôt.
Dans chaque dépôt, on trouve les fichiers du projet ainsi que leur historique.
- Etape 1: Créer un dépôt vide. On va créer, dans un premier temps, un dossier sur notre disque (avec le nom de notre projet).

(Vous pouvez créez un dossier manuellement ou avec une ligne de commande)

- Etape 2: Accédez à votre dossier, et lancez la ligne ci-dessous dans Git Bash en ciblant ce dossier :
Nonutilisateur ~
$ cd Documents/Fichiers/Git/NomdeVotrePremierProjet
Nonutilisateur ~/Documents/Fichiers/Git/NomdeVotrePremierProjet
$ git init
Initialized empty Git repository in c:/users/Nonutilisateur/Documents/Fichiers/Git/NomdeVotrePremierProjet/
- Etape 3: Rendre visible le fichier dépot Git : Votre dossier n’a rien de nouveau, mais c’est normal. :) Vous avez pourtant bien initialisé votre dépôt Git. Un dossier caché .git a été créé ! Vous pouvez l'afficher en allant dans Affichage => Éléments masqués.

Configurer un nouveau / existant projet (à faire dans le bon dossier)

$ git init

Voir les nouveaux fichiers créés, la branche actuelle,...

$ git status

Ajouter un fichier dans le repository

$ git add index.html
$ git commit -m 'premier commit de la page l\'accueil'

Cloner un repository

Pointer vers le dépôt distant

sur Git Bash, et tapez la commande suivante :

git remote add OC https://github.com/vous/votreProjet.git

Cette ligne ne permet pas de cloner le dépôt, mais permet de dire au dépôt que l’on pointe vers le dépôt distant.

REMARQUE IMPORTANTE: OC représente un nom court que vous avez choisi et que vous utiliserez ensuite pour appeler votre dépôt. Appelez-le comme bon vous semble, mais un nom court et simple est toujours plus facile.

La commande git-clone

  • A ce stade le dépôt local pointe sur le dépôt distant, il est possible de cloner son contenu et le dupliquer en local grâce à la commande git-clone. Cette commande utilise en premier argument l'adresse d'un repository.
git clone https://github.com/vous/votreProjet.git
  • Astuce: Si l'on n'indique pas le protocole avec le caractère : au début de l'adresse, il est possible de spécifier un répertoire du repository en utilisant ce caractère après l'adresse.
git clone git@github.com:monDossier

En utilisant cette commande, cela va créer un répertoire appelé monDossier dans lequel sera téléchargé le contenu du repository. Si vous souhaitez créer un répertoire spécifique, il suffit de l'indiquer en deuxième argument de la commande.

#Le contenu sera téléchargé dans le dossier où vous vous situez
git clone git@github.com:monDossier .

#Le contenu sera directement téléchargé dans le répertoire repertoire
git clone git@github.com:monDossier adressedurepertoire/repertoire

Remarques :

  • Si le répertoire existe déjà, il est obligatoire qu'il soit vide pour que la commande fonctionne.
  • Si vous souhaitez déplacer un dossier déjà téléchargé sur votre ordinateur, alors il est nécessaire de déplacer également le répertoire .git. En effectuant cette manipulation, vous vous assurez que les commandes git (git pull par exemple) continueront de fonctionner après le déplacement.

Système de branches

Le principal atout de Git est son système de branches. C’est sur ces branches que vont être réalisé les modifications sans toucher au codes et fichiers de votre projet initial. Les différentes branches correspondent à des copies de votre code principal à un instant T, où vous pourrez tester toutes vos idées les plus folles sans que cela impacte votre code principal. La branche va fonctionner comme un dossier virtuel.

  • Avec git branch, on va connaitre et créer les branches et vérifier la branche dans laquelle vous vous situez grâce à l'étoile (*)
  • Avec git checkout, on va être téléporté et passer de branches en branches
  • Avec git clone, on va cloner ou créer des branches
  • Avec git merge, on va fusionner des branches
  • ....

dans le dossier virtuel Cagnotte. On reste dans le dossier OC physiquement, mais virtuellement nous sommes passés dans un monde parallèle ! Vous pouvez désormais réaliser votre évolution sans toucher à la branche master qui abrite votre code principal qui fonctionne. Vous pouvez rebasculer si besoin à tout moment sur la branche master, sans impacter les modifications de la branche Cagnotte.

Connaître les branches présentes dans notre projet

La ligne de commande :

git branch

Dans un nouveau projet, vous n’aurez que la réponse suivante:

git branch
* master

L’étoile signifie que c’est la branche sur laquelle vous vous situez et que c’est sur celle-ci qu'actuellement vous réalisez vos modifications. La racine de votre projet est la branche master

REMARQUE: Il est fortement conseillé de créer une branche et de ne pas travailler sur la branche master surtout si modification longue, complexes, ou que vous ne voyez pas tout de suite comment faire la modification.

Créer une branche

git branch <nom-nouvelle-branche>

Vérifier la branche dans laquelle vous vous situez

git branch

Changer de branche

git checkout <nom-branche>

Retourner dans la branche principale

git checkout master

Cloner une branche

Le système de gestion de versions Git permet d'administrer les différentes phases de développement de notre projet. Il est possible de cloner n'importe quelle branche du dépôt de votre projet. Il suffit pour cela d'utiliser la commande git clone

git clone git://example.com/monprojet

Mais une fois la branche clonée, si vous essayez de lister les branches avec la commande git branch, vous ne les verrez pas toutes. Pour être sûr de toutes les voir, il faut utiliser l'option -a. Exemple avec git branch :

git branch
* master
  • Exemple avec l'option -a :
git branch -a
* master
remotes/origin/HEAD
remotes/origin/master
remotes/origin/v1.0-stable
remotes/origin/experimental

Il est possible de récupérer une branche pour voir son contenu avec la commande git checkout. Si vous souhaitez travailler sur cette branche, il faut créer une branche locale avec l'option -b. Exemple :

git checkout -b experimental origin/experimental

Naviguer sur les branches interface graphique

  • Si vous avez trop de branches et que vous avez des difficultés pour vous y retrouver, la commande gitk permet de lancer une interface graphique capable de naviguer dans un dépôt git.

Commande pour lancer l'interface graphique :

gitk --all &

Fusionner une autre branche avec la principale

git merge <nom-branche>

Effacer une branche Git à la fois locale et distante

Vous pouvez supprimer complètement une branche au sein d'un dépôt Git. Il faut pour cela exécuter deux commandes.

  • Le logiciel Git fournit un système de branches en plus de la gestion des versions. Les branches permettent de travailler sur un élément à part dans un projet. On peut par exemple en créer une pour travailler sur une nouvelle fonctionnalité ou la résolution d'un problème. Lorsque le travail effectué sur la branche est terminé, on l'intègre dans le répertoire de travail principal grâce à la commande git merge.
  • Une fois le travail terminé sur une branche, vous pouvez la supprimer du dépôt. Il faut pour cela exécuter deux commandes, une pour chaque branche :
  • Supprimer branche local : celle qui existe en local sur votre ordinateur ;
celle qui existe sur le dépôt distant.

Pour supprimer une branche locale sur votre ordinateur, la commande est la suivante :

git branch -d [nom_de_la_branche]

Cette commande vous affichera un avertissement si la branche n'a pas été totalement fusionnée avec le répertoire principal du dépôt. Pour passer outre cet avertissement, on utilise l'option -D :

git branch -D [nom_de_la_branche]

Forcer la suppression de cette manière entraînera la suppression de tous les fichiers et modifications que nous n'aurez pas commités sur cette branche.

  • Supprimer branche distante : Pour supprimer la branche située sur le dépôt distant, la commande est différente selon la version de git utilisée.
- Si la version de Git est antérieure à la version 1.7.0, la syntaxe est la suivante :
git push [nom_du_depot_distant] :[nom_de_la_branche]

Si vous avez utilisé la commande git clone pour créer la branche, celle-ci attribue par défaut le nom origin au dépôt distant. La syntaxe de la commande devient :

git push origin :[nom_de_la_branche]
- Si vous utilisez une version de git plus récente, la syntaxe de la commande a été modifiée pour être plus facile à mémoriser :
git push origin --delete [nom_de_la_branche]

Une fois cette commande effectuée, vous devrez exécuter la commande suivante sur tous les autres ordinateurs afin de propager le changement :

git fetch --all -prune

Réalisez un commit

  • La commande Git pull permet de récupérer en local le projet distant !
  • La commande Git push permet d'envoyer les modifications que l'on a réalisées en local sur le dépôt à distance;
  • La commande git add permet d'ajouter un fichier aux branches

L'index, ou stage, désigne tous les fichiers modifiés que vous souhaitez voir apparaître dans votre prochain commit.

Le dépôt local est l'historique de l'ensemble de vos actions (commits, configurations...). .

Et si on fait des erreurs ? Comment les réparer !
  • La commande commit : Permet l'archivage à un instant T
  • La commande git reflog: Permet d'accéder à l'historique de l'archivage (qui affichera toutes vos actions et leurs SHA. Le SHA, c'est ce grand code qui vous permettra de revenir à un commit exact. C'est l’identifiant de votre action !)

Ajouter un premier fichier et le commiter (archiver)

Avant de créer une branche, vous devez créer votre branche principale (master). Pour créer la branche master, vous devez simplement ajouter un fichier et le commiter.

git add PremierFichier.txt
git commit

On vous demande alors d'indiquer le message du commit puis de valider. Pour valider le message, une fois que vous l'avez écrit, appuyez sur Echap (votre curseur va basculer sur la dernière ligne) et tapez :x. Cette commande va sauvegarder et quitter l'éditeur des messages de commit.

Analyser vos derniers commits

git log, 

Par défaut, git log va lister par ordre chronologique inversé tous vos commits réalisés avec leur info et surtout l'identifiant du commit que l'on appelle couramment le hash. (! Pour utiliser le hash il n'est pas nécessaire d'écrire l'identifiant en entier. Seuls les 8 premiers caractères sont nécessaires)

Déplacer un commit d'une branche master vers une nouvelle branche

Aller sur la branche master

Vérifiez bien que vous êtes sur votre branche master

Analyser et récupérer l'identifiant du derniers commits

git log

Les identifiants des commits que l'on appelle couramment les hash sont lister par ordre chronologique inversé.

Supprimer de la branche master votre dernier commit

git reset --hard HEAD^

Cette ligne de commande va permettre de supprimer de la branche master votre dernier commit. Le Head^ indique que c'est bien le dernier commit que nous voulons supprimer.

Créer une nouvelle branche

git branch <nondelanouvellebranche>

Basculer sur cette branche

git checkout <nondelanouvellebranche>

Appliquer l'ancien commit sur une nouvelle branche

git reset --hard <mettreleschiffredelanciencommite>

le commit est dans transférer

! Il n'est pas nécessaire d'écrire l'identifiant en entier. Seuls les 8 premiers caractères sont nécessaires.

Créer une branche (autre que la master)

git branch <nomdelanouvellebranche>


Pour vérifier la création de cette banche avec la commande :

git branch


Avoir un résumé des changements effectués sur les fichiers locaux

git diff

Avoir une comparaison des fichiers ligne par ligne

git diff --color-words

Voir le fichier de log

git log

Voir le fichier de log plus succint

git log --oneline

Restaurer un fichier modifié par sa version précédente

git checkout <nom-fichier>

Restauration dépôt, index et répertoire de travail

git reset --hard <reference-commit>

Restauration dépôt et index

git reset --mixed <reference-commit>

Restauration dépôt

git reset --soft <reference-commit>

Revenir à une version antérieure "Revert Git"

  • Revert Git : revenir à une version antérieure de votre repo Git en annulant un commitLe logiciel de gestion de versions offre de nombreuses possibilités dans la gestion des changements qui sont effectués sur un répertoire de travail.

Le logiciel de gestion de versions Git offre de nombreuses possibilités dans la gestion des changements qui sont effectués sur un répertoire de travail. Il est possible de revenir à une version antérieure de son travail.

  • La première chose à faire pour revenir à une version antérieure est d'abord de repérer cette version. La commande git log liste les différents commit (enregistrements) effectués. La chaîne de caractères situé à côté du mot commit permet d'identifier l'enregistrement. Elle sera utilisée dans toutes les commandes nécessitant un numéro d'enregistrement :

git log

qui affichera le numéro a prendre:

commit 3u38t0qn00p1sr1o8012r16kp2nsxcmul1w426w5
Author: Moi
Date: Mon Aug 1 10:00:00 2016 -0400
  • La démarche est ensuite différente selon votre situation. Elle dépend du travail que vous souhaitez effectuer à partir de cette version antérieure mais aussi des commits effectués depuis.
  • Si vous souhaitez simplement visualiser ou copier des lignes de code sans apporter aucune modification: il faut utiliser la commande git checkout en spécifiant le numéro du commit. Le répertoire de travail sera alors mis à jour pour correspondre à la version spécifiée :
git checkout 3u38t0qn00p1sr1o8012r16kp2nsxcmul1w426w5

Il est possible de créer une nouvelle branche à partir de cette version grâce à la commande git checkout :

git checkout -b old-state 3u38t0qn00p1sr1o8012r16kp2nsxcmul1w426w5

Pour revenir à la version actuelle de votre répertoire de travail, il faudra refaire un check-out.

Il est possible de revenir en arrière et de supprimer toutes les modifications qui ont été enregistrées depuis la révision mais la commande ne sera pas la même si vous ayez publié les commits ou non.

- Si vos commits n'ont pas été publiés, il suffit de revenir à la version antérieure du répertoire de travail grâce à la commande git reset :
git reset --hard 3u38t0qn00p1sr1o8012r16kp2nsxcmul1w426w5
- Si vous possédez des modifications non enregistrées dans votre répertoire de travail et que vous souhaitez les conserver, il faut exécuter en plus la commande get stash.
git stash #sauvegarde les modifications
git reset --hard 3u38t0qn00p1sr1o8012r16kp2nsxcmul1w426w5 #remet à zéro le répertoire de travail par rapport à la révision spécifiée
git stash pop #applique les modifications sauvegardées
- Si un fichier est concerné à la fois par les modifications en cours et le retour à la version antérieure du répertoire de travail, il y aura un conflit à résoudre.
- Si les commits ont été publiés, il est possible de créer un patch qui correspondra aux modifications à effectuer pour revenir en arrière, puis enregistrer les modifications avec un nouveau commit :
commande pour créer le patch qui applique la révision demandée au répertoire de travail
git revert 3u38t0qn00p1sr1o8012r16kp2nsxcmul1w426w5
il est également possible d'utiliser la commande en donnant un nombre d'enregistrements que l'on souhaite annuler (4 dans cet exemple)
git revert HEAD~4..HEAD
Vous pouvez ensuite sauvegarder votre travail. Pensez à bien spécifier ce que vous avez fait dans le message d'enregistrement
git commit


Connecter le repository local à celui de GitHub

git remote add origin <github-repository-url>

Publier les changements sur GitHub

git push origin <nom-branche>

Récupérer la dernière version du repository de GitHub

git clone <github-repository-url>

Récupérer les changements effectués

(utile quand plusieurs personnes développent en même temps)

git pull origin <nom-branche>