Comment réinitialiser "master" à "origin/master" ?
Puis-je faire ce qui suit de manière plus simple ?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Puis-je faire ce qui suit de manière plus simple ?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Comme le mentionne la [ réponse ] de KindDragon , vous pouvez recréer master
directement sur origin/master
avec :
git checkout -B master origin/master
La page de manuel de git checkout
mentionne :
Si -B
est donné, <new_branch>
est créé s'il n'existe pas ; autrement, il est réinitialisé. C'est l'équivalent transactionnel de
$ git branch -f <branch> [<start point>]
$ git checkout <branch>
Since Git 2. 23+ (août 2019), puisque [ git checkout
est trop confus ]&3, la nouvelle commande (encore expérimentale) est * git switch
** :
git switch -C master origin/master
C'est-à-dire :
-C <new-branch> --force-create <new-branch>
Similaire à
--create
sauf que si<new-branch>
existe déjà, il sera réinitialisé à<start-point>
.
C'est un raccourci pratique pour :$ git branch -f <new-branch> $ git switch <new-branch>
Originalement suggéré:
Quelque chose comme :
$ 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
avec l'étape 2 étant optionnelle.
Git supporte cette commande :
git checkout -B master origin/master
Vérifiez la branche origin/master
puis réinitialisez la branche master
à cet endroit.
Je pense que même la réponse de VonC est plus complexe que cette option :
git update-ref refs/heads/master origin/master
git reset --hard master
git enregistre automatiquement chaque valeur d'une ref (par le biais du reflog). Donc après avoir lancé cette commande, master@{1}
se réfère à la valeur précédente de master.
La réponse de VonC est correcte, mais elle fait perdre du temps à extraire l'ancienne valeur de master dans le système de fichiers.
Si vous vous souciez des objets orphelins dans la repo, alors vous pouvez lancer git gc