J'essaie d'exclure un fichier ( db/irrelevant.php
) d'un diff Git. J'ai essayé de mettre un fichier dans le db
sous - répertoire appelé .gitattributes
avec la ligne irrelevant.php -diff
et j'ai également essayé de créer un fichier appelé .git/info/attributes
contenant db/irrelevant.php
.
Dans tous les cas, le db/irrelevant.php
fichier est inclus dans le diff en tant que patch binaire Git. Ce que je veux, c'est que les modifications apportées à ce fichier soient ignorées par la commande diff. Qu'est-ce que je fais mal?
.gitignore
syntaxe du fichier. Par exemple:!*shrinkwrap.yaml
au lieu de:!shrinkwrap.yaml
.git diff -- . ':(exclude)*.min.js' ':(exclude)*.min.css'
git diff -- . ":(exclude)db/irrelevant.php"
(guillemets doubles au lieu de guillemets simples)git diff -- . :(exclude)db/irrelevant.php
Vous pouvez configurer un pilote diff personnalisé avec une commande no op et l'affecter aux fichiers à ignorer.
Créez un pilote diff spécifique au référentiel avec cette commande
ou pour tous vos repos avec
--global
.(S'il
/bin/true
n'existe pas dans MacOS, les alternatives utiliseraient/usr/bin/true
ouecho
).Ensuite, affectez le nouveau pilote diff aux fichiers que vous souhaitez ignorer dans votre
.git/info/attributes
fichier.Si cet état est censé être partagé avec d' autres développeurs , vous pouvez utiliser au
.gitattributes
lieu de.git/info/attributes
partager lagit config
commande avec vos pairs (via un fichier de documentation ou quelque chose).la source
[diff "nodiff"]
`command = / bin / true` et j'ai ensuite créé un fichier appelé .git / info / attributs dans lesquels j'ai ajouté:irrelevant.php diff=nodiff
git diff --stat
. Dans ce cas, on pourrait utilisergit diff ... | diffstat
comme solution de contournement.--no-ext-diff
Vous pouvez également utiliser filterdiff programme de la patchutils collection de programme visant à exclure certaines parties d'une diff. Par exemple:
la source
-p
, à partir de la page de manuel (1), est "-pn, --strip-match = n Lors de la correspondance, ignorez les n premiers composants du chemin d'accès." Il m'a fallu un certain temps pour attraper qui-p 1
enlevait ladb
pièce du chemin du PO. Si vous souhaitez simplement spécifier un nom de fichier et ignorer toutes les possibilités de chemin / répertoire, vous pouvez utiliser-p 99
.Cette méthode est plus courte que les réponses acceptées.
Pour plus d'informations sur les différentes possibilités d'inclusion / exclusion, lisez cet autre article
la source
Cette solution en ligne ne nécessite aucun autre utilitaire / téléchargement:
Où
file/to/exclude.txt
est le nom du fichier que vous souhaitez exclure, bien sûr.Edit: crédit ksenzee pour la correction des fichiers supprimés cassant le diff.
la source
git diff --stat master
sans grand succès - pourriez-vous m'aider?Vraiment une bonne réponse de KurzedMetal pour ce que je devais faire, qui était de voir que le fichier avait changé, mais pas de générer le diff, ce qui aurait pu être énorme, dans mon cas.
Mais un de mes collègues a suggéré une approche encore plus simple et qui a fonctionné pour moi:
l'ajout d'un
.gitattributes
fichier dans le répertoire où le fichier à ignorergit diff
réside avec le contenu suivant:file-not-to-diff.bin -diff
Cela permet toujours de
git status
"voir" si le fichier a changé.git diff
verra également que le fichier a changé, mais il ne générera pas le fichierdiff
.Cette
.bin
extension du fichier dans l'exemple était délibérée. Je me rends compte que c'est le comportement par défaut de git pour les fichiers binaires, et qu'il ne nécessite pas de manipulation spéciale avec.gitattributes
. Mais dans mon cas, ces fichiers ont été reconnus comme des fichiers texte par git et l'utilitaire "file" et cela a fait l'affaire.la source
Réponse la plus simple
git diff ':!db/irrelevant.php'
C'est juste
':!<path to file>'
après votre commande diff. La commande diff peut être aussi compliquée que vous le souhaitez, et vous pouvez utiliser des caractères génériques comme*.min.js
ou ajouter plusieurs exclusions (séparez les blocs entre les espaces) si vous le souhaitez.la source
Par rapport au répertoire racine git
git diff
accepte une exclusion facultativeVous voudrez peut-être ajouter des caractères génériques
Cibler des types de fichiers spécifiques
Ou déposez un petit script pour vos fichiers dot
Tels que
.bash_profile
ou.zshrc
la source
git diff --staged
J'espère que cela vous aidera.C'est très simple, vous pouvez exclure ce que vous voulez en utilisant les commandes Unix standard, ces commandes sont disponibles sous git bash même sous environnement Windows. L'exemple ci-dessous montre comment exclure diff pour les fichiers pom.xml, vérifiez d'abord diff pour ne masteriser que les noms de fichiers, puis utilisez 'grep -v' pour exclure les fichiers dont vous ne voulez pas, puis réexécutez diff pour master avec une liste pré-préparée:
la source
similaire à la solution de Ben Roux , mais partageant quand même:
ou, si les modifications ont déjà été validées localement:
Exemples:
la source
Je fais ce qui suit:
Je sais que ce n'est pas une solution élégante et qu'elle ne peut parfois pas être utilisée (par exemple, si vous avez déjà mis en scène des choses), mais elle fait l'affaire sans avoir à taper une commande compliquée
la source
Si vous voulez faire cela uniquement pour inspecter visuellement le diff, un outil de diff visuel (comme Meld ) vous permettra de le faire avec une courte commande facile à retenir.
Tout d'abord, configurez un outil de différenciation si vous ne l'avez pas déjà fait.
Ensuite, vous pouvez exécuter un répertoire diff.
Vous pourrez parcourir les différences (par fichier) dans Meld (ou l'outil de votre choix). N'ouvrez simplement pas le fichier que vous souhaitez ignorer.
la source