Existe-t-il un moyen d'ignorer un chemin (s) en faisant git diff?git diff branch --nom-statut --ignore
tels que git branche diff --name-status = --ignore ce/chemin
Existe-t-il un moyen d'ignorer un chemin (s) en faisant git diff?git diff branch --nom-statut --ignore
tels que git branche diff --name-status = --ignore ce/chemin
C'est un peu un hack mais vous pouvez le faire
git diff banch --name-status | grep -v this/path
Pas tout à fait git, mais fait le travail
Vous pouvez ajouter les chemins que vous ne se soucient pas de votre fichier .gitignore.
EDIT:. Vous pouvez utiliser git diff files/you/care/about
pour voir les diffs qui vous intéressent
Par exemple, si git status
montre qu'un groupe de fichiers sont modifiés:
modified: foo/bar
modified: foo/baz
modified: some/more/stuff
modified: and/some/more
vous pouvez utiliser git diff foo
juste regardez les changements dans le répertoire foo
, ou git diff some/more/stuff and/some/more
pour regarder tout sauf foo
.
Ce sera bien si vous voulez regarder les diffs pour quelques fichiers, mais ne fonctionnera pas si bien si vous voulez regarder tout sauf un ou deux fichiers. Je ne pense pas qu'il existe un moyen de dire git diff
d'utiliser une négation des fichiers que vous spécifiez.
Une autre alternative serait d'utiliser git add --interactive
, mais c'est probablement un peu lourd pour ce que vous faites.
Il s'avère également que .gitignore
n'ignore pas les fichiers qui sont déjà sous le contrôle de version, de sorte que cette idée n'allait jamais fonctionner. Oubliez je l'ai mentionné. :(
Comme ils disent ~ ici:.. Exclude a directory from git diff, vous pouvez utiliser quelque chose comme ceci:.
git diff --name-only $branch_name | grep -v -E "$excluding" | xargs git diff $branch_name --
... où branch_name
est l'autre branche et excluding
est le modèle que vous souhaitez exclure je ne sais pas si git-di ff finira par fournir un paramètre pour quelque chose comme ça, et je n'ai pas trouvé une telle option dans la documentation de git, donc cette commande est ce que j'utilise pour le moment.
La seule réserve est que vous devez être au niveau supérieur de votre répertoire de travail (soit le même dossier qui contient votre dossier .git) pour que cette commande fonctionne, car les chemins que vous passez à git diff --
à la fin via xargs
sont relatifs à cela.
Vous pouvez en faire un script pour faire le travail pour vous dans votre shell favori, par ex.
#!/bin/zsh
if [[ $# < 2 ]] ; then
echo "Usage: \n gdx [git-diff-params] branch_name extended_reg_exp\n"
echo "\nExamples:\n gdx development jpg \n gdx --name-only master origin/master jar \n gdx development '[a-zA-Z]+'"
exit 1
fi
excluding="[email protected][-1]"
branch_name="[email protected][-2]"
diff_options="[email protected][1,-3]"
## Get a list of all the paths to include
git_paths=$(git diff --name-only $branch_name | grep -v -E "$excluding")
if [[ ${#git_paths} = 0 ]] ; then
#no diffs
exit 0
else
## Escape special characters
git_paths=(${(f)git_paths})
for i in {1..${#git_paths}}
do
git_path=$git_paths[i]
git_path=\"${git_path//\"/\"}\"
git_paths[i]=$git_path
done
## Run the diff
eval "git diff ${=diff_options} $branch_name -- $git_paths"
fi
Cela prend des arguments et imprime l'utilisation et autres joyeusetés. Je l'utilise comme ça:
gdx HEAD^ "*.jar"
J'essaie juste d'ignorer certains fichiers qui pourraient être différents avec la commande diff. –