Question Comment réinitialiser 'master' à 'origine / master'?


Puis-je faire les choses plus simplement?

git checkout origin/master
git branch -D master
git branch master
git checkout master

151
2018-04-20 10:34


origine


Parfois, cela peut être fait sans toucher l'arbre de travail: stackoverflow.com/a/12343727/586086 - Andrew Mao
Veuillez mettre à jour votre réponse acceptée: La réponse de @ KindDragon est plus correcte et plus courte. - Robert Siemer


Réponses:


Comme KindDragon's répondre mentionne, vous pouvez recréer master directement à origin/master avec:

git checkout -B master origin/master

le git checkout page de manuel  mentionne:

Si -B est donné, <new_branch> est créé s'il n'existe pas; sinon, il est réinitialisé. Ceci est l'équivalent transactionnel de

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

A l'origine 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

l'étape 2 étant facultative.


209
2018-04-20 11:22



Vous pouvez le faire avec une ligne. - Robert Siemer


Git supporte cette commande:

git checkout -B master origin/master

Vérifiez origin/master branchez puis réinitialisez master branche là-bas.


69
2017-08-24 19:30



La seule vraie réponse. - Robert Siemer
enregistrer quatre frappes - vous n'avez pas besoin des guillemets. Juste: Git checkout -B master origine / master - zumalifeguard
disons que j'ai commis 2 choses, la première est une fusion avec la branche et la seconde est régulière. Qu'advient-il de la fusion si je retourne à l'origine / maître? - utdev
vous n'avez pas à git fetch origin master avant d'être sûr origin/master Est mis à jour? - pedrozath
Oui, bien sûr avec toutes les solutions que vous devriez faire git fetch premier - KindDragon


Je pense que même la réponse de VonC est complexe par rapport à cette option:

git update-ref refs/heads/master origin/master
git reset --hard master

git enregistre automatiquement toutes les valeurs d'une ref (à travers le reflog). Donc, après avoir exécuté cette commande, alors master@{1} fait référence à la valeur précédente de master.

La réponse de VonC est correcte, mais elle perd du temps à récupérer l'ancienne valeur de master dans le système de fichiers.

Si vous vous souciez des objets orphelins dans le dépôt, vous pouvez exécuter git gc


28
2018-01-23 20:48



Cela semble une alternative intéressante. +1 - VonC
Je reçois toujours Already on 'master' - yourfriendzak
@yourfriendzak, j'ai oublié de prendre en compte le fait que vous ayez peut-être déjà vérifié le master avant de mettre à jour le master. J'ai mis à jour la réponse pour que celle-ci fonctionne également dans ce cas également. - Alexander Bird
Cela fonctionne même si vous n'êtes pas sur master (comme un état HEAD détaché qui pointe en fait vers le point d'origine / maître). Ensuite, vous pouvez extraire le master sans avoir à retourner les anciens fichiers via le référentiel. Génial! - Andrew Mao


Si vous êtes déjà sur master vous pouvez faire ce qui suit:

git reset --hard origin/master

Il indiquera le local master branche à la télécommande origin/master et ignorer toute modification dans le répertoire de travail.


11
2018-06-25 15:47



Et va supprimer des fichiers! Si vous avez créé / édité des fichiers et avez exécuté un "git add" sur eux, cette commande les supprimera. Être averti. - Cheeso


Vous êtes déjà le maître. Vous voulez supprimer l'origine distante de manière git pull ne fait rien. Alors

git remote rm origin

Vous pouvez ensuite ajouter le référentiel actuel comme origine au référentiel distant si vous le souhaitez.

NB: Si local est en avance sur remote, votre solution effacera les modifications locales!


-1
2018-01-28 03:04



Cette réponse n'a aucun sens. - ADTC
Ceci est directement trompeur et pourrait nuire au projet sur lequel les gens travaillent. - Wisienkas
Ça n'est pas correct. Je ne sais pas pourquoi vous avez voté. - Saher Ahwal