git checkout -b <nieuwnaam> <bestaande-tag>Werken met een git repo waar je niet direct naar mag pushen, maar wel naar de fork:
git clone git@git02.example.org:dev/derepo.gitcd derepogit remote set-url --push origin git@git02.example.org:jaap.droogers/derepo.gitgit add .git commit --amendMocht de commit al gepushed zijn, dan moet de volgende push met -f
Maak veel aparte commits, dat maakt het cherry picken een stuk makkelijker.
Er is een aanpassing gedaan in een aparte branch. Daarvan is weer een release gemaakt. Die release tag moet weer terug naar de master.
git checkout mastergit cherry-pick 00d812..db2 13644d...b9c (maar dan met de hele hashes)Als je een verkeerde commit hebt gedaan en je wilt daar de pom.xml niet van meenmemen:
git reset pom.xmlgit checkout pom.xmlTenslotte kan de boel gecommit worden:
git commitStel dat een commit fout was die niet de laatste was. Hoe pas je dat aan.
Tel in git log de hoeveelste commit dit was.
Doe git rebase -i HEAD~5 en verander de aan te passen commit van pick in edit.
Doe de veranderingen en ga weer met git aan de gang:
git add .git commit --amendgit rebase --continuegit push --forceDie laatste --force is natuurlijk alleen nodig als de oude commits al remote stonden.
git remote add fork-x git@git02.example.org:andere.fork/derepo.git
git pull fork-x
git checkout BRNC-1507
Nu is het probleem: hoe krijg je dit weer in je eigen repo...
Ga naar je feature branche:
git checkout BRNC-1507
Maak een tijdelijke branch aan:
git checkout -b BRNC-1507-TMP
Dan een rebase:
git rebase pilot
Ervan uitgaande dat er geen conflicten zijn:
git checkout pilot
git merge BRNC-1507-TMP
en tenslotte:
git push
Als je de tijdelijke branch wilt verwijderen:
git branch -D BRNC-1507-TMP
Met een hoofdletter D, er is nog geen push gedaan naar de fork.
Als er een project is waarin een git submodule zit, is dit als volgt te activeren:
git submodule init
git submodule update
Enkel een bepaalde commit pushen, maar niet je laatste:
git push origin PURP-790~2:PURP-790 -f