GIT (versioning)

Les liens utiles

liens WEB:

Configurer GIT

  1. Les options de base pour la configuration

    git config --global user.name "votre_pseudo"
    git config --global user.email moi@email.com
        # on commence par configurer son nom (user.name)
        # puis son adresse Email (user.email)
    
    git config --global color.diff auto
    git config --global color.status auto
    git config --global color.branch auto
        # Les 3 lignes permettent de mettre le shell en couleur
    
  2. Pour vérifier la configuration
    git config --list
    
  3. Remplacer VI par Nano
    • Télécharger Nano. et l’installer dans « C:Program Files (x86) »

    • Ajouter le chemin de Nano dans le path

    • Ouvrir une invite de commande et tapez
      git config --global core.editor nano.exe
      

Obtenir de l’aide

  1. les commandes de bases intégrée a git
    git help
    git help <verbe>
    git <verbe> --help
    man git-<verbe>
    

Démarrer un dépôt Git

  1. Initialisation d’un dépôt Git dans un répertoire existant
    git init
    

gitignore

Liens_Web:

Enregistrer des modifications dans le dépôt

  1. Vérifier l’état des fichiers
    git status
    
  2. Ajouter les données
    git add *
    
  3. faire un commit
    git commit -am "votre commentaire"
    

Créer, lister et sélectionner une branche

  1. Pour lister une branche
    git branch
        # la branch ayant un asterics est la branche courante
    
  2. Pour connaitre la branch avtive
    git symbolic-ref HEAD --short
    
  3. Pour créer une nouvelle branch
    git branch [nom de la branch]
    
  4. Pour sélectionner et se déplacer sur une branche
    git checkout [nom de la branch]
    
  5. Pour importer des fichiers depuis une autre branch.
    git chekout [branch] [fichier cible]
    
  6. Pour créer une nouvelle branch et basculer directement dessus
    git checkout -B [Nom de la nouvelle branch]
    
  7. Pour lister les fichiers tracker :

    git ls-files
    
  8. Pour lister les fichiers non tracker :

    git ls-files --others
    
    ou en version courte :
    
    git ls-files -o
    

appliquer le contenu d’une branch dans la branch courante (faire un merge)

  1. Se placer sur la branche de destination
    git checkout [branch cible]
        # ex : git checkout master
    
  2. Lancer la commande « merge » en prenant comme argument la branch a appliquer
    git merge [branch_a_appliquer]
        # ex : git merge dev
    

Copier seulement un fichier depuis une autre branch dans la branch courante

  1. Faire un chekout du ficher dans la branch courante

    git checkout [branch_source] [chemin/du/fichier]
    
    ex:
    git branch
          crash_test
          dev_jojo
        * dev_pierre
          master
    
    git checkout dev_jojo js/main.js
    

supprimer des éléments

  1. Supprimer un fichier du repository (de l’index, mais pas du dossier de travail)

    git rm --cached [nom_du_fichier]
    
  2. supprimer un dossier du repository (de l’index, mais pas du dossier de travail)

    • On commence par l’exclure à laide de “.gitignore”

      ## gitignore
      ## files
      ...
      ## dir
      path_to_my_folder/
      
    • on le supprime ensuite de la même façon qu’un fichier

      git rm -r --cached path_to_my_folder/
      
  3. supprimer tous le cache
    git rm -r --cached .
        # ne pas oublier le point
    
  4. réparer l’index si un fichier est supprimer du dossier de travail mais pas de l’index
    git reset
    
  5. supprimer une branch

    git branch -D [nom_de_la_branch]
        # l'option '-D' est l’équivalent de --delete --force
    

faire un « instantané » puis le libérer

  1. faire un instantané

    git stash push
    
  2. Obtenir la list des stash

    git stash list
    
  3. Appliquer et libérer l’instantané puis le supprimer

    git stash pop [id du stash (commit) ou son nom]
    
  4. Appliquer l’instantané

    git apply [ID ou nom]
    

