ID.nl logo
GitHub-branches maken: zo werkt de staging area
© Reshift Digital
Huis

GitHub-branches maken: zo werkt de staging area

Bij het werken met Git moet je vooral wennen aan de zogeheten staging area, een soort tijdelijke opslag. Het is een krachtig hulpmiddel, maar ook lastig te doorgronden als je net begint. In deze workshop geven we tips hoe je dit optimaal benut. Wil je GitHub-branches maken, dan geven wij hier ook wat tips voor.

Bij Git zet je wijzigingen eerst in een zogeheten staging area, een soort tijdelijke opslag, voordat je met een zogenoemde commit de wijzigingen naar je repository overzet. Je kunt hier gemakkelijk in verdwalen. In deze workshop geven we belangrijke tips om het werken op de verschillende niveaus van Git wat comfortabeler te maken!

Overzicht niveaus

Bij het werken met Git is het handig om de onderstaande afbeelding met het overzicht als een soort cheatsheet te gebruiken. Het geeft de verschillende niveaus weer, te weten: je werkdirectory met je programmabestanden, de staging area van Git met tussentijdse wijzigingen, je lokale repository op het systeem en eventueel nog een remote repository zoals GitHub. Je ziet ook de belangrijkste opdrachten die je tussen die niveaus kunt geven. Zo zie je git add waarmee je een bepaald bestand naar de staging area kunt zetten. Met de vlag -u in git add -u hoef je geen bestandsnaam op te geven, maar worden in één handeling de wijzigingen in gevolgde bestanden naar de staging area gezet. En je ziet de opdracht git commit waarmee je wijzigingen doorzet van de staging area naar de lokale repository, waarna de staging area weer leeg is en je aan de volgende veranderingen kunt gaan werken.

©PXimport

Werken zonder staging area

Eventueel kun je zonder staging area werken als je die niet nodig denkt te hebben. Het werkt dan meer in lijn met Subversion (svn), een bekend alternatief voor Git. Je kunt namelijk, zoals je ook in het overzicht ziet, met één opdracht de beide opdrachten git add en git commit combineren in één opdracht waarmee je dus de staging area overslaat:

git commit -a

Je kunt hierbij ook een beschrijving toevoegen met:

git commit -am "Beschrijving van de aanpassing"

Het lukt overigens alleen voor bestanden die je al volgt, dus waar je eerder de opdracht git add hebt gegeven. Een enkele keer is dit handig, maar meestal zul je de staging area willen gebruiken.

©PXimport

Veranderingen bekijken

Tijdens het werken met Git komt de opdracht git status van pas, waarmee je kunt zien welke bestanden zijn veranderd in je werkdirectory ten opzichte van de staging area. Wil je precies zien welke veranderingen dat zijn, dan gebruik je git diff, eventueel gevolgd door de bestandsnaam. Een rode regel met minteken ervoor geeft aan dat die regel is verwijderd. Daaronder zie je dan in het groen de nieuwe regel met een plusteken ervoor. Wil je zien welke veranderingen je in de staging area hebt klaargezet, dan geef je de opdracht (eventueel gevolgd door een bestandsnaam):

git diff --staged

Wijzigingen ongedaan maken

Stel dat je een wijziging hebt gedaan aan bepaalde programmacode in de werkdirectory, maar je bent hier niet tevreden mee? Als voorbeeld hebben we enkele regels toegevoegd die de huidige datum en tijd op het scherm te tonen. Je ziet welke veranderingen er zijn ten opzichte van de versie in de staging area met de opdracht:

git diff demo.go

Deze opdracht laat in de output weer de toegevoegde regels in het groen zien en de verwijderde regels in het rood. Zoals je ook in het overzicht hierboven kunt zien, kun je de versie uit de staging area terugzetten met:

git checkout demo.go

De veranderingen zijn nu ongedaan gemaakt. Je kunt ook eerdere commits terugzetten (zie volgende twee paragrafen).

Eerdere commits

