Een foutmelding lezen

Een foutmelding is geen straf, maar een hint. De computer vertelt je wat er mis is, en vaak ook waar.

Waar zie je de foutmelding?

  • Terminal: regels die beginnen met error: of fatal:
  • GitHub Desktop: een pop-up met dezelfde tekst

Zo pak je het aan

  1. Lees de eerste rode regel. Die zegt wat er mis is
  2. Zoek de bestandsnaam en het regelnummer, bijv. App.jsx:12. Daar zit de fout (of net een regel erboven)
  3. Zoek je foutmelding hieronder op

Tip: plak je foutmelding in de zoekbalk

Kopieer de rode regel en plak hem in de zoekbalk op het overzicht of op de homepage. Dan kom je direct bij de juiste uitleg.

Push geweigerd

! [rejected]        main -> main (fetch first)
error: failed to push some refs

Wat betekent het? Er staat nieuw werk op GitHub dat jij nog niet hebt (een teamgenoot heeft gepusht).

Eerst pullen, dan pushen:

git pull
git push

Desktop: klik op Pull origin, daarna op Push origin.

not a git repository

fatal: not a git repository (or any of the parent directories): .git

Wat betekent het? Je terminal staat niet in je projectmap.

# Waar ben ik?
pwd

# Ga naar je projectmap
cd Documents/GitHub/mijn-project

Tip: in GitHub Desktop: Repository → Open in Terminal. Dan sta je meteen goed.

Local changes would be overwritten

error: Your local changes to the following files would be overwritten by merge:
	index.html
Please commit your changes or stash them before you merge.

Wat betekent het? Je hebt wijzigingen die nog niet gecommit zijn, en de pull zou ze overschrijven.

Commit eerst je werk, en pull dan:

git add .
git commit -m "feat: navbar aangepast"
git pull

no upstream branch

fatal: The current branch feature/navbar has no upstream branch.

Wat betekent het? Je branch staat nog niet op GitHub. De eerste keer moet je vertellen waar hij heen moet.

git push -u origin feature/navbar

Desktop: klik op Publish branch.

Merge conflict

CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

Wat betekent het? Jij en een teamgenoot hebben dezelfde regel aangepast. Git wil dat jij kiest.

Zie Merge Conflicts voor een stap-voor-stap uitleg.

Permission denied

remote: Permission to team/project.git denied to jouwnaam.
fatal: unable to access 'https://github.com/team/project.git/': The requested URL returned error: 403

Wat betekent het? Je hebt geen schrijfrechten op deze repo.

  • Teamproject? Vraag de eigenaar je toe te voegen: Settings → Collaborators. Accepteer daarna de uitnodiging in je mail
  • Repo van de docent? Dan moet je eerst forken
  • Verkeerd account? Log opnieuw in: gh auth login

refusing to merge unrelated histories

fatal: refusing to merge unrelated histories

Wat betekent het? Je hebt op GitHub een repo gemaakt mét README, én lokaal git init gedaan. Nu zijn het twee losse geschiedenissen.

git pull origin main --allow-unrelated-histories

Daarna eventueel een merge conflict oplossen, en dan git push.

src refspec main does not match any

error: src refspec main does not match any

Wat betekent het? Je probeert main te pushen, maar die bestaat nog niet. Meestal heb je nog geen commit gemaakt.

git add .
git commit -m "chore: eerste commit"
git push -u origin main

Heet je branch master? Check met git branch.

destination path already exists

fatal: destination path 'project' already exists and is not an empty directory.

Wat betekent het? Er staat al een map met die naam waar je wilt clonen.

  • Heb je hem al eerder gecloned? Ga dan gewoon die map in: cd project en doe git pull
  • Of clone op een andere plek, of geef een andere naam: git clone url project-2

Vast in een raar scherm (Vim)

Please enter a commit message to explain why this merge is necessary,
~
~
~

Wat betekent het? Git heeft een teksteditor (Vim) geopend voor een commit message. Iedereen raakt hier een keer in vast.

  1. Druk op Esc
  2. Typ :wq (opslaan en afsluiten)
  3. Druk op Enter

Liever VS Code als editor?

git config --global core.editor "code --wait"