Cette note fait partie de la série « Trucs et astuces pour la CLI » .

Filtrer des fichiers avec des patterns

Les commandes qui acceptent des fichiers du dépôt supportent une notation permettant de les filtrer avec des patterns.

Pour cela, au lieu de lister les fichiers manuellement ou avec un glob pattern Bash, on peut donner : suivi d'un pattern du chemin complet.
En ajoutant un ! (ou la notation longue (exclude)) après le :, on réalise une exclusion.

Quelques exemples :

# Affiche l'historique des changements de tous les fichiers `Cargo.toml` du dépôt :
git log -p  ':*/Cargo.toml'

# Exclus l'affichage des changements de tous les fichiers dont le chemin termine par `.lock`:
git show ':!*.lock'
# Même chose en version longue (`(exclude)` au lieu de `!`).
git show ':(exclude)*.lock'

# Fonctionne également avec git diff:
git diff ':!*.lock'

# Ou encore avec git grep:
git grep -w clap ':*/Cargo.toml'

Renommages dans l'historique d'un fichier

On peut utiliser l'option --follow pour suivre les renommages d'un fichier dans le log de ses changements.

git log --follow -- path/to/file

Patchs

La sortie standard de git diff peut simplement être utilisée pour créer un fichier de patch.

# Crée un patch avec le diff actuel :
git diff > file.patch

# Applique les changements du patch dans le répertoire de travail :
git apply file.patch

# Crée un patch avec uniquement les changements du fichier README.md :
git diff README.md > readme.patch