Outils pour utilisateurs

Outils du site


dev:git:gerer-zone-index

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
dev:git:gerer-zone-index [2016/12/25 12:28] – créée yoanndev:git:gerer-zone-index [2024/11/19 14:56] (Version actuelle) yoann
Ligne 1: Ligne 1:
-{{tag>>dev git index staging}}+{{tag>dev git index commit}}
  
 ====== Gestion de la zone d'index git ====== ====== Gestion de la zone d'index git ======
  
-Un commit est un instantané de la zone d'index ou zone d'assemblage (staging area). La zone d'index est ors du répertoire de travail. Seuls les fichiers et dossiers présents dans la zone d'index seront enregistrés en l’état lors du commit.+Un commit est un instantané de la zone d'index ou zone d'assemblage (staging area). La zone d'index est hors du répertoire de travail. Seuls les fichiers et dossiers présents dans la zone d'index seront enregistrés en l’état lors du commit.
  
 Worflow: Worflow:
   - Modifier les fichiers dans le répertoire de travail   - Modifier les fichiers dans le répertoire de travail
-  - Placer dans l'index les fichiers/dossiers à enregistrer +  - Placer dans l'index les fichiers/dossiers à historiser 
-  - commit+  - Faire le commit
  
-===== Etat de la zone d'index =====+Pour illustrer les commandes, un dépôt avec le contenu suivant est créé: 
 +<file> 
 +/tmp/hello-git.git/ 
 +├── readme.txt 
 +└── src 
 +    ├── A.c 
 +    ├── B.c 
 +    └── C.c 
 +</file>
  
-la commande bit status permet de voir le contenu de la zone d'index, l'option **-s** résume le status de chaque fichier:+===== État de la zone d'index =====
  
-<code>+La commande **git status** permet de voir le contenu de la zone d'index, l'option **-s** résume le statut de chaque fichier: 
 + 
 +<code bash>
 $ git status -s $ git status -s
 +?? readme.txt
 +?? src/
 </code> </code>
 +
 +Les points d'interrogations indique que le répertoire ./src et le fichier ./readme.txt ne sont pas suivis  par git pour le moment.
 +
 +===== Ajouter à l'index  =====
 +
 +L'index ou staging area est un espace d'assemblage permettant de préparer le commit. On sélectionne le travail que l'on souhaite historiser.
 + 
 +==== Ajouter un dossier ====
 +
 +Ajouter un dossier dans l'index implique l'ajout de tout son contenu:
 +
 +<code bash>
 +# Ajoute le dossier src à l'index
 +git add src/
 +
 +# Le listing du contenu de l'index
 +# retourne le dossier et tout son contenu
 +git st
 +A  src/A.c
 +A  src/B.c
 +A  src/C.c
 +?? readme.tx
 +</code>
 +
 +Ici, le 'A' en préfixe indique que les fichiers contenus dans src sont ajoutés à l'index.
 +
 +==== Mettre à jour les fichiers suivis ====
 +
 +Pour n'ajouter à l'index que les fichiers déjà suivis et modifiés dans l'espace de travail:
 +<code bash>
 +$ git add -u
 +</code>
 +
 +Ajouter à l'index les fichiers non suivis et les fichiers modifiés:
 +<code bash>
 +$ git add .
 +$ git st
 +A  readme.txt
 +A  src/A.c
 +A  src/B.c
 +A  src/C.c
 +</code>
 +
 +==== N'ajouter qu'une partie d'un fichier ====
 +
 +Lorsque des modifications sont apportées à plusieurs endroits dans un même fichier, on peut vouloir pousser dans l'index qu'une partie d' entre elles mais pas toutes.
 +
 +C'est ce que permet de faire l'option **''-p''** ou ''**%%--patch%%**'' de la commande **git add**:
 +
 +<code bash>
 +# Plusieurs modifications ont été apportées en même temps
 +# au fichiers "config.py". On ne va sélectionner qu'une
 +# sous partie pour le prochain commit
 + 
 +git add --patch fairymaps/config.py
 +</code>
 +
 +La commande bascule en mode interactif, pour chaque section modifiée git demande à l'utilisateur ce qu'il souhaite faire (saisir '?' pour afficher l'aide) :
 +
 +<code>
 +(1/1) Indexer cette section [y,n,q,a,d,s,e,?] ?
 +</code>
 +
 +<file>
 +y - indexer cette section
 +n - ne pas indexer cette section
 +q - quitter ; ne pas indexer cette section ni les autres restantes
 +a - indexer cette section et toutes les suivantes de ce fichier
 +d - ne pas indexer cette section ni les suivantes de ce fichier
 +s - découper la section en sections plus petites
 +e - éditer manuellement la section actuelle
 +? - afficher l'aide
 +</file>
 +
 +Via le mode interactif, l'utilisateur peut choisir les sections qu'il souhaite intégrer à la zone d'assemblage ou redécouper les sections disponibles pour choisir finement quelles modifications apportées dans le fichier seront sauvegardées par le prochain commit.
 +
 +
 +===== Ignorer des fichiers =====
 +
 +Les fichiers .gitignore permettent de définir des patterns d'exclusion. Lors des appels à la commande git add, le fichier .gitignore est évalué et les fichiers correspondants aux patterns présents ne sont pas ajoutés à l'index. On peut néanmoins forcer l'ajout à l'index avec l'argument **-f**
 +
 +<code bash>
 +$ git add -f ./build/A.o
 +</code>
 +
 +
 +Il peut y avoir de multiples fichiers .gitignore dans répertoire du projet. Pour tester si un fichier est bien exclus:
 +
 +<code bash>
 +$ git check-ignore -v build/B.o
 +.gitignore:2:*.o        build/B.o
 +</code>
 +
 +Dans cet exemple la commande retourne que le fichier "B.o" est ignoré par la règle de la ligne 2.
  
 ===== Retirer des fichier de l'index ===== ===== Retirer des fichier de l'index =====
Ligne 39: Ligne 145:
 Attention a bien utiliser l'option **%%--%%cached** pour ne supprimer que le fichier de la zone d'index. Sans cette option le fichier et les modifications apportées sont supprimés de l'index et de l'espace de travail. Attention a bien utiliser l'option **%%--%%cached** pour ne supprimer que le fichier de la zone d'index. Sans cette option le fichier et les modifications apportées sont supprimés de l'index et de l'espace de travail.
 </note> </note>
 +
 +===== Retirer tous les fichiers de l'index =====
 +
 +Pour retirer tous les fichiers présents dans la zone d'index en conservant le répertoire de travail:
 +<code bash>
 +# équivalent pleinement qualifié du comportement par défaut
 +$ git reset --mixed
 +
 +# comportement par défaut retirant tous les fichiers/dossiers de la staging area
 +$ git reset
 +</code>
  
 ===== Restaurer un fichier ===== ===== Restaurer un fichier =====
  
-Pour annuler les modifications faites sur un fichier du répertoire de travail et le restaurer tel qu'il était au dernier commit+Pour annuler les modifications faites sur un fichier du répertoire de travail et le restaurer tel qu'il était lors du dernier commit
  
 <code> <code>
dev/git/gerer-zone-index.1482668916.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)