Sfortunatamente, non c'è. Tuttavia, esiste una soluzione alternativa.
Git ti consente di filtrare i file prima della stadiazione (e prima del checkout), se necessario. Puoi agganciarti proprio lì. Vedi la sezione filtro nei documenti
Ad esempio, diciamo, tutti i file .txt potrebbero non contenere la parola donotcommit . Per prima cosa, creiamo il filtro in .git/config o nel tuo file di configurazione globale:
[filter "donotcommit"]
clean = bash -c 'tee >(cat) | grep donotcommit -qi && exit 1 || exit 0'
smudge = cat
required
Il filtro pulito viene eseguito su add , il filtro sfumino al momento del pagamento. required dice a git che ogni volta che questo comando fallisce, il file è in cattivo stato e non può essere aggiunto. Il comando riceve il contenuto del file inviato allo stdin, e poiché si tratta di un filtro e di ciò che viene aggiunto viene aggiunto come contenuto del file, dobbiamo assicurarci di passare l'intero file, questo è quanto tee >(cat) in clean e il cat in smudge è per. La parte | grep donotcommit -q && exit 1 || exit 0 deve essere chiara: cerca donotcommit (maiuscole / minuscole), se trovato, esci con un errore (1), altrimenti esci pulito (0).
Quindi, registra questo filtro per i file txt nel repository .gitattributes file
*.txt filter=donotcommit
Risultato:
C:\dev\test>echo Hello World > test.txt
C:\dev\test>git add test.txt
C:\dev\test>echo Hello World [DONOTCOMMIT] > test.txt
C:\dev\test>git add test.txt
error: external filter 'bash -c 'tee >(cat) | grep donotcommit -qi && exit 1 || exit 0'' failed 1
error: external filter 'bash -c 'tee >(cat) | grep donotcommit -qi && exit 1 || exit 0'' failed
fatal: test.txt: clean filter 'donotcommit' failed
C:\dev\test>