Essayer de retirer des fichiers de mon référentiel Github: «refuser de fusionner des historiques non liés»

J’apprends git et je suis le livre de la communauté Git.

Auparavant (il y a longtemps), j’ai créé un repository public sur Github, avec certains fichiers. Maintenant, je mets en place un référentiel Git local sur mon ordinateur actuel et valide certains fichiers. Ensuite, j’ai ajouté une télécommande pointant vers ma page Github:

[root@osboxes c]# git remote add learnc https://github.com/michaelklachko/Learning-C 

Cela semblait être un succès:

 [root@osboxes 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 de mon repository Github sur mon ordinateur. J’ai fait ça:

 [root@osboxes c]# git fetch learnc [root@osboxes 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 faire ça:

 [root@osboxes 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 twig principale (il n’y a pas d’autres twigs):

 [root@osboxes c]# git status On branch master nothing to commit, working directory clean 

Try --allow-unrelated-histories

Comme Max630 a commenté, ou comme expliqué ici Git refusant de fusionner des histoires sans rapport

 git checkout master git merge origin/master --allow-unrelated-histories 

Résoudre les conflits, puis

 git add -A . git commit -m "Upload" git push 

Bien que je sois tout à fait prêt à débloquer les problèmes de travail des utilisateurs, 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. sans comprendre pourquoi les choses ne fonctionnent pas en premier lieu.

Lorsque vous avez une situation comme celle où vous avez commencé avec un référentiel local et que vous souhaitez créer une télécommande sur GitHub pour partager votre travail, il y a quelque chose à surveiller.

Lorsque vous créez le nouveau référentiel en ligne, il existe une option “Initialiser ce référentiel avec un README”. Si vous lisez les petits caractères, le message “Ignorez cette étape si vous importez un référentiel existant”.

Vous avez peut-être coché cette case. Ou de même, vous avez effectué un ajout / validation en ligne avant de tenter une première tentative. Qu’est-ce qui se passe est que vous créez un historique de validation unique à chaque endroit et ils ne peuvent pas être réconciliés sans l’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 cocher cette option la prochaine fois que vous souhaitez lier des fichiers locaux à une toute 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 faire face à ce même problème et d’apprendre à comprendre ce qui s’était passé et pourquoi.

S’il n’y a pas d’historique substantiel à une extrémité (aka s’il ne s’agit que d’un seul readme commit à la fin du github), je trouve souvent plus facile de copier manuellement le readme dans mon repo local et de faire un git push -f pour ma version le nouveau commit root

Je trouve que c’est un peu moins compliqué, ne nécessite pas de mémoriser un drapeau obscur et garde l’histoire un peu plus propre.

Sur votre twig – dites master, tirez et autorisez des histoires sans rapport

 git pull origin master --allow-unrelated-histories 

Travaillé pour moi