Question

Il peut y avoir plusieurs façons de poser cette question, voici donc une description du problème.Je travaillais sur le master et j'ai engagé certaines choses, puis j'ai décidé de mettre ce travail en attente.J'ai sauvegardé quelques commits, puis j'ai créé une branche avant de commencer mon travail de merde.En pratique, cela fonctionne bien, je viens d'avoir une branche différente comme branche de développement principale.Je me demande comment je pourrais changer les choses, donc je travaille à nouveau sur master, mais il n'a pas mon travail indésirable et dit que le travail est sur une branche différente.

Voici quelques façons de poser/résoudre ce problème :Comment puis-je renommer ma branche principale en autre chose, puis renommer autre chose en maître ?Comment puis-je sauvegarder master et ensuite faire en sorte que tous les commits que j'ai sauvegardés se trouvent sur une branche différente ?

Merci pour toutes les réponses (rapides) !Ils sont tous bons.

Était-ce utile?

La solution

En plus des autres commentaires, le commutateur -m (move) vers git-branch peut vous être utile.Vous pouvez renommer votre ancien master en quelque chose d'autre, puis renommer votre nouvelle branche en master :

git branch -m master crap_work
git branch -m previous_master master

Autres conseils

Je pense que vous devriez envisager une stratégie de développement différente pour éviter des problèmes comme celui-ci.Celui qui semble fonctionner le mieux pour moi est de ne jamais faire de développement directement sur ma branche principale.Quelles que soient les modifications que j'apporte, je crée toujours une nouvelle branche pour le nouveau code :

git checkout -b topic/topic_name master

À partir de là, je peux appliquer les modifications aux référentiels publics :

git push pu topic/topic_name

ou éventuellement simplement le fusionner avec ma branche principale :

git checkout master && git merge topic/topic_name

Si vous avez vraiment besoin de revenir à une époque plus ancienne et de la définir comme maître, vous pouvez renommer la branche actuelle en quelque chose d'autre, puis extraire une ancienne version pour qu'elle soit votre maître :

 git branch -m master junk
 git co -b master old_sha1_value

Démarrer master, créez une branche appelée in-progress, puis réinitialisez master à un commit antérieur.

$ git branch in-progress
$ git reset --hard HEAD^

C'est relativement simple :

git checkout -b fake_master master # fake_master now points to the same commit as master
git branch -D master               # get rid of incorrect master
git checkout -b master real_master # master now points to your actual master
git checkout master                # optional -- switch on to your master branch

Cela définira votre maître sur n'importe quel point en une seule étape :

git checkout -B master new_point
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top