Git
Branches
- Branch maken van tag
-
git checkout -b <nieuwnaam> <bestaande-tag>
Clone met fork
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.git
-
cd derepo
-
git remote set-url --push origin git@git02.example.org:jaap.droogers/derepo.git
Iets toevoegen aan voorgaande commit
-
git add .
-
git commit --amend
Mocht de commit al gepushed zijn, dan moet de volgende push met -f
Cherry Pick
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 master
-
zoek de commits die je wilt hebben (bv in gitlab)
-
git 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.xml
-
git checkout pom.xml
Tenslotte kan de boel gecommit worden:
-
git commit
Oeps, oude commit was fout
Stel 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 --amend
-
git rebase --continue
-
git push --force
Die laatste --force is natuurlijk alleen nodig als de oude commits al remote stonden.
Andere fork pulllen
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…
Mergen naar de pilot of master branch
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.
Submodules
Als er een project is waarin een git submodule zit, is dit als volgt te activeren:
git submodule init
git submodule update
Push van bepaalde commit
Enkel een bepaalde commit pushen, maar niet je laatste:
git push origin PURP-790~2:PURP-790 -f