Om terug te gaan naar een van de eerdere commits, is het handig eerst een lijst met eerdere commits op te vragen. Daarna kun je eventueel vergelijkingen maken. Als voorbeeld hebben we de datum/tijdmelding weer toegevoegd aan de programmacode, eerst in het rfc850-formaat en daarna in het rfc3339-formaat. Beide veranderingen hebben we gecommit. Met git log kun je een lijst met alle historische commits opvragen. Dit kan eventueel in één regel per commit met:

git log --oneline

Je ziet hierbij dat een zogenoemde hash aan elke commit is toegekend als referentie en het eerste unieke gedeelte van die hash gaan we gebruiken. De laatste commit is altijd bekend onder de naam HEAD. Je kunt vergelijkingen maken tussen commits. Benoem dan de twee commits die je wil vergelijken door ofwel HEAD of de hash in te vullen, bijvoorbeeld:

git diff HEAD b9eebfe

©PXimport

Commit terugzetten

Om een commit terug te zetten, heb je meerdere opties. Zo kun je een reset-opdracht geven waar je dan (een deel van) de hash achter zet, bijvoorbeeld:

git reset --hard b9eebfe

Na deze opdracht bestaan de latere commits in feite niet meer, alsof ze nooit hebben plaatsgevonden. Ook ben je alle niet-toegevoegde veranderingen in je werkdirectory kwijt! Je kunt als veiliger alternatief een checkout-opdracht gebruiken met daarachter ofwel HEAD voor de laatste commit ofwel de hash voor een specifieke commit, bijvoorbeeld:

git checkout HEAD

Hierbij worden de bestanden in je werkdirectory aangepast naar de bewuste commit. Om eventueel weer terug naar de eerdere hoofdtak gebruik je:

git checkout master

Vertakkingen

De checkout die we hierboven noemden, kom je vooral tegen bij het werken met vertakkingen ofwel branches. Stel dat je de commit met hash b9eebfe de naam rfc850-branch wil geven, dan geef je de opdracht:

git checkout -b rfc850-branch b9eebfe

Hiermee wordt dankzij de optie -b automatisch de nieuwe branch rfc850-branch aangemaakt en wordt vervolgens de werkdirectory aangepast naar de bewuste commit met de hash b9eebfe. Je werkt dan in deze vertakking, waar je uiteraard ook weer commits kunt gaan maken. Zoals eerder gezegd, kun je eventueel weer terug naar de master, in feite de hoofdtak, met:

git checkout master

Om in het vervolg direct naar de vertakking rfc850-branch te gaan, gebruik je:

git checkout rfc850-branch

Zulke vertakkingen zul je vooral gebruiken om functies apart van de master uit te werken die je later eventueel weer toevoegt aan die master, ook wel ‘merge’ genoemd.

©PXimport

▼ Volgende artikel
Steam Deck in verschillende landen uitverkocht door geheugentekort
© Reshift Digital
Huis

Steam Deck in verschillende landen uitverkocht door geheugentekort

De Steam Deck is in verschillende landen, waaronder de Verenigde Staten, uitverkocht. Dit in verband met het tekort aan RAM-geheugen door de alsmaar toenemende populariteit van kunstmatige intelligentie.

In de Verenigde Staten en Canada raakte de Steam Deck vorige week al uitverkocht. In die landen heeft Valve, het bedrijf achter de Steam Deck, nu een waarschuwing gepubliceerd op de officiële verkoopwebsite.

Die waarschuwing praat over het tekort aan RAM-geheugen. Dit heeft alles te maken met het feit dat RAM-geheugen massaal nodig is om AI draaiende te houden. De componenten worden echter ook gebruikt in entertainmentapparaten als de Steam Deck, spelcomputers en game-pc's. Daardoor blijven prijzen stijgen en raken sommige apparaten ook uitverkocht, zoals de Steam Deck.

In Nederland is de Steam Deck met oledscherm inclusief 512 GB aan opslagruimte uitverkocht. Die versie van de pc-handheld kost normaliter 569 euro. De 1 TB-versie van 679 euro is op moment van schrijven nog wel te koop, al is niet bekend hoe lang dat nog het geval is. De lcd-versie van de Steam Deck - die voor de zachtere prijs van 419 euro te koop was - wordt niet meer geproduceerd, zo heeft Valve bevestigd.

