web-dev-qa-db-fra.com

Les fichiers ne sont pas mis à jour à l'aide de 'git pull'

J'utilise Git pour coopérer avec d'autres utilisateurs, mais aujourd'hui, je ne peux pas obtenir la dernière modification de certains fichiers à l'aide de "git pull ", et je ne vois pas les modifications dans" git log ".

Quel pourrait être le problème?

16
cao lei

ce qui a fonctionné pour moi,

  1. retirer .git dossier
  2. copie .git d'un autre dépôt
  3. maintenant git checkout

Avant de retirer, vous pouvez essayer

git fetch --all 
git reset --hard Origin/master

BONNE CHANCE

16
ganesh

Ce qui a fonctionné pour moi,

git reset --hard Origin/master

Cela m'a montré que certains noms de fichiers étaient trop longs pour que git puisse les retirer de mon référentiel et donc le décalage et les builds incorrects.

J'ai donc couru suivre pour corriger et refaire une réinitialisation matérielle.

git config --system core.longpaths true

Heureusement, cela a fonctionné.

6
Dish

Dans mon cas, le problème était que j'avais un index.lock fichier dans mon .git dossier. Je l'ai enlevé et j'ai tiré.

6
Alwyn Schoeman

Vérifiez votre succursale actuelle.

git status
git branch

Si vous n'êtes pas dans une branche, vous êtes dans un détaché HEAD et git pull ne fusionnerait rien.

git log --all --branches

Cette git log vous aidera à voir s'il y a de nouveaux commits sur les branches récupérées (c'est-à-dire les branches de suivi à distance ).
J'utilise cela git log alias pour afficher ces validations sous forme de graphique.

3
VonC

Vous pourriez avoir une fusion inachevée qui empêche la traction. Vérifiez si vous avez un commit en cours.

3
Lucas Czekaj

Je voulais juste ajouter un autre cas où cela pourrait arriver. J'utilisais une caisse clairsemée. Pour une raison quelconque, j'avais un répertoire dans mon arbre de travail que je pensais être inclus dans la caisse clairsemée (je pensais qu'il était répertorié dans .git/info/sparse-checkout) mais pas (je l'avais supprimé de .git/info/sparse-checkout pour une raison que j'oublie maintenant.) Il était donc simplement ignoré par pull ou checkout ou reset ou toute autre commande. C'était très déroutant jusqu'à ce que je commence à répliquer la configuration de caisse clairsemée dans un nouveau clone frais et que je réalise l'erreur.

Cela ne vous arriverait que si vous utilisez une caisse clairsemée. Si vous n'utilisez pas une caisse clairsemée, cela ne pourrait pas arriver. (Vérifiez git config pour voir si sparseCheckout est activé, et vérifiez l'existence de .git/info/sparse-checkout, mais vous sauriez si vous faisiez cela car je pense qu'il doit être configuré manuellement par l'utilisateur de toute façon. ) (Google si vous êtes curieux de savoir ce que c'est - c'est juste un mécanisme simple pour omettre des fichiers et des répertoires d'une caisse qui seraient autrement suivis/extraits/récupérés, etc.)

1
Reed Hedges

Il y a 2 sceanrios possibles:
1. Si vous avez un compte dans Bitbucket, gitlab et etc.
Vous devrez peut-être d'abord vous synchroniser avec votre répertoire fork, puis effectuer git pull sur votre branche locale. Fondamentalement, vous devez rebaser votre copie fork pour vous synchroniser avec le maître distant et effectuer une extraction git dans votre copie locale.
2. Essayez simplement de rebaser votre copie de travail locale pour qu'elle soit synchronisée avec le maître distant.

0
Vinod Kumar