Flytte eksisterende, ukommittert arbeid til en ny gren i Git

Jeg begynte å jobbe med en ny funksjon, og etter å ha kodet litt, bestemte jeg meg for at denne funksjonen skulle være på sin egen gren.

Hvordan flytter jeg de eksisterende ikke-godkjente endringene til en ny gren og tilbakestiller den nåværende?

Jeg vil tilbakestille den nåværende grenen min mens jeg bevarer eksisterende arbeid på den nye funksjonen.

Løsning

Bruk følgende:

git checkout -b 

Dette vil la din nåværende gren være som den er, opprette og sjekke ut en ny gren og beholde alle endringene dine. Du kan deretter gjøre en commit med:

git add 

og overføre til den nye grenen med:

git commit -m ""

Endringene i arbeidskatalogen og endringene i indeksen tilhører ikke noen gren ennå. Dette endrer hvor disse endringene vil ende opp.

Du tilbakestiller ikke den opprinnelige grenen, den forblir som den er. Den siste overføringen på `vil fortsatt være den samme. Derforsjekker du ut -b` og deretter overfører.

Kommentarer (22)

Alternativt:

  1. Lagre gjeldende endringer i et midlertidig lager:

    $ git stash

  2. Opprett en ny gren basert på denne stash, og bytt til den nye grenen:

    $ git stash branch stash@{0}

Tips: bruk tab-tasten for å redusere inntasting av stash-navnet.

Kommentarer (18)

Hvis du begår det, kan du også kirsebærplukke den eneste commit-ID-en. Jeg gjør dette ofte når jeg begynner å jobbe i master, og deretter vil opprette en lokal gren før jeg skyver opp til min opprinnelse / .

git cherry-pick 

Det er mye du kan gjøre med cherry-pick, som beskrevet her, men dette kan være et brukstilfelle for deg.

Kommentarer (2)