Config
Maak een account aan op Github.
Maak een access token zodat je erbij kunt vanaf de commando regel / API op je linux machine: https://github.com/settings/personal-access-tokens
Sla het token veilig op, want je krijgt het niet weer te zien!!!
Over jezelf:
$ git config --global user.name "Arjan ten Hoopen" $ git config --global user.email arjan.ten.hoopen@gmail.com $ git config --global init.defaultBranch main
Map met inhoud naar een repository op Github
We maken van de map /home/arjan/OneDrive/git/BangOlufsen-Beocord4500-SDDM-plasma-6 een repository op git:
Login op Github en maak een nieuwe repository aan met de naam van de map.
Ga naar de map op linux (cd /home/arjan/OneDrive/git/BangOlufsen-Beocord4500-SDDM-plasma-6) en voer uit
$ git init
Voeg nu alles toe:
$ git add .
Doe een commit
$ git commit -m "Initial upload"
Verbind de map met de repo op github
$ git remote add origin https://github.com/arjantenhoopen/BangOlufsen-Beocord4500-SDDM-plasma-6.git
$ git remote -v
Nu uploaden naar github
$ git push -u origin main
$ # git push --set-upstream origin https://arjantenhoopen:<access_token>@github.com/arjantenhoopen/BangOlufsen-Beocord4500-SDDM-plasma-6 main
abc
echo "# BangOlufsen-Beocord4500-SDDM-plasma-6" >> README.md git init git add README.md git commit -m "first commit" git branch -M main git remote add origin https://github.com/arjantenhoopen/BangOlufsen-Beocord4500-SDDM-plasma-6.git git push -u origin main
Importeer je eigen project in git
$ tar xzf project.tar.gz $ cd project $ git init
Maak een snapshot van alle bestanden:
$ git add .
Deze staan nu in een tijdelijke staging omgeving index.
Om deze nu toe tevoegen aan de repository gebruik je:
$ git commit
Creëer enige nieuwe bestanden en voeg ze toe aan git
$ touch file1 file2 file3 $ git add file1 file2 file3
Knutsel lekker aan de bestanden (ze staan nog in de tijdelijke staging omgeving index.
Wat is er klaar om gecommit te worden aan de repository:
$ git diff --cached
of
$ git status
Commit de veranderingen nu naar de respository
$ git commit
Branches
Maak een branch:
$ git branch experimental
Overzicht van alle branches:
$ git branch
In de output geeft * aan dwat de huidige branch is. Je maakt dus veranderingen op deze branch.
Om naar een andere branch te gaan:
$ git switch experimental
Pas een bestand aan, en commit het (naar de experimental branch). Ga terug naar de master branch.
(edit file) $ git commit -a $ git switch master
De aanpassing die je net gemaakt hebt is niet te zien in de master branch.
Maak nu (in de master branch) ook een verandering en commit het:
(edit file) $ git commit -a
De experimental en master branch lopen nu uiteen. We gaan de experimental branch mergen met de master branch. Onthou dat de hudige branch de master is:
$ git merge experimental
Als er geen conflicten zijn gaat alles van een lijen dakje. Als er conflicten zijn dan zijn deze IN het bestand aangegeven. Om er achter te komen welke dat zijn gebruik je:
$ git diff
Heb je alle conflicten opgelost dan commit je dat met:
$ git commit -a
Kijkje hoet het allemaal zo gekomen is doe je met:
$ gitk
Je hebt alles van de experimental branch naar de master branch gebracht. Wil je de experimental branch verwijderen dan kan dat via:
$ git branch -d experimental
Heb je een wilde branch gemaakt, en krijg je daar spijt van dan verwijder je die (hardhandig) via :
$ git branch -D crazy-idea
Clonen
Stel een vriend/collega(alice) heeft een git repo in /home/alice/project en die wil jij (bob) clonen om bijvoorbeeld met het samen te werken aan dit project. Een clone maken doe je via:
bob$ git clone /home/alice/project myrepo
Je knutselt wat (op de master branch) en commit (naar je eigen repo):
(edit files) bob$ git commit -a
Vervolgens vraag je je collega (alice) om deze veranderingen mee te namen in zijn repo. JE COLLEGA DOET HET VOLGENDE:
alice$ cd /home/alice/project alice$ git pull /home/bob/myrepo master
Dit merged jou veranderingn in de huidige branch van je collega (alice). git pull haalt de veranderingen op EN merged ze. Wil je alleen ophalen dan gebruikt je collega:
git fetch /home/bob/myrepo master
Om te kijken wat jij gedaan hebt gebruikt je collega:
alice$ git log -p HEAD..FETCH_HEAD
of visueel:
$ gitk HEAD..FETCH_HEAD
Short Hand
Je collega kan jouw repo ook bekend bij haar maken:
alice$ git remote add bob /home/bob/myrepo
Wil zij nu jou wijzigingen ophalen:
alice$ git fetch bob
Mergen kan ze dan doen via:
alice$ git merge bob/master
Ze kan ook een pull doen:
alice$ git pull . remotes/bob/master
Je eigen update weer updaten met de veranderingen van je collega:
bob$ git pull
Meewerken aan een Github FOSS project (b.v. Strawberry)
Maak eerst een fork in het project via de Github fork knop.
Clone vervolgens de repository vanaf je fork.
$ gh repo clone https://github.com/arjantenhoopen/strawberry $ $ cd strawberry
Setup de remote:
$ git remote add upstream git@github.com:strawberrymusicplayer/strawberry.git
Controleer of de remote goed staat:
git remote -v
Maal een branch vanaf de master voor je veranderingen
$ git checkout -b YOUR-BRANCH
Je kunt nu aan het werk:
Tips:
$ git add <filename> # toevoegen aan git
$ git status # status van de file
$ git branch # laat alle branches zien, * is de huidge
Helemaal tevreden dan:
Stage je aanpassingen:
$ git add -p
Als je commit moet je inloggen op github, tijdens de commit wordt je eerst gevraagd om je login en daarna je token.
Een token set je op in de webUI van github. Login en klik op je icoon – Settings – Developer Settings (helemaal onderaan) – Personal Acces Tokens – Tokens (Classic). Maak daar een token en kopieer deze naar je schijf zodat je die later nogmaals kunt gebruiken).
En commit:
$ git commit -m "Added several radio stations"
Commit messages dat je gebruikt:
StretchHeaderView: Set default section size As of Qt 6.6.1, style changes are resetting the column sizes. To prevent this, we set a default section size. Fixes #1328
Once you’ve finished working on the changes, push the branch to the Git repository and open a new pull request.
$ git push origin your-branch
Update your fork’s master branch:
$ git checkout master $ git pull --rebase origin master $ git fetch upstream $ git merge upstream/master $ git push origin master
Update your branch:
$ git checkout your-branch $ git fetch upstream $ git rebase upstream/master $ git push origin your-branch --force-with-lease
Rebase your branch (If you need fix any issues with your commits, you need to rebase your branch to squash any commits, or to change the commit message.):
$ git checkout your-branch $ git log $ git rebase -i commit_sha~ $ git push origin your-branch --force-with-lease
Delete de fork als je niet meer aan het project meer wilt deelnemen