Essayer de récupérer des fichiers de mon dépôt Github: "refuser de fusionner des histoires sans rapport"

j'apprends le git, et je suis le git community book.

auparavant (il y a longtemps) j'ai fait un dépôt public sur Github, avec quelques fichiers. Maintenant, j'ai mis en place un dépôt Git local sur mon ordinateur actuel, et j'ai engagé des fichiers. Puis j'ai ajouté une télécommande pointant vers ma page Github:

[[email protected] c]# git remote add learnc https://github.com/michaelklachko/Learning-C

Qui semblait être un succès:

[[email protected] c]# git remote show learnc
* remote learnc
  Fetch URL: https://github.com/michaelklachko/Learning-C
  Push  URL: https://github.com/michaelklachko/Learning-C
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (local out of date)

maintenant je veux télécharger les fichiers à partir de mon github repo à mon ordinateur. J'ai fait ceci:

[[email protected] c]# git fetch learnc
[[email protected] c]# git merge learnc/master
warning: refname 'learnc/master' is ambiguous.
Already up-to-date.

cependant, je ne vois aucun nouveau fichier dans mon répertoire local. Comment puis-je les obtenir?

j'ai aussi essayé de le faire:

[[email protected] c]# git pull learnc master
From https://github.com/michaelklachko/Learning-C
 * branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

BTW, localement, je suis sur la branche master (il n'y a pas d'autres branches):

[[email protected] c]# git status
On branch master
nothing to commit, working directory clean
92
demandé sur MichaelSB 2016-07-08 00:33:49
la source

5 ответов

Essayer --allow-unrelated-histories

comme max630 commenté, ou comme expliqué ici Git refusant de fusionner des histoires sans rapport

202
répondu Nevermore 2017-05-23 14:47:28
la source
git checkout master
git merge origin/master --allow-unrelated-histories

résoudre un conflit, puis

git add -A .
git commit -m "Upload"
git push
66
répondu Do Nhu Vy 2016-12-04 17:59:10
la source

alors que je suis tout à fait pour débloquer les problèmes de travail des gens, Je ne pense pas que "push --force" ou "--allow_unrelated_histories" devraient être enseignés aux nouveaux utilisateurs en tant que solutions générales parce qu'ils peuvent causer des dégâts réels à un dépôt quand on les utilise sans comprendre pourquoi les choses ne fonctionnent pas en premier lieu.

quand vous avez une situation comme celle-ci où vous avez commencé avec un dépôt local, et que vous voulez faire une télécommande sur GitHub pour partager votre travail, il y a quelque chose à surveiller.

lorsque vous créez le nouveau dépôt en ligne, il y a une option "Initialize this repository with a README". Si vous lisez les petits caractères, il est dit "Ignorer cette étape si vous importez un référentiel existant."

vous avez peut-être coché cette case. Ou de la même façon, vous avez fait un add/commit en ligne avant de tenter une première poussée. Ce qui se passe, c'est que vous créez une histoire unique de commit à chaque endroit et ils ne peuvent pas être réconciliés sans allocation spéciale mentionnée dans la réponse de Nevermore (parce que git ne veut pas que vous opériez de cette façon). Vous pouvez suivre Certains des conseils mentionnés ici, ou plus simplement ne pas vérifier cette option la prochaine fois que vous voulez lier certains fichiers locaux à une nouvelle télécommande; garder la télécommande propre pour cette poussée initiale.

référence: ma première expérience avec Git + hub a été de rencontrer ce même problème et de faire beaucoup d'apprentissage pour comprendre ce qui s'est passé et pourquoi.

26
répondu BigJMoney 2017-05-26 23:57:22
la source

S'il n'y a pas d'historique substantiel à une extrémité (aka si c'est juste un README commit unique sur l'extrémité github), je trouve souvent plus facile de copier manuellement le readme à mon repo local et faire un git push -f pour faire de ma version le nouveau root commit.

je trouve que c'est un peu moins compliqué, ne nécessite pas de se souvenir d'un drapeau obscur, et garde l'histoire un peu plus propre.

10
répondu captncraig 2017-05-05 00:24:23
la source

sur votre branche-dites maître, tirez et permettez des histoires sans rapport

git pull origin master --allow-unrelated-histories

travaillait pour moi.

2
répondu Edgar256 2018-08-27 11:23:29
la source

Autres questions sur git github git-pull git-fetch