HOWTO · Git
Ajouter récursivement des fichiers et des dossiers dans Git
Ce didacticiel montre comment ajouter des fichiers et des dossiers dans Git de manière récursive via la commande git add.
Sur cette page
Git place les modifications de fichiers dans l’index, la zone où elles sont préparées en vue du prochain commit. Pour inclure des fichiers dans des répertoires imbriqués, utilisez git add avec le chemin du dépôt entier ou celui d’un répertoire. La commande met les modifications en staging ; elle ne crée pas de commit et n’envoie rien vers un dépôt distant.
Comment git add met des fichiers en staging de manière récursive
Lorsque vous indiquez un chemin de répertoire à git add, Git met en staging les modifications admissibles sous ce chemin, y compris celles des sous-répertoires. Vous pouvez aussi mettre en staging les modifications de toute l’arborescence de travail avec git add -A, ou celles du répertoire courant et de ses descendants avec git add .. Ces commandes ne nécessitent aucune option récursive supplémentaire.
Le chemin compte : une commande lancée depuis un sous-répertoire ne couvre que la portée définie par cette commande. Choisissez la racine du dépôt pour mettre en staging l’ensemble du dépôt, ou indiquez un répertoire pour limiter la sélection. Les règles d’exclusion continuent de s’appliquer aux fichiers non suivis, sauf si vous les contournez délibérément.
Mettre en staging toutes les modifications depuis la racine du dépôt
Pour mettre en staging les modifications dans tout un dépôt, placez-vous d’abord dans son répertoire racine, puis exécutez git add -A. La commande prend en compte les ajouts, les modifications et les suppressions dans toute l’arborescence de travail. Elle est utile lorsque vous avez modifié des fichiers dans plusieurs parties d’un projet et souhaitez sélectionner uniformément les changements de tout le dépôt.
Exécutez cet exemple autonome dans un terminal où Git est installé. Il crée un dépôt temporaire, y ajoute deux fichiers imbriqués, met les modifications en staging depuis sa racine et affiche l’état abrégé. Le répertoire temporaire est supprimé à la fin du script.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
work_dir="$(mktemp -d)"
trap 'rm -rf "$work_dir"' EXIT
cd "$work_dir"
git init -q
mkdir -p src/lib
printf 'app\n' > README.md
printf 'module\n' > src/lib/module.txt
git add -A
git status --short
Utilisez git add . lorsque vous souhaitez précisément mettre en staging les modifications du répertoire courant et de ses descendants. Depuis la racine du dépôt, cette commande couvre généralement les mêmes chemins de l’arborescence de travail que git add -A. Depuis un sous-répertoire, git add . se limite à ce répertoire et à ses descendants, tandis que git add -A couvre les modifications dans tout le dépôt. Pour sélectionner l’ensemble du dépôt de manière prévisible, exécutez git add -A à sa racine.
Mettre en staging un répertoire précis
Pour limiter le staging à une partie du projet, exécutez git add path/to/directory/ depuis la racine du dépôt, en remplaçant le chemin d’exemple par celui du répertoire souhaité. Git inclut les fichiers ajoutés ou modifiés admissibles sous ce chemin. Un chemin de répertoire permet également à Git de prendre en compte les fichiers suivis qui ont été supprimés de ce répertoire, afin que l’index reflète ces suppressions.
Cette sélection plus restreinte est utile lorsque des modifications sans rapport se trouvent ailleurs dans l’arborescence de travail. Avant de lancer la commande, vérifiez que le chemin désigne le répertoire voulu ; git add enregistre les modifications sélectionnées dans l’index, sans créer de copie séparée du répertoire. Pour ne mettre en staging qu’un seul fichier, indiquez son chemin à la place.
Gérer les fichiers ignorés
Un fichier .gitignore indique à Git quels chemins non suivis exclure du staging ordinaire. Par exemple, un motif comme *.log peut empêcher les fichiers journaux générés d’être inclus par git add -A, git add . ou une commande de staging par répertoire. Les règles d’exclusion sont utiles pour les fichiers de compilation, les paramètres locaux et les autres fichiers qui ne doivent pas entrer dans les commits.
Si vous souhaitez suivre un fichier précis qui est ignoré, vérifiez d’abord pourquoi il l’est, puis mettez délibérément ce chemin en staging avec git add -f path/to/file. L’option de forçage contourne les règles d’exclusion pour le chemin indiqué. Ne l’utilisez que si le fichier a sa place dans le dépôt : forcer l’ajout de fichiers générés ou privés risque d’y exposer du contenu indésirable. Ajouter un motif à .gitignore ne supprime pas non plus un fichier que Git suit déjà.
Vérifier les modifications en staging avant de créer un commit
Après le staging, exécutez git status pour voir quels chemins sont en staging et s’il reste d’autres modifications non indexées. Pour un affichage concis, git status --short indique les chemins en staging dans la première colonne d’état et les modifications non indexées dans la seconde. Avant de créer un commit, examinez la liste, surtout après un staging à l’échelle du dépôt, et vérifiez qu’aucun fichier ignoré ou sans rapport n’a été inclus.
Le staging ne fait que préparer un commit. Un commit enregistre l’instantané de l’index dans l’historique local du dépôt ; le push est une opération distincte qui envoie des commits vers un dépôt distant. Vous pouvez mettre des fichiers en staging de manière récursive sans créer de commit ni effectuer de push, puis modifier l’index en sélectionnant les chemins souhaités avant le commit.