Comment lister les fichiers modifiés par git pull / git merge?


5

Dans l'un de nos projets, MysQL-Dumps est synchronisé avec git. Un fichier pour chaque table de la base de données. Après avoir extrait / fusionné, les dumps sont importés dans la base de données locale avec un hook. Le problème est maintenant, je dois trouver tous les dumps de table qui ont été modifiés avec le pull pour importer uniquement ceux-ci. Comment puis-je obtenir le hook post-fusion de savoir quels fichiers ont changé? Ce n'est peut-être pas seulement un commit avant d'être fusionné, en général, il y a plus de commits.

Comment puis-je obtenir une liste de fichiers modifiés?

Réponses:


5

git diff --name-only SHA1 SHA2

Utilisez git logpour obtenir les identifiants de commit git. Utilisez juste git diff SHAxsi vous voulez juste diff contre la dernière tête que vous avez tirée.

Avant de git pullfaire git logou git statuspour obtenir le SHAx. Vous pouvez faire git fetchau lieu de tirer et faire un journal et diff avant de fusionner.


2
Oui, SHA1 est ma tête, mais comment puis-je obtenir le bon SHA2?
WolleTD

2
Vous pouvez probablement expliquer votre réponse et l'articuler avec une description de ce que vous proposez.
Sékhemty

Cela n'aide pas vraiment quand vous n'avez pas obtenu le commit avant de tirer
Neil Neyman

3

Le moyen le plus simple que j'ai trouvé est

git diff --name-only HEAD@{0} HEAD@{1}

puisque HEAD@{n}signifie la n-ème valeur précédente deHEAD


2

J'ai utilisé git reflogjuste après avoir git pullobtenu quelque chose comme:

SHA1 HEAD@{0}: pull: Fast-forward
SHA2 HEAD@{1}: checkout: moving from somewhere to anotherplace

la SHA juste après la lecture "Tirer: Avance rapide" est celle où vous vous trouviez avant la traction.

Après cela, j’ai utilisé la git diff --name-only SHA2réponse de l’autre réponse, qui vous donnera une liste des fichiers qui ont été modifiés à partir de cette validation en votre état actuel.

Je ne suis pas tout à fait sûr de savoir comment cela fonctionne pour les tracés avec beaucoup de modifications et de fusions, mais pour une simple avance rapide, cela a très bien fonctionné.


en fait HEAD@{0}(ou celui qui lit "pull: Fast-Forward") est le commit réel - après le pull - et non celui avant le pull!
Carlos Heuberger
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.