Začal som pracovať na novej funkcii a po chvíli kódovania som sa rozhodol, že táto funkcia by mala byť vo vlastnej vetve.
Ako môžem presunúť existujúce neodoslané zmeny do novej vetvy a resetovať svoju aktuálnu vetvu?
Chcem resetovať svoju súčasnú vetvu a zároveň zachovať existujúcu prácu na novej funkcii.
Použite nasledujúce:
git checkout -b <new-branch>
Toto ponechá vašu aktuálnu vetvu tak, ako je, vytvorí a odhlási novú vetvu a zachová všetky vaše zmeny. Potom môžete vykonať odovzdanie pomocou:
git add <files>
a odovzdať do novej vetvy pomocou:
git commit -m "<Brief description of this commit>"
Zmeny v pracovnom adresári a zmeny uložené v indexe zatiaľ nepatria do žiadnej vetvy. Tým sa zmení miesto, kde by tieto zmeny skončili.
Pôvodnú vetvu neobnovíte, zostane taká, aká je. Posledná revízia na <old-branch>
bude stále rovnaká. Preto si checkout -b
a potom odovzdajte.
Prípadne:
Uložte aktuálne zmeny do dočasnej pamäte:
$ git stash
Vytvorte novú vetvu založenú na tomto úložisku a prepnite sa do novej vetvy:
$ git stash branch <new-branch> stash@{0}
Tip: použite kláves Tab, aby ste obmedzili písanie názvu schránky.
Ak ju odovzdáte, môžete si tiež vybrať ID jednej revízie. Často to robím, keď začnem pracovať v master a potom chcem vytvoriť lokálnu vetvu pred tým, ako ju presuniem do svojej origin/
git cherry-pick <commitID>
S cherry-pick sa toho dá urobiť veľa, ako je popísané tu, ale toto by mohol byť pre vás prípad použitia.