Réponses:
Fournissez un chemin (myfolder dans ce cas) et exécutez simplement:
git diff myfolder/
git diff -- myfolder
pour minimiser l'ambiguïté de git. La notation générale pour git diff (et de nombreuses commandes git) est git diff [commit-ish] -- [path]
où commit-ish prend par défaut HEAD (où vous en êtes maintenant) et par [path]
défaut le répertoire racine de git, mais peut être n'importe quoi par rapport à votre répertoire actuel. Sans le --
, git devinera ce que vous voulez dire, [commit-ish]
ou [path]
. Dans certains cas, cela amène git à dire que la notation est «ambiguë». Si je me souviens bien.
git diff master..develop myfolder/
lesquelles vous essayez de faire des différences, comme @CrandellWS l'a dit dans le commentaire sur la question d'origine. Le statut Git vous montrera les modifications si c'est ce que vous recherchez.
Si vous comparez différentes branches, vous devez utiliser --
pour séparer une révision Git d'un chemin de système de fichiers. Par exemple, avec deux succursales locales master
et bryan-working
:
$ git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/
Ou d'une succursale locale à une télécommande:
$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/
Vous devriez prendre l'habitude de consulter la documentation pour des trucs comme ça. C'est très utile et améliorera vos compétences très rapidement. Voici la partie pertinente lorsque vous faitesgit help diff
git diff [options] [--no-index] [--] <path> <path>
Les deux <path>
sont ce dont vous avez besoin pour changer les répertoires en question.
Ajoutez Beyond Compare comme outil de difftool dans Git et ajoutez un alias pour diffdir comme:
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
Obtenez le gitdiff comme:
git diffdir 4bc7ba80edf6 7f566710c7
Référence: Comparez des répertoires entiers avec difftool + Beyond Compare
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
place
--no-symlinks
option pour que la commande se litgit difftool --dir-diff --no-symlinks
Non seulement vous pouvez ajouter un chemin, mais vous pouvez ajouter git diff --relative
pour obtenir un résultat relatif à ce dossier.
git -C a/folder diff --relative
Et avec Git 2.28 (Q3 2020), les commandes de la diff
famille " " ont appris à respecter la diff.relative
variable de configuration " ".
Voir commit c28ded8 (22 mai 2020) de Laurent Arnoud ( spk
) .
(Fusionné par Junio C Hamano - gitster
- dans commit e34df9a , 02 juin 2020)
diff
: ajouter une option de configurationrelative
Signé par: Laurent Arnoud
Reconnu par: Đoàn Trần Công DanhL'
diff.relative
option booléenne définie surtrue
affiche uniquement les changements dans le répertoire courant / la valeur spécifiée par l'path
argument de l'relative
option et affiche les chemins relatifs au répertoire susmentionné.Apprenez
--no-relative
à remplacer plus tôt--relative
Ajouter pour la documentation des options git-format-patch (1)
--relative
et--no-relative
La documentation comprend désormais :
diff.relative
:S'il est défini sur «
true
», «git diff
» n'affiche pas les modifications en dehors du répertoire et affiche les noms de chemin relatifs au répertoire courant.
Si vous souhaitez exclure les sous-répertoires, vous pouvez utiliser
git diff <ref1>..<ref2> -- $(git diff <ref1>..<ref2> --name-only | grep -v /)
Pour utiliser Beyond Compare comme outil de comparaison pour les différences de répertoires, n'oubliez pas d'activer les liens symboliques comme suit:
Dans une vue de comparaison de dossier → Règles (icône d'arbitre):
Et puis, activez les liens symboliques suivants et mettez à jour les paramètres de session par défaut:
OU,
configurez l'alias comme ceci:
git config --global alias.diffdir "difftool --dir-diff --tool=bc3 --no-prompt --no-symlinks"
Notez que dans les deux cas, toutes les modifications apportées au côté (gauche ou droit) faisant référence à l'arbre de travail actuel sont conservées.
git diff master..yourbranch path/to/folder