Domanda

Potrebbe esserci più di un modo per porre questa domanda, quindi ecco una descrizione del problema.Stavo lavorando al master e ho commesso alcune cose e poi ho deciso che volevo sospendere quel lavoro.Ho eseguito il backup di alcuni commit e poi ho effettuato il branch da prima di iniziare il mio lavoro di merda.Praticamente funziona bene, solo che ora ho un ramo diverso come ramo di sviluppo principale.Mi chiedo come potrei cambiare le cose, quindi sto lavorando di nuovo su master ma non contiene il mio lavoro spazzatura e ho detto che il lavoro è su un ramo diverso.

Alcuni modi in cui questo potrebbe essere chiesto/risolto:Come posso rinominare il mio ramo master in qualcos'altro e poi rinominare qualcos'altro in master?Come posso eseguire il backup del master e quindi fare in modo che tutti i commit di cui ho eseguito il backup si trovino su un ramo diverso?

Grazie per tutte le (veloci) risposte!Stanno tutti bene.

È stato utile?

Soluzione

Oltre agli altri commenti, potresti trovare utile l'opzione -m (sposta) su git-branch.Potresti rinominare il tuo vecchio master in qualcos'altro, quindi rinominare il tuo nuovo ramo in master:

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

Altri suggerimenti

Penso che dovresti considerare una diversa strategia di sviluppo per prevenire problemi come questo.Uno che sembra funzionare meglio per me è non eseguire mai lo sviluppo direttamente sul mio ramo principale.Indipendentemente dalle modifiche che sto apportando, creo sempre un nuovo ramo per il nuovo codice:

git checkout -b topic/topic_name master

Da lì, posso inviare le modifiche ai repository pubblici:

git push pu topic/topic_name

o eventualmente semplicemente unirlo nuovamente al mio ramo principale:

git checkout master && git merge topic/topic_name

Se hai veramente bisogno di tornare a un punto precedente nel tempo e impostarlo come master, puoi rinominare il ramo corrente in qualcos'altro e quindi controllare una versione precedente per essere il tuo master:

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

Inizia master, crea un ramo chiamato in-progress, quindi reimpostare master a un commit precedente.

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

Questo è relativamente facile:

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

Questo imposterà il tuo master su qualsiasi punto in un solo passaggio:

git checkout -B master new_point
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top