Question Montrer quels fichiers ont changé entre deux révisions


Je veux fusionner deux branches qui ont été séparées pendant un moment et je voulais savoir quels fichiers ont été modifiés.

Entré à travers ce lien: http://linux.yyz.us/git-howto.html ce qui était très utile.

Les outils pour comparer les branches que j'ai rencontrées sont:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

Je me demandais s'il y avait quelque chose comme "git status master..branch" pour ne voir que les fichiers qui sont différents entre les deux branches.

Sans créer un nouvel outil, je pense que c'est ce que vous pouvez faire de plus proche maintenant (ce qui bien sûr montrera des répétitions si un fichier a été modifié plus d'une fois):

  • git diff master..branch | grep "^diff"

Je me demandais s'il y avait quelque chose qui me manquait ...


1787
2018-05-05 00:47


origine


Réponses:


Pour comparer la branche actuelle contre master

$ git diff --name-status master

Pour comparer n'importe quelle paire de branches

$ git diff --name-status firstbranch..yourBranchName

Cela devrait faire ce dont vous avez besoin, si je vous comprends bien.


2184
2018-05-05 01:04



Essayer

$ git diff --stat --color master..branchName

Cela vous donnera plus d'informations sur chaque changement, tout en utilisant le même nombre de lignes.

Vous pouvez également inverser les branches pour obtenir une image encore plus claire de la différence si vous fusionniez l'autre:

$ git diff --stat --color branchName..master

354
2018-02-09 19:38



Gardez également à l'esprit que git a une ramification facile et bon marché. Si je pense qu'une fusion peut être problématique, je crée une branche pour la fusion. Donc si master a les changements que je veux fusionner et ba est ma branche qui a besoin du code de maître, je pourrais faire ce qui suit:

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master

Le résultat final est que je dois essayer la fusion sur une branche jetable avant de visser avec ma branche. Si je me suis emmêlé, je peux simplement supprimer le ba-merge branchez et recommencez.


145
2017-10-11 01:22



Si quelqu'un essaie de générer un fichier diff à partir de deux branches:

git diff master..otherbranch > myDiffFile.diff

44
2018-04-03 14:01



Notez que git rend facile d'essayer la fusion et de revenir loin de tout problème si vous n'aimez pas le résultat. Cela pourrait être plus facile que de chercher des problèmes potentiels à l'avance.


30
2018-05-05 00:59



Il y a aussi une méthode basée sur l'interface graphique.

Vous pouvez utiliser gitk.

  1. Courir:

    $ gitk --all
    
  2. Faites un clic droit sur une validation d'une branche et sélectionnez Marquer ce commit dans le menu contextuel.

  3. Faites un clic droit sur une validation d'une autre branche et sélectionnez Diff this -> commit marqué ou Diff marqué commit -> ceci.

Ensuite, il y aura une liste de fichiers modifiés dans le panneau inférieur droit et des détails diff dans le panneau inférieur gauche.


29
2018-06-14 06:01



Une autre option, en utilisant la fusion dans ce cas:

git difftool -d master otherbranch

Cela permet non seulement de voir les différences entre les fichiers, mais fournit également un moyen facile de pointer et de cliquer sur un fichier spécifique.


26
2018-04-24 13:23



Lorsque vous travaillez en collaboration, ou sur plusieurs fonctionnalités à la fois, il est courant que l'amont ou même votre maître contienne des travaux qui ne sont pas inclus dans votre branche, et n'apparaissent pas correctement dans les différences de base.

Si votre Amont peut avoir bougé, vous devriez faire ceci:

git fetch
git diff origin/master...

L'utilisation de git diff master peut inclure ou ne pas inclure les modifications pertinentes.


14
2018-03-24 03:21



Et si vous cherchez des changements seulement parmi certains fichiers, alors:

git diff branch1 branch2 -- myfile1.js myfile2.js

branch1 est facultatif et votre branche actuelle (la branche sur laquelle vous vous trouvez) sera considérée par défaut si branch1 n'est pas fourni. par exemple:

git diff master -- controller/index.js

10
2018-05-16 13:13



Si vous utilisez IntelliJ IDEA, vous pouvez également comparer n'importe quelle branche avec votre branche de travail actuelle. Voir http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 pour plus d'informations. Ceci est disponible dans le Édition gratuite ainsi que.


9
2018-06-06 07:17