J'ai déplacé un fichier en utilisant git mv
. Maintenant, je voudrais faire un diff sur le nouveau fichier pour le comparer avec l'ancien fichier (avec l'ancien nom maintenant inexistant).
Comment puis-je faire cela?
git
diff
file-rename
mv
dr jerry
la source
la source
git diff -- yourRenamedFile
suffira. Voir ma réponse ciRéponses:
Vous devez utiliser -M pour laisser git détecter automatiquement le fichier déplacé en cas de différence. Utiliser tout
git diff
comme knittl mentionné ne fonctionne pas pour moi.Si simplement:
git diff -M
devrait le faire.La documentation de ce commutateur est:
la source
~/.gitconfig
?git diff
. L'exécutiongit diff -M
sur un seul fichier (renommé) ne signale pas un changement de nom.git log --follow -- file_after_move.txt
fonctionne bien. Il montre toute l'histoire, y compris avant le déménagement. Des idées? Je coursgit version 2.11.0.windows.1
.-C
option de détection des copies est utile et similaire. Je l'ai utilisé avec-M
pour regarder un diff où j'avais refactoré un fichier en deux (sans aucun nom correspondant à l'original).En plus de ce que knittl a écrit , vous pouvez toujours utiliser:
où
HEAD:./oldfilename
signifie ancien nom de fichier dans le dernier commit (dans HEAD), par rapport au répertoire courant.Si vous n'avez pas assez de nouveau git, vous devrez utiliser à la place:
la source
git diff 39fa7c77e85c51d43ea0cf30d33aec8721812e9e:./oldfilename newfilename
git diff branch:old/filen.name newfilename
cd
dans le répertoire et ne l'ajoutez pas--
avant lacommit:path
paire. Git semble être très pointilleux avec la syntaxe ici.<commit-ish>:<pathname>
syntaxe est un identifiant d'objet, quelque chose de Git-ish; après que--
Git n'attend que les noms de fichiers.Avec git 2.9 (juin 2016), vous n'aurez plus à en ajouter
-M
.git diff
utilise-M
par défaut.Voir commit 5404c11 , commit 9501d19 , commit a9276a6 , commit f07fc9e , commit 62df1e6 (25 février 2016) par Matthieu Moy (
moy
) .(Fusionné par Junio C Hamano -
gitster
- in commit 5d2a30d , 03 avril 2016)Les nouveaux tests pour cette fonctionnalité sont ici .
la source
git diff -M
active la détection de renommage comme d'autres l'ont dit (et comme @VonC l'a souligné, elle est activée par défaut à partir de git 2.9). Mais si vous avez un grand ensemble de modifications, la détection de changement de nom inexacte peut toujours être désactivée. Git affichera un avertissement comme celui-ci, qui est facile à manquer parmi les différences que vous visualisez:Dans ce cas, définissez l'option de configuration comme suggéré par git, par exemple
et réexécutez votre commande diff.
la source
Pour une raison quelconque, l'utilisation
HEAD:./oldfilename
(ou le chemin absolu) n'a pas fonctionné pour moi, maisHEAD:oldfilename
a fonctionné (merci cmn):HTH
la source
HEAD:./oldfilename
?exécutez simplement
git diff
sans aucun argument, ougit diff -- newfilename
. git est suffisamment intelligent pour comparer les bons fichiers / contenus (c'est-à-dire le contenu original avant le changement de nom avec le contenu modifié après le changement de nom)la source
git mv
ingérer un seul fichier et de comparer ensuite l'état par étapes à une autre branche par ailleurs identique produira le diff "tout a été supprimé et recréé" à moins qu'il ne-M
soit utilisé.