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

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
dev:git:gerer-zone-index [2019/04/25 21:00] 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 ======
Ligne 7: Ligne 7:
 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
   - Faire le commit   - Faire le commit
 +
 +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>
  
 ===== État de la zone d'index ===== ===== État de la zone d'index =====
  
-la commande **git status** permet de voir le contenu de la zone d'index, l'option **-s** résume le statut de chaque fichier:+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>+<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 =====
dev/git/gerer-zone-index.1556226038.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)