Je suis assez nouveau dans git. Récemment, je travaille sur un projet, j'ai mis à jour certains fichiers localement et mis à jour des fichiers validés, j'ai essayé de pousser mais le référentiel distant avait un fichier mis à jour,
README.md
que je n'avais pas. J'ai donc récupéré en exécutant cette ligne,
git fetch git checkout origin/client --README.md git add README.md git commit -m"new Commit" git push
Alors maintenant, j'ai perdu mes fichiers mis à jour en local et remplacé par d'anciens fichiers du référentiel distant. Que puis-je faire maintenant pour récupérer mes fichiers mis à jour localement?
3 Réponses :
Donc, je suppose que vous aviez, dans votre copie de travail locale, un fichier nommé README.md , qui ne faisait pas partie du référentiel, lorsque vous le git clonez la première fois.
À un moment donné, quelqu'un a ajouté le fichier au référentiel origin , et vous deviez donc le fusionner dans votre historique de travail, pour empêcher commit erreurs de code> / push . Vous git fetch le fichier à partir du référentiel, et maintenant, effectivement, vous avez un remplacement du contenu de votre README.md local, selon checkout documentation :
Met à jour les fichiers de l'arborescence de travail pour qu'ils correspondent à la version de l'index ou de l'arborescence spécifiée.
Ensuite, vous avez validé la nouvelle version, qui est identique à la version d'origine que vous récupérez et récupérez. Ensuite, vous git push à l'origine.
À ce stade, toutes les modifications de votre branche locale se trouvent dans le référentiel d'origine, et le fichier README.md est le même qu'il était à l'origine lorsque vous récupérez.
Comment récupérer ma copie locale?
Cela dépend. Si vous avez créé un commit local que vous vouliez pousser avant la récupération, essayez de trouver le SHA de ce commit et git checkout le fichier de ce commit. Ensuite, créez un nouveau commit et poussez-le, si vous le pensez.
Sinon, j'ai besoin d'en savoir plus sur ce que vous avez fait avant la récupération.
Tout d'abord, permettez-moi de commencer par dire que vous ne devriez pas obtenir les modifications apportées à un fichier à partir d'un dépôt distant en faisant:
git push origin client
à moins que vous ne souhaitiez écraser votre copie du fichier par celui qui provenait du référentiel distant. Conceptuellement, c'est l'équivalent de résoudre un conflit de fusion en choisissant leur côté pour toutes les différences.
La bonne façon de incorporer les modifications d'un dépôt distant est en faisant:
git pull --rebase origin client
Allons-y, si vous aviez validé vos modifications localement et après un push et le dépôt distant l'a refusé, c'est parce que les fichiers étaient en conflit, une chose à faire dans cette situation est de mettre à jour votre branche locale puis de fusionner votre branche avec la branche distante.
git log
Après cela, s'il y a un conflit, résolvez et relancez vos modifications, car votre branche sera en ligne avec votre branche distante et la branche distante vous permettra de pousser .
Si vous avez perdu vos modifications, utilisez la commande
git pull //updating your branch git merge branchname //merge your branch
et vérifiez si votre commit est là, si vous le trouvez, réinitialisez-le simplement au l'état de ce commit et tout ce qui se passe depuis sa chronologie sera annulé
Veuillez mettre à jour votre question pour clarifier: quels fichiers / changements locaux avez-vous "perdus"? Étaient-ils déjà enregistrés et engagés? Avez-vous déjà essayé de les restaurer? Ces points sont pertinents pour répondre à votre question, mais n'y sont pas décrits.
d'accord, je modifie ma question maintenant