Ik begon te werken aan een nieuwe functie en na een tijdje coderen, besloot ik dat deze functie op een eigen tak moest komen.
Hoe verplaats ik de bestaande ongecommitteerde wijzigingen naar een nieuwe branch en reset ik mijn huidige?
Ik wil mijn huidige branch terugzetten terwijl het bestaande werk aan de nieuwe functie behouden blijft.
Gebruik het volgende:
git checkout -b <new-branch>
Dit zal je huidige branch ongewijzigd laten, een nieuwe branch aanmaken en uitchecken en al je wijzigingen behouden. Je kunt dan een commit maken met:
git add <files>
en naar je nieuwe branch vastleggen met:
git commit -m "<Brief description of this commit>"
De wijzigingen in de werkmap en de wijzigingen ge-staged in index behoren nog tot geen enkele branch. Dit verandert waar die wijzigingen in zouden eindigen.
Je zet je originele branch niet terug, het blijft zoals het is. De laatste commit op <old-branch>
zal nog steeds dezelfde zijn. Daarom doe je checkout -b
en commit je dan.
Een andere mogelijkheid:
Sla de huidige wijzigingen op in een tijdelijke opslagplaats:
$ git stash
Maak een nieuwe branch gebaseerd op deze stash, en schakel over naar de nieuwe branch:
$ git stash branch <new-branch> stash@{0}
Tip: gebruik de tab toets om het typen van de stash naam te verminderen.
Als je het commit, zou je ook de enkele commit ID kunnen cherry-picken. Ik doe dit vaak als ik in master begin te werken, en dan een lokale branch wil maken voordat ik naar mijn origin/
git cherry-pick <commitID>
Er is veel dat je kunt doen met cherry-pick, zoals beschreven hier, maar dit zou een use-case voor jou kunnen zijn.