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?

WolleTD
la source

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.

Chris
la source
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

Carlos Heuberger
la source
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é.

jcvalverde
la source
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