2009-07-15 5 views
2

Nous avons un référentiel qui n'a qu'une branche principale (pour les besoins de cette discussion). D'une manière ou d'une autre, nous sommes dans une situation où un développeur a fusionné son maître local et a poussé et réussi à perdre d'autres commits.Commit Git trouvé dans le maître, non affiché lors de l'affichage du journal d'un fichier spécifique

La situation est la suivante: pour quelques validations, si nous exécutons git log à partir de la racine du projet, il affiche la validation. Si nous choisissons l'un de ces fichiers et que nous exécutons git log, il ne montre pas la validation dans le journal. Les changements dans ce commit ne sont pas reflétés dans une caisse de la tête non plus.

Est-ce que quelqu'un a des idées sur comment cette situation peut se produire et comment pouvons-nous empêcher que cela se reproduise?

+0

Pouvez-vous voir les commits perdus de la fusion si vous faites «git log --follow FILE»? Cela m'est arrivé et le fichier n'a pas été renommé. –

Répondre

6

Cela ressemble à peut-être les modifications apportées aux fichiers où perdu dans la fusion locale effectuée par le développeur, éventuellement lors de la résolution des conflits avant de valider la fusion.

Vous devriez essayer cette commande dans le répertoire racine du projet:

git log --stat -c 

Regardez quels fichiers ont été modifiés dans chaque validation, et de vérifier si tous ces changements sont inclus dans la fusion.

2

Si vous exécutez

$ git log file 

il afficherait toutes les livraisons à partir de la branche actuelle (qui peut être différent: sortie vérifier « branche git » des deux sont sur la même branche), mais seulement les commits qui avoir des changements qui affectent le chemin donné. Même si vous n'avez pas d'autres branches, vous pourriez être sur détaché HEAD i.e sur une branche sans nom.

Cochez également "git show" ou "git whatchanged" (ou "git show master") si les fichiers sont vraiment modifiés.
Utilisez "git show --cc" ou "git show --raw --abbrev" si vous voulez vérifier la fusion. Pour la récupération, vous pouvez utiliser "git reflog"/"git log -g".

Questions connexes