Verplaats bestaand, uncommitted werk naar een nieuwe branch in Git

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.

Oplossing

Gebruik het volgende:

git checkout -b 

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 

en naar je nieuwe branch vastleggen met:

git commit -m ""

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 `zal nog steeds dezelfde zijn. Daarom doe jecheckout -b` en commit je dan.

Commentaren (22)

Een andere mogelijkheid:

  1. Sla de huidige wijzigingen op in een tijdelijke opslagplaats:

    $ git stash

  2. Maak een nieuwe branch gebaseerd op deze stash, en schakel over naar de nieuwe branch:

    $ git stash branch stash@{0}

Tip: gebruik de tab toets om het typen van de stash naam te verminderen.

Commentaren (18)

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/ push.

git cherry-pick 

Er is veel dat je kunt doen met cherry-pick, zoals beschreven hier, maar dit zou een use-case voor jou kunnen zijn.

Commentaren (2)