Ga naar de inhoud
Home » Git 101

Git 101

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