{% extends 'checkerapp/course_content.html' %} {% load static %} {% block course_content %}
Je wil niet alle data die je produceert bijhouden in versiebeheer. Enkele voorbeelden van bestanden die je niet wil bijhouden:
Omdat er in bijna elk project wel van die bestanden zijn, staat Git toe om ze uit te sluiten van versiebeheer. Dat betekent dat ze als het ware onzichtbaar zijn: ze kunnen alleen bestaan in de working directory en worden niet vermeld in berichten gegenereerd door Git.
Om een bestand te negeren, moet je eerst een bestand .gitignore
aanmaken. Daarin plaats je dan per regel de naam van een bestand dat niet meer zichtbaar mag zijn. Je kan ook namen van mappen schrijven (om bestanden in die mappen te negeren).
Wij zullen voorlopig .gitignore
altijd in de root plaatsen. Je kan ook .gitignore
-bestanden in submappen plaatsen, maar dat is niet zonder gevolgen. Leer eerst de basis.
Je bestand moet letterlijk .gitignore
heten, dus met een punt als eerste karakter en zonder bestandsextensie. In kladblok kan je dit doen door aan op te slaan als "alle bestanden" en de naam tussen aanhalingstekens te zetten. Zie hier voor een demonstratie.
Je hebt bijvoorbeeld een bestand .gitignore
dat er als volgt uitziet:
a.txt b.sql d.svg cache
Als je dan de files a.txt
, b.sql
, c.html
, d.svg
, cache/urls.txt
, cache/names.md
maakt, dan kan je enkel c.html
verplaatsen naar de staging area (en naar de projectgeschiedenis).
.gitignore
sluit alleen nieuwe bestanden uit! Als a.txt
bijvoorbeeld al deel uitmaakte van de projectgeschiedenis *voor* .gitignore
is aangemaakt, blijft a.txt
deel uitmaken van de projectgeschiedenis en kan je wijzigingen aan a.txt
stagen en committen alsof er geen .gitignore
was.
Normaal gesproken matcht een patroon op elk niveau in de bestandenstructuur. Het maakt dus niet uit of een te negeren bestand in de root staat of in een submap. Als je hetzelfde bestand .gitignore
hebt als tevoren en je hebt volgende bestandenstructuur:
root ├── a.txt ├── bin │ ├── a.txt │ ├── cache │ │ └── e.gv │ └── pkg │ └── f.pkg ├── b.sql ├── cache │ ├── names.md │ └── urls.txt ├── c.html └── d.svgHier stellen
root
, bin
, cache
,... mappen voor omdat er nog structuur onder staat en omdat ze geen extensie hebben. Alle entries waar geen structuur onder staat, stellen bestanden voor.
Met deze folderstructuur kan je c.html
en f.pkg
(in de map bin/pkg
) stagen en committen. Je kan de files die in .gitignore
vermeld zijn niet stagen en committen. Dus ook niet e.gv
, want die is een onderdeel van cache
!
Soms wil je hele groepen bestanden negeren. Je hebt misschien een reeks .png
-bestanden die gegenereerd worden uit .svg
-bestanden. Dan is het een slecht idee de .png
-bestanden in versiebeheer te plaatsen. In de plaats daarvan kan je beter alle .png
-bestanden in dat project negeren. Om dit te doen, schrijf je "*.png" (zonder aanhalingstekens). Een "*" matcht met alles behalve het karakter "/". Je kan ook één karakter matchen (behalve de "/") met het karakter "?".
Veronderstel dat je begint vanaf volgende bestandenstructuur:
root ├── submap1 │ ├── 1A.pdf │ ├── 1B.pdf │ ├── 1C.md │ └── cache │ └── 1.o ├── submap2 │ ├── cache │ │ └── 2.p │ ├── submap2A │ │ ├── 2Aa.pdf │ │ └── 2Ab.pdf │ └── submap2B │ └── 2Ba.md └── submap3 ├── cache ├── submap3A │ ├── 2Ba.md │ └── cache │ ├── 3.q │ └── 4.r └── submap3B └── 3Ba.pdf
Schrijf een bestand met de naam gevraagd in de technische vereisten. Indien je je bestand zou hernoemen naar .gitignore
, zou het volgende zaken doen:
cache
negeren, waar ze ook staan in de structuur.pdf
negeren, waar ze ook staan in de structuur1C.md
negeren (waar het ook staat in de bestandenstructuur)
We noemen het bestand niet .gitignore
omdat het dan ook zou functioneren als een .gitignore
-bestand.
Er zijn andere (aangeraden) manieren om deze te negeren dan een .gitignore
in je project, maar we willen niet afdwalen.
Het is niet absoluut onmogelijk, maar je ziet de uitzonderingen later.
Je kan dit gedrag veranderen, maar we willen niet afdwalen.
{% endblock %}