RAM-tekorten hebben ook effect op consoles

De tekorten aan RAM-geheugen hebben niet alleen invloed op de Steam Deck, maar ook andere apparaten waarop games gespeeld kunnen worden, waaronder spelcomputers. Bedrijven als Sony en Microsoft hebben de prijzen van hun consoles eerder al verhoogd. Volgens geruchten overweegt Nintendo om de vorig jaar uitgekomen Switch 2-console ook in prijs te verhogen.

Daarnaast maakt de situatie het risicovoller voor bedrijven om nieuwe apparaten uit te brengen. Zo zou Sony intern gepland hebben om de PlayStation 6 in 2027 uit te brengen, maar volgens recente geruchten kan dit verschoven worden naar 2028 of zelfs 2029, afhankelijk van wanneer de RAM-tekorten ingeperkt worden

De toekomst van de Steam Machine

In het verlengde daarvan creëert de huidige situatie ook veel onzekerheid over de Steam Machine. Dit apparaat, dat op simpele wijze pc-games op de televisie afspeelt, werd vorig jaar aangekondigd en zou eigenlijk begin dit jaar uitkomen. Onlangs communiceerde Valve dat het inmiddels ergens in de eerste helft van dit jaar is geworden, maar het feit dat er nog geen datum of prijs bekend is doet fans vermoeden dat het zelfs nog later kan worden.

"Toen we deze producten in november aankondigden, gingen we ervan uit dat we de specifieke prijzen en lanceringsdata nu wel al hadden kunnen delen", zo stelde Valve begin deze maand. "Maar de tekorten op het gebied van geheugen- en opslagcomponenten waar onze hele bedrijfstak mee kampt, zijn sindsdien behoorlijk toegenomen.  De beperkte beschikbaarheid en oplopende prijzen van deze cruciale onderdelen hebben ons ertoe gedwongen om onze plannen voor vraagprijs en levering bij te stellen (vooral voor de Steam Machine en Steam Frame)."

▼ Volgende artikel
Apple Experience op 4 maart: verwacht nieuwe MacBooks
© Apple
Huis

Apple Experience op 4 maart: verwacht nieuwe MacBooks

Apple organiseert op woensdag 4 maart een "speciale" Apple Experience. Het evenement is waarschijnlijk bedoeld om nieuwe MacBooks uit de doeken te doen.

Diverse journalisten hebben uitnodigingen ontvangen voor het evenement, dat op 4 maart vanaf 15:00 uur Nederlandse tijd tegelijk in New York, Londen en en Shanghai plaatsvindt. Het is waarschijnlijk dat de gasten daar een eerste blik krijgen op een aantal nieuwe Apple-producten, die hoogstwaarschijnlijk rond hetzelfde moment ook op internet onthuld worden.

Nieuwe MacBooks, iPhones en iPads

Zoals we onlangs al meldden heeft Apple volgens geruchten nieuwe producten in de maak, waaronder een nieuwe, goedkopere MacBook gericht op studenten. Deze zouden in de kleuren geel, groen en blauw komen, die dus ook op de uitnodiging van het evenement zijn te zien. De laptops zouden een A18 Pro-chip krijgen - een smartphonechip dus. Ook nieuwe MacBook Pro- en Air-modellen behoren tot de mogelijkheden, die volgens geruchten op de M5 Pro- en M5 Max-chips gaan lopen, alsmede nieuwe iPads.

Verder heeft Apple volgens geruchten de iPhone 17e in de maak, de opvolger van de iPhone 16e die waarschijnlijk evenveel gaat kosten: 599 dollar, oftewel 719 euro. De e-modellen van iPhone zijn betaalbaardere versies. Toch zou de 17e enkele verbeteringen ten opzichte van de 16e kennen. Zo zou er een A19-chip in de iPhone 17e zitten, een chip die ook in de duurdere, reguliere iPhone-modellen voorkomt. Verder zou de 17e ook Apple's 5G-chip bevatten, net zoals de duurdere iPhones. Het is echter mogelijk dat deze nieuwe iPhone al eerder wordt onthuld.

View post on X