166 votes

Écraser ma succursale locale avec une succursale distante

J'ai complètement fubar'd ma branche locale, et voudrais recommencer. La version sur le serveur est correcte.

Je ne veux pas recommencer à zéro, j'aimerais utiliser mon histoire locale pour réparer mon énorme casse-tête. (Je peux si je dois le faire)

git fetch branchname, et git pull branchname ne fonctionne pas. Le message que je reçois est "à jour", cependant, ma version locale ne correspond pas à celle du serveur.

git pull origin / branchname me donne une erreur "introuvable".

275voto

knittl Points 64110

Tout d’abord, créez une nouvelle branche à la position actuelle (au cas où vous auriez besoin de votre ancien historique "foiré"):

 git branch fubar-pin
 

mettez à jour votre liste de branches distantes et synchronisez les nouveaux commits:

 git fetch --all
 

puis, réinitialisez votre branche au point où origine / branche pointe sur:

 git reset --hard origin/branch
 

soyez prudent , cela supprimera tout changement de votre arbre de travail !

65voto

Casey Marshall Points 405

Ce que je fais quand je bousille ma branche locale, c’est que je renomme juste ma branche cassée et que je vérifie / branche à nouveau la branche en amont:

 git branch -m branch branch-old
git fetch remote
git checkout -b branch remote/branch
 

Ensuite, si vous êtes certain de ne rien vouloir de votre ancienne branche, supprimez-la:

 git branch -D branch-old
 

Mais d'habitude, je quitte l'ancienne branche localement, au cas où j'aurais quelque chose à l'intérieur.

7voto

hobbs Points 71946

Il y a toujours l'approche "tuez le avec le feu":

 git checkout master # or any branch that isn't the one in question
git branch -D fubar-branch
git checkout -t origin/fubar-branch
 

5voto

Wes Hardaker Points 10426

Votre succursale locale a probablement des modifications dont vous voulez vous débarrasser. Pour ce faire, vous aurez besoin d'utiliser git reset pour réinitialiser le chef de la direction générale à la dernière place que vous divergé à partir de l'amont des pensions de la direction générale. Utiliser git branch -v trouver le sha1 de l'id de l'amont de la branche, et de réinitialiser votre branche de l'aide d' git reset SHA1ID. Ensuite, vous devriez être en mesure de faire une git checkout pour annuler les modifications apportées à gauche dans votre répertoire.

Remarque: toujours faire une sauvegarde jusqu'repo. De cette façon, vous pouvez assurer vous-même il a travaillé tout. Ou si elle n'a pas, vous disposez d'une sauvegarde de revenir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X