web-dev-qa-db-fra.com

git fetch ne met pas à jour mon référentiel local

Ce que je veux:

Mettre à jour toutes les news commits du serveur avec mon référentiel local dans toutes les branches mais ne fusionner aucune branche (il suffit de rejoindre les lignes d'historique).

J'essaye cette commande

git fetch --force --progress --verbose  name@Host:/path/to/repository.git 

Je pensais que cela fonctionnerait bien, car cela montre:

From Host:/path/to/repository
  * branch            HEAD       -> FETCH_HEAD

Mais que signifie cette sortie? Si je vois le journal, il n'a pas été mis à jour. Si je fais un clone depuis le serveur, toutes les nouvelles validations sont là. Alors ... La commande ne fonctionne pas. Ensuite, j'essaie avec une branche qui existe sur le serveur mais pas dans mon référentiel local

git fetch --force --progress --verbose  name@Host:/path/to/repository.git my_branch

Le résultat est:

From Host:/path/to/repository
  * branch            my_branch       -> FETCH_HEAD

Et tout succès ... Même si je ne connais pas toutes les branches et que ma branche a été mise à jour, je veux récupérer ces modifications et voir dans mon journal.

Une idée pour que ça marche?

22
Rodrigo

Lorsque vous récupérez, vous obtenez les branches distantes, mais vous devez toujours fusionner les modifications de la branche distante dans votre branche locale pour voir ces modifications.

Après avoir récupéré, essayez ceci:

git log Origin/yourbranchname | head
git log yourbranchname | head

Voyez-vous la différence?

Maintenant, faites:

git checkout Origin/yourbranchname -b newbranchname
git log newbranchname

Vous devriez voir des modifications à distance dans le nouveau nom de branche.

Vous pouvez également fusionner ces modifications dans votre branche avec

git checkout yourbranchname
git merge Origin/yourbranchname
31
George Skoptsov

J'ai rencontré ce problème auparavant, la principale raison est que vous n'avez pas configuré le remote.Origin.fetch dans votre configuration locale git.

utilisez la commande ci-dessous pour résoudre votre problème:

git config --local --add remote.Origin.fetch +refs/heads/*:refs/remotes/Origin/*

après cela, lancez 'git fetch Origin', je pense que vous obtiendrez la sortie attendue.

19
kext

git fetch apporte juste les modifications à la copie locale de la branche distante. Si vous souhaitez mettre à jour votre référentiel ou votre branche locale, vous devez suivre le fetch avec un merge, ou bien simplement utiliser git pull pour un coup.

Super SO réponse: https://stackoverflow.com/a/292359/102371

10
John Weldon