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.
Bruk følgende:
git checkout -b <new-branch>
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 <files>
og overføre til den nye grenen med:
git commit -m "<Brief description of this commit>"
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å <old-branch>
vil fortsatt være den samme. Derfor sjekker du ut -b
og deretter overfører.
Alternativt:
Lagre gjeldende endringer i et midlertidig lager:
$ git stash
Opprett en ny gren basert på denne stash, og bytt til den nye grenen:
$ git stash branch <new-branch> stash@{0}
Tips: bruk tab-tasten for å redusere inntasting av stash-navnet.
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 <commitID>
Det er mye du kan gjøre med cherry-pick, som beskrevet her, men dette kan være et brukstilfelle for deg.