Attention :
Tout changement local non engagé dans les fichiers suivis sera perdu.
Tous les fichiers locaux qui sont no suivies par Git ne seront pas affectées.
D'abord, mettez à jour tous les origin/<branch>
réf. au plus récent :
git fetch --all
Sauvegarde de votre branche actuelle (par ex. master
) :
git branch backup-master
Passez à la dernière livraison sur origin/master
et extraire ces fichiers :
git reset --hard origin/master
Explication :
git fetch
télécharge la dernière version à distance sans essayer de fusionner ou de rebaser quoi que ce soit.
git reset
réinitialise la branche principale à ce que vous venez de récupérer. Le site --hard
modifie tous les fichiers de votre arborescence de travail pour qu'ils correspondent à ceux de l'option origin/master
.
Maintenir les commits locaux actuels
[*] : Il convient de noter qu'il est possible de maintenir les commits locaux actuels en créant une branche à partir de master
avant la réinitialisation :
git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/master
Après cela, tous les anciens commits seront conservés dans le fichier new-branch-to-save-current-commits
.
Changements non engagés
Les changements non engagés, cependant (même mis en scène), seront perdus. Assurez-vous de mettre en cache et de commiter tout ce dont vous avez besoin. Pour cela, vous pouvez exécuter ce qui suit :
git stash
Et ensuite pour réappliquer ces changements non engagés :
git stash pop
45 votes
Si quelqu'un qui lit ceci pense qu'il pourrait perdre des fichiers, j'ai été dans cette position et j'ai trouvé que la mémoire tampon de Sublime Text m'a sauvé - si je travaille sur quelque chose, puis que je supprime accidentellement tout en essayant de résoudre un problème similaire à celui-ci ou en utilisant une réponse à cette question et que j'ai eu les fichiers ouverts dans Sublime (ce qui est fort probable), alors les fichiers seront toujours là dans Sublime, soit juste là, soit dans l'historique d'annulation.
297 votes
git reset --hard origin/branch_to_overwrite
4 votes
En gros, ne faites un pull depuis develop qu'après le checkout initial -b. faites votre travail, puis repoussez-le.
4 votes
Réponse courte : supprimer et recréer la branche. 1. Supprimez la branche :
git branch <branch> -D
2. Réinitialisation à un commit antérieur au conflit :git reset <commit> --hard
3. Recréer la branche :git branch <branch>
4. Définissez le suivi sur le serveur :git --set-upstream-to=origin/<branch> <branch> 5. Pull:
git pull``5 votes
Pour changer toutes les terminaisons CRLF en LF, (commencer proprement)
git config core.autocrlf false; git ls-files -z | xargs -0 rm; git checkout .
1 votes
Vous cherchez peut-être cette question à la place : à la place stackoverflow.com/q/1628088/1148030 "Réinitialiser la branche du dépôt local pour qu'elle soit identique à la branche du dépôt distant HEAD" Par exemple, si le dépôt distant a été poussé de force et que vous voulez le retirer et abandonner l'incarnation précédente de la branche que vous avez. (Certaines autres questions pointent vers cette question comme leur duplicata, mais je pense qu'elles devraient pointer vers cette autre question).
0 votes
Supprimez manuellement tous les fichiers et dossiers du référentiel local. Ensuite, exécutez
git checkout <branch> && git add -A . && git reset --hard origin/<branch> && git pull
. Voir stackoverflow.com/a/65239330 .0 votes
Il y a certainement une réponse à cette question car je l'ai fait par accident. Maintenant, plusieurs semaines de travail sont perdues :(
0 votes
Vous pouvez simplement supprimer votre dossier local et le télécharger à nouveau à partir de votre dépôt git en utilisant la méthode suivante
git clone <http://github.com/your_user/your_repository.git>
0 votes
Si vous voulez l'utiliser à l'intérieur d'un script voir ma réponse : stackoverflow.com/questions/1125968/