150 votes

Pourquoi Git indique-t-il que ma branche master est "déjà à jour" alors qu'elle ne l'est pas ?

Problème de base

Je viens de supprimer TOUT le code d'un fichier de mon projet et de valider la modification dans mon git local (exprès). J'ai fait

git pull upstream master

pour récupérer et fusionner depuis l'amont (donc, en théorie, le code supprimé devrait être de retour).

Git me dit que tout est à jour.

Tout n'est définitivement PAS à jour -- tout ce code supprimé est toujours supprimé.

Autres informations pertinentes

Je n'ai qu'une seule branche appelée "master".

J'ai récemment mis en place "master" pour suivre l'amont comme ceci :

Branch master configuré pour suivre le branch master distant depuis l'amont.

La commande git branch -vv rendements :

* master 7cfcb29 [upstream/master: ahead 9] deletion test

Pourquoi est-ce que ça arrive ? Je suis sur le point d'envoyer par e-mail à mon chef de projet toutes les modifications que je fais à notre code.

Mise à jour

Je pensais que c'était évident, mais bon, c'est mon objectif :

Obtenir le plus récent du code sur mon système.

Excusez ma colère, mais pourquoi une tâche aussi simple que celle-ci doit-elle être si difficile ?

1voto

BrotherDonkey Points 112

La première réponse est bien meilleure en termes d'étendue et de profondeur des informations données, mais il semble que si vous voulez que votre problème soit résolu presque immédiatement, et que cela ne vous dérange pas de fouler aux pieds certains des principes de base du contrôle de version, vous pourriez ...

  1. Passer au maître

    $ git checkout upstream master
  2. Supprimez votre branche indésirable. (Note : il faut avoir l'option -D, au lieu de l'option normale -d, car votre branche est en avance de plusieurs commits sur le master).

    $ git branch -d <branch_name>
  3. Créer une nouvelle branche

    $ git checkout -b <new_branch_name>

0voto

Jorge Israel Peña Points 12602

Quelqu'un peut me corriger si je me trompe, mais je crois que c'est parce que votre branche est en avance de 9 commits sur la branche master en amont. Lorsque vous effectuez une extraction à partir de la branche distante, vous avez déjà ces modifications, c'est juste que vous les précédez de 9 commits. Cela n'aurait pas de sens que ces anciennes modifications, que vous avez déjà dans votre historique et que vous précédez de 9 commits, remplacent vos nouvelles modifications.

Je pense que si les commits dans la télécommande étaient plus récents puis ils seraient fusionnés (par défaut ; sauf si vous spécifiez --rebase ) à votre branche actuelle.

Comme l'a dit Ryan, je vous suggère de spécifier exactement votre objectif afin que quelqu'un puisse vous aider plus directement.

0voto

user5783745 Points 1214

Juste un petit rappel amical si vous avez des fichiers localement qui ne sont pas dans github et pourtant votre fichier git status dit

Votre branche est à jour avec 'origin/master'. rien à commettre, arbre de travail propre

Cela peut arriver si les fichiers sont dans .gitignore

Essayez de courir

cat .gitignore 

et voir si ces fichiers y apparaissent. Cela expliquerait pourquoi git ne veut pas les déplacer vers le distant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X