Git: in verkeerde branche gewerkt
Ik zit ijverig te werken en nadien zie ik dat ik in de master branch bezig ben ipv de dev branch.
Ik heb nog geen git add of commit gedaan.
(in git status zie ik modified:
BestandWaaraanIkBezigWas.class )
Ik kan natuurlijk alles weggooien en de master terugzetten op een vorig punt.
Maar ik wil de wijzigingen wel bijhouden, en ik wil die in de dev krijgen.
De aanbevelingen die ik lees gaan ongeveer zo:
– maak een nieuwe branch vanuit die master die je gewijzigd hebt (maar nog niet ge-commit), geef hem een tijdelijk naam bv tempdev.
git checkout -b tempdev
Switched to a new branch ‘tempdev’
– voeg eventueel nieuwe bestanden toe (niet nodig als je alleen “modified” hebt), en commit al je werk:
git add .
git commit -m "some new work"
Als ik nu terug ga (git checkout master) en daar git status vraag, geeft die geen modified bestanden meer.
– check of je de dev branch hebt:
git branch -l
master
* tempdev
Als je de dev branch niet hebt, kijken of hij er remote wel is:
git branch -lr
(opgelet dit kan een vertekend beeld geven als die recent is bijgemaakt en je niet hebt bijgewerkt met fetch…)
origin/HEAD -> origin/master
origin/master
Of git branch -a
om beiden te zien.
Dus eerst synchroniseren met online:
git fetch
remote: Enumerating objects: 32, done.
remote: Counting objects: 100% (28/28), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 16 (delta 12), reused 0 (delta 0)
Unpacking objects: 100% (16/16), done.
From git://git.code.sf.net/p/myproject/code
* [new branch] dev -> origin/dev
0c4e870..b8c15dc master -> origin/master
git branch -rl
origin/HEAD -> origin/master
origin/dev
origin/master
Beter!
– schakel naar dev branch en merge die met devtemp (importeert de devtemp wijzigingen).
git checkout dev
git merge tempdev
– commit en push zodat de (online) “remote” dev branch is bijgewerkt.
– schakel naar die je master en reset hem naar de laatste versie (van remote halen dus? Nee gebeurt lokaal): git reset --hard HEAD
.
Stash
Misschien korter/handiger: gebruik “stash”, dat de wijzigingen lokaal even opzij zet (om ze al dan niet nadien toe te passen):
git stash
git checkout dev
git stash apply
(Reeks Git – handboek (nl) – commando’s vb – branch, merge – branch zoeken/datum – stash – GitLab vb – SourceForge vb – git en gambas)