Utiliser Git

Cet article nécessite la conaissance du fonctionnement des gestionnaires de versions et avoir installé git.

Démarrage d'un dépôt

Créer un nouveau dépôt : créer un dossier et se placer dans celui-ci. Exécuter la commande :

$ git init

Cela crée un nouveau sous-répertoire nommé .git qui contient tous les fichiers nécessaires au dépôt.

Cloner un dépôt local : créer une copie du dépôt local :

$ git clone /path/to/the/repository

Toutes les versions de tous les fichiers pour l'historique du projet sont téléchargées (aucune perte de données).

Cloner un dépôt distant : créer une copie du dépôt d'un serveur git distant

Suivant le protocole utilisé par le serveur : SSH, GIT ou HTTPS

$ git clone username@host:/path/to/the/repository
$ git clone git://github.com/user/depot.git
$ git clone https://username@host:/path/to/the/repository
					

Enregistrer des modifications

Vérfier l'état du dépôt : indique la branche (master par défaut) sur laquelle est le dépôt, les fichers modifiés ou non suivis.

$ git status
On branch master
Untracked files:
  (use "git add ..." to include in what will be committed)
          LISEZMOI

nothing added to commit but untracked files present (use "git add" to track)
					

Ajouter des fichiers au suivi de version : pour un nouveau fichier par exemple. Les modifications de ce fichier seront donc suivies

$ git add LISEZMOI 

Indexer un fichier : cela signifie que le fichier sous suivi de version a été modifié dans la copie de travail mais n'est pas encore indexé.

$ git add benchmarks.rb 

Ajouter et/ou indexer tous les fichiers au suivi de version :

$ git add * 

Comparer le contenu du répertoire à l'index : Pour visualiser ce qui a été modifié mais pas encore indexé

$ git diff
diff --git a/benchmarks.rb b/benchmarks.rb
index 3cb747f..da65585 100644
--- a/benchmarks.rb
+++ b/benchmarks.rb
@@ -36,6 +36,10 @@ def main
           @commit.parents[0].parents[0].parents[0]
         end

+        run_code(x, 'commits 1') do
+          git.commits.size
+        end
+
         run_code(x, 'commits 2') do
           log = git.commits('master', 15)
           log.size 
Juste après un git status, si la zone d'index est dans l'état désiré, vous pouvez valider vos modifications.

Valider les modifications :

$ git commit

On a alors un éditeur de texte qui s'ouvre et affiche :
Il faut alors entrer en début de fichier juste avant le premier # le titre du commit (modifications apportées), sauter une ligne et énumérer les modifications apportées.

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#       new file:   LISEZMOI
#       modified:   benchmarks.rb
~
~
~
".git/COMMIT_EDITMSG" 10L, 283C
L'option -a permet de s'affranchir la phase d'indexation (éviter de faire git add). $ git commit -a

Effacer des fichiers : Pour effacer un fichier de Git, vous devez l'éliminer des fichiers en suivi de version (l'effacer dans la zone d'index) puis valider.

$ git rm benchmarks.rb
Si le fichier est effacé de l'arborescence, il apparaît comme non indexé dans git status, il suffit faire un $ git rm file

Visualiser les modifications : cette commande possède de nombreuses options dont -p qui montre les différences introduites entre chaque validation.
--stat pour avoir les différences entre chaque commit, -"n" qui affiche les n derniers commits

$ git log

Annuler des modifications

Modifier le dernier commit : Une des annulations les plus communes apparaît lorsqu'on valide une modification trop tôt en oubliant d'ajouter certains fichiers, ou si on se trompe dans le message de validation.

$ git commit --amend

Désindexer un fichier déjà indexé : Pour annuler par exemple une mauvaise action effectuée par un git add *

$ git reset HEAD benchmarks.rb

Réinitialiser un fichier modifié : Pour annuler toutes les modifications effectuées sur un fichier.

$ git checkout -- benchmarks.rb

Travailler sur des dépots distants

Afficher les dépôts distants : Pour visualiser les serveurs distants que vous avez enregistrés, vous pouvez lancer la commande git remote

$ git commit --amend

Ajouter des dépôts distants : Pour ajouter un nouveau dépôt distant Git comme nom court auquel il est facile de faire référence

$ git remote add [nomcourt] [url]

Récupérer et tirer depuis des dépôts distants : Cette commande s'adresse au dépôt distant et récupère toutes les données de ce projet que vous ne possédez pas déjà.

$ git remote add [nomcourt] [url]

Fusion automatique : la commande git pull récupère et fusionne automatiquement une branche distante dans la branche locale.

$ git pull

Pousser son travail sur un dépôt distant : Cette commande ne fonctionne que si vous avez cloné depuis un serveur sur lequel vous avez des droits d'accès en écriture et si personne n'a poussé dans l'intervalle.

$ git push [nom-distant] [nom-de-branche]
Gestion du dépôt

Ignorer des fichiers : Il apparaît souvent qu'un type de fichiers présent dans la copie de travail ne doit pas être ajouté automatiquement ou même ne doit pas apparaître comme fichier potentiel pour le suivi de version. Renseigner un fichier .gitignore avant de commencer à travailler est généralement une bonne idée qui évitera de valider par inadvertance des fichiers qui ne doivent pas apparaître dans le dépôt Git.

# un commentaire, cette ligne est ignorée
# pas de fichier .a
*.a
# mais suivre lib.a malgré la règle précédente
!lib.a
# ignorer uniquement le fichier TODO à la racine du projet
/TODO
# ignorer tous les fichiers dans le répertoire build
build/
# ignorer doc/notes.txt, mais pas doc/server/arch.txt
doc/*.txt
# ignorer tous les fichiers .txt sous le répertoire doc/
doc/**/*.txt

Les arbres

Un dépôt local contient trois arbres :

  • espace de travail : espace contenant réellement les fichiers
  • Index : espace de transit des fichiers (après un git add)
  • HEAD : pojnte vers la dernière validation faite.

About

Le blog d'un passionné d'info et d'électronique. A propos de moi

Newsletter

Si vous souhaitez être avertis des nouveaux articles sur le site

Recent NEWS

Let’s Encrypt et les certificats génériques
Une amélioration du service prévue en janvier 2018

Sortie de debian 9
Une nouvelle version du système universel

Contact

SHFNET
Contact
shfnet.fr

Stay Connected

© SHFNET, 2017
Logo SHFNET