Réparer / annuler / remplacer

Liens Web:

Réparer une erreur non-committée

  1. Réparer une erreur non-committée

    git reset --hard HEAD
    

annuler / remplacer le dernier commit

  1. Annuler le dernier commit

    git revert HEAD
    
  2. remplacer le dernier commit par le présent

    git commit --ammend
    

Réparer un detached HEAD

l’état detached HEAD se produit lorsque « HEAD » fait référence à un commit et non plus à la branche elle même.

cette information est alors visible en faisant un « git branch »

git branch

* (HEAD detached from 2ca07f8)
  crash_test
  dev_jojo
  dev_pierre
  master

Les étapes pour rattacher HEAD à la branche sont :

  1. Créer une branche temporaire à partir de la branch actuelle et se placer dessus.

    git checkout -b temp
    
  2. mettre la branch « normalle » à jour par rapport à la branch temporaire.

    git branch -f [nom_de_la_branche_normalile] [nom_de_la_branch_temporaire]
    
    ex:
    git branch -f dev_pierre temp
    
  3. Ce déplacer sur la branche « normalle » et supprimer la branche temporaire.

    git checkout dev_pierre
    git branch -D temp
    
  4. Vérifier que l’opération c’est effectuée correctement.

    git branch
    
      crash_test
      dev_jojo
    * dev_pierre
      master
    

Gestion dépôt distant

Un dépôt distant ne doit pas être un dossier de travail.

  1. créer un dépôt distant

    se placer dans le dossier distant

    git init --bare
    
  2. dépôt local

    Si il s’agit d’un nouveau projet on peut faire un clone

    git clone [//chemin/vers/depot/distant]
    

    Si il s’agit d’un projet existant ayant déjà un dépôt distant, on peut changer le chemin du dépôt distant directement en éditant le fichier « config » du dépôt local.


github

Liens Web:
  1. Ajouter le dépôt distant « origin »

    git remote add origin [url_de_votre_projet_sur_github]
    
  2. Pousser la branch locale « master » vers la branch distante « origin »

    git push -u origin master
    
  3. Mettre à jour le dépôt local depuis le dépôt distant

    git pull [nom de la branche]
        # le nom de la branch est optionnel si il n'y en a qu'une (origin)
    
  4. Lister les branch distantes
    • Lister les branch distantes toutes seules

      git remote
      
    • afficher l’url à la suite du nom de la branch

      git remote -v
      
  5. Modifier l’url du dépôt distant

    • Ouvrir le dossier « .git » que se trouve à la base du dépôt local

    • Editer le fichier « config » et modifier la ligne « URL »

  6. Pousser toutes branch d’un coup sur le dépôt distant

    git push --all
    
  7. Supprimer une branche distante

    git push origin :[nom_de_la_branche_distante]
        # N.B : les ':' doivent être colles au nom de la branch distante
    
  8. Obtenir la list des branch distantes (liste depuis de dépôt local)

    git branch -r
    
  9. Obtenr la list de toutes les branch

    git branch -a
    
  10. Pour mettre à jour une branch locale depuis depuis une branch distante

    git pull -a [depot_distant] [branch_locale]
        # ex : git pull -a origin dev
    

Importer une branch distante dans le dépôt local

  1. Synchroniser le dépôt local et le dépôt distant :

    git fetch
    
  2. Contrôler que la nouvelle branch distante est bien référencée dans le dépôt local :

    git branch -a
    
        * master
          remotes/origin/dev_Jojo   <--
          remotes/origin/master
    
  3. Créer et Tracker la nouvelle branch :

    git --track [nom_de_la_branche] [chemin_distant]
    
    ex:
    
    git --track dev_jojo remotes/origin/dev_Jojo
    
  4. Basculer sur la nouvelle branch :

    git checkout [nom_de_la_branch]
    
    ex:
    
    git checkout dev_jojo
    

Réparer un liens vers une branche distante

git fetch --prune