Je viens avec un problème à propos de Git Push.
Cela a fonctionné avec succès auparavant, mais il a échoué cette fois. Au début, je suis dans mon maître MINGW64 /d/javasoft/Apache-Tomcat-7.0.70/webapps/MyNote (master)
, puis
git remote add Origin
Pour relier mon origine distante, mais il signale que fatal: remote Origin already exists.
git remote rm Origin
(Quelqu'un m'a dit de le faire), et c'est bon.git remote add Origin https://github.com/***/***.git
. C'est bon.git Push -u Origin master
(j’ai essayé git Push Origin master
, mais j’ai perdu mon entier local .git
pour une raison quelconque, alors je suppose que c’est peut-être la première fois que Push, et Je devrais ajouter -u
). MAIS, il alerte error: failed to Push some refs to 'https://github.com/***/***.git'
git pull Origin master
avant d'utiliser Push
, et j'ai fait comme si de rien n'était. MAIS, il a alerté: fatal: refusing to merge unrelated histories
.fatal: Couldn't find remote ref –allow-unrelated-histories
Je ne sais vraiment pas comment faire ... je veux juste pousser ...
Cela ne peut pas être répondu sous peu.
Avertissement : Vous ne devez pas utiliser le --allow-unrelated-histories
drapeau sauf si vous savez ce qu'est une histoire sans rapport et si vous êtes certain d'en avoir besoin. La vérification a été introduite uniquement pour prévenir les catastrophes lorsque des personnes fusionnaient par erreur des projets indépendants.
Autant que je sache, dans votre cas , les événements suivants :
Vous avez cloné un projet à un moment donné 1
, et fait quelques développements pour pointer 2
. Pendant ce temps, le projet a évolué à un moment donné 3
.
Ensuite, pour une raison quelconque, vous avez perdu votre sous-répertoire local .git, qui contenait tout votre historique de 1
à 2
. Vous avez cependant réussi à restaurer l'état actuel.
Mais maintenant, il n’a plus d’histoire, il semble que tout le projet soit sorti de nulle part. Si vous demandez à Git de les fusionner, il ne sera pas en mesure d'indiquer où se trouvent vos modifications. Il peut donc les ajouter à un projet distant. Pour autant que je sache, il ne fera que signaler d'énormes conflits d'ajout/ajout.
Vous devriez maintenant retrouver ce commit 1
de l'historique à distance où vous avez cloné le projet (je suppose que vous n'avez pas tiré après; sinon, vous devriez plutôt rechercher le dernier commit que vous avez tiré). Ensuite, vous devriez modifier votre historique pour qu'il commence à partir du commit 1, puis que Git pourra se fusionner correctement (avec pull par exemple).
Donc, les étapes (en supposant que vous soyez maintenant dans votre commit restauré sans historique):
1
vous avez cloné comme un certain 1?
, basé sur le temps de validation par exemplegit diff _1?_..HEAD
, et lisez attentivement. Assurez-vous que la différence ne contient que les modifications que vous avez effectuées. S'il en contient plus, vous auriez dû choisir un peu faux 1?
et vous devez l’ajuster et répéter cette étape1
. Vous devriez en faire votre parent; faire git --reset --soft _1_
, et alors git commit
.Il semble maintenant que vous ayez cloné à partir de 1
, puis fait un commit avec toutes vos modifications. De toute façon, votre historique intermédiaire est perdu avec votre ancien .git
répertoire, mais vous pouvez maintenant exécuter votre git pull
- il fusionnera correctement.