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?
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
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.
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