Écraser mon local succursale de succursale à distance
J'ai complètement fubar mon agence locale, et voudrais recommencer. La version sur le serveur est correct.
Je ne veux pas recommencer, je voudrais utiliser mon histoire locale à fixer mon énorme screwup. (Je peux si je dois le faire.)
git fetch branchname
, et git pull branchname
ne fonctionnent pas. Le message que j'obtiens est "à jour" cependant, ma version locale ne correspond pas à celui du serveur.
git pull origin/branchname
me donne un "pas trouvé" erreur.
Vous devez vous connecter pour publier un commentaire.
tout d'abord, créez une nouvelle branche dans la situation actuelle (dans le cas où vous avez besoin de votre vieux 'foiré' histoire):
mise à jour de votre liste de branches distantes et la synchronisation des nouveaux commits:
puis, réinitialiser votre branche vers le point d'où l'origine ou la direction générale des points à l':
être prudent, cela va supprimer toutes les modifications de votre arbre de travail!
git fetch origin
avant la réinitialisationorigin/branch
. Jamais.refs/*:refs/*
), vous devriez être en mesure de pousser toutes les branches locales sans les nommer explicitement (et aussi de créer les disparus)Ce que je fais quand j'ai gâcher ma section locale est je viens de renommer ma cassé la branche, et le check-out/direction de l'amont de la branche de nouveau:
Alors si vous êtes sûr que vous ne voulez pas quelque chose de votre vieille branche, enlever:
Mais généralement je laisse la vieille branche autour localement, juste au cas où j'avais quelque chose là-bas.
git checkout -b <branch> --track <remote>/<branch>
votre travail tout aussi bien, sans le--track
?branch.autoSetupMerge
(qui, je pense, par défaut à true) rend le--track
implicite. Et, oui, dans tous mes git configurations je n'ai pas besoin explicitement--track
lors d'unecheckout -b
, mais YMMV.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. Utilisationgit branch -v
pour trouver le sha1 de l'id de l'amont de la branche, et de réinitialiser votre branche de l'aidegit reset SHA1ID
. Ensuite, vous devriez être en mesure de faire unegit 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.
C'est pour rétablir toutes vos modifications locales à l'origine de la tête