2011-04-22 3 views

Répondre

2

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

0

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é. :(

+0

J'essaie juste d'ignorer certains fichiers qui pourraient être différents avec la commande diff. –

1

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"