Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git update-index [--add] [--remove] [--refresh] [--assume-unchanged] <file>...

Descrizione

Il comando git update-index è il plumbing dietro git add. Registra i contenuti dei file nell'index per SHA, gestisce flag come assume-unchanged e skip-worktree e aggiorna i timestamp dell'index. La maggior parte delle operazioni porcelain lo chiama.

Nell'uso quotidiano, git update-index si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Quando usarlo

La maggior parte degli utenti non ne ha mai bisogno direttamente. Ricorri ad esso quando vuoi comportamenti non esposti dal porcelain: marcare un file come assume-unchanged per evitare output rumoroso di status per un file di config che modifichi intenzionalmente localmente; o skip-worktree per scenari simili a sparse-checkout.

Opzioni comuni

OpzioneDescrizione
--addAggiunge file non ancora nell'index.
--removeRimuove file dall'index.
--refreshRefresh delle info di stat senza cambiare contenuto.
--assume-unchangedDice a Git di non controllare questo file per modifiche.
--no-assume-unchangedInverte il flag.
--skip-worktreeFa ignorare a Git le modifiche della working tree.
--chmod=(+|-)xCambia il bit eseguibile.
--cacheinfo <mode> <sha> <path>Inserisce manualmente un'entry nell'index.

Esempi

git update-index --assume-unchanged config/local.yml
# Smette di tracciare modifiche locali a un file di config

git update-index --no-assume-unchanged config/local.yml
# Riprende il tracking normale

git update-index --chmod=+x scripts/deploy.sh
# Marca uno script come eseguibile nell'index

git update-index --refresh
# Refresh delle info di stat; utile dopo aver toccato file

Errori comuni

--assume-unchanged è pensato come ottimizzazione di performance, non come .gitignore per file già tracciati. Se i compagni di team hanno bisogno che il file sia invariato, usa invece un approccio config-template. L'uso improprio causa bug in cui le modifiche tracciate passano inosservate.

Comandi correlati

git add, git rm, git ls-files, git read-tree