$ git checkout master
# remember where the master was referencing to
$ git branch previous_master
# Reset master back to origin/master
$ git reset --hard origin/master
enregistrer quatre frappes - vous n'avez pas besoin des guillemets. Juste: git checkout -B maître d'origine / maître
zumalifeguard
Disons que j'ai commis 2 choses, la première est une fusion avec une branche et la seconde est régulière. Qu'advient-il de la fusion si je retourne à l'origine / au maître?
Utdev
1
Ne devez-vous pas git fetch origin masteravant pour être sûr que origin/masterc'est mis à jour?
pedrozath
Oui, bien sûr, avec toutes les solutions que vous devriez faire en git fetchpremier
KindDragon
29
Je pense que même la réponse de VonC est complexe par rapport à cette option:
git enregistre automatiquement chaque valeur d’un ref (par le biais du reflog). Ainsi, après avoir exécuté cette commande, master@{1}fait référence à la valeur précédente de maître.
La réponse de VonC est correcte, mais elle gaspille du temps en récupérant l'ancienne valeur de master dans le système de fichiers.
Si vous vous souciez d'objets orphelins dans le référentiel, vous pouvez exécuter git gc
@yourfriendzak, j'ai oublié de prendre en compte le fait que vous avez peut-être déjà vérifié le maître avant de mettre à jour le maître. J'ai mis à jour la réponse pour qu'elle soit celle qui devrait fonctionner même dans ce cas également.
Alexander Bird
Cela fonctionne même si vous n'êtes pas sur le maître (comme un état HEAD détaché qui pointe en fait sur l'origine / le sommet). Ensuite, vous pouvez passer la commande maître sans avoir à retourner les anciens fichiers dans le référentiel. Génial!
Andrew Mao
20
Si vous êtes déjà sur mastervous pouvez faire ce qui suit:
git reset --hard origin/master
Il indiquera la masterbranche locale à la télécommande origin/masteret rejetera toute modification dans le répertoire de travail.
Et va supprimer des fichiers! Si vous avez créé / édité des fichiers et que vous avez exécuté un "ajout rapide", cette commande les supprimera. Être averti.
Cheeso
Cette approche est-elle meilleure que git checkout -B master origin/master?
Réponses:
Comme le mentionne la réponse de KindDragon , vous pouvez recréer directement à partir de:
master
origin/master
La
git checkout
page de manuel mentionne:Si
-B
est donné,<new_branch>
est créé s'il n'existe pas; sinon, il est réinitialisé . C’est l’équivalent transactionnel deInitialement suggéré:
Quelque chose comme:
l'étape 2 étant facultative.
la source
Git supporte cette commande:
Vérifiez la
origin/master
branche puis réinitialisezmaster
-la.la source
git fetch origin master
avant pour être sûr queorigin/master
c'est mis à jour?git fetch
premierJe pense que même la réponse de VonC est complexe par rapport à cette option:
git enregistre automatiquement chaque valeur d’un ref (par le biais du reflog). Ainsi, après avoir exécuté cette commande,
master@{1}
fait référence à la valeur précédente de maître.La réponse de VonC est correcte, mais elle gaspille du temps en récupérant l'ancienne valeur de master dans le système de fichiers.
Si vous vous souciez d'objets orphelins dans le référentiel, vous pouvez exécuter
git gc
la source
Already on 'master'
Si vous êtes déjà sur
master
vous pouvez faire ce qui suit:git reset --hard origin/master
Il indiquera la
master
branche locale à la télécommandeorigin/master
et rejetera toute modification dans le répertoire de travail.la source
git checkout -B master origin/master
?