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
Waar voor je geld: 5 betaalbare all-in-one-printers met scanfunctie
© MG | ID.nl
Huis

Waar voor je geld: 5 betaalbare all-in-one-printers met scanfunctie

Heb je een kantoorbaan en werk je ook veel thuis? Dan loop je vast wel eens tegen het probleem aan dat je een document wil afdrukken of iets belangrijks moet inscannen of kopiëren, maar dat je dan weer moet wachten tot je op kantoor bent. Waarom niet gewoon thuis alles doen? Met een betaalbare all-in-one-printer met scanfunctie doe je alles vanuit je eigen werkkamer. Handig voor iedereen in huis.

Canon PIXMA TS3750i

Met de Canon PIXMA TS3750i haal je een inkjet all-in-one-printer in huis die printen, kopiëren en scannen combineert in één apparaat. Het is een kleureninkjet met een maximale printresolutie van 4800 x 1200 dpi en A4 als grootste papierformaat. Je legt papier in één papierlade met een capaciteit van 90 vellen, waarbij de invoer handmatig gebeurt. De printer ondersteunt standaard A4-papier en print zwart tot ongeveer 7 ipm en kleur tot 4 ipm. De scanner is een flatbed-type zonder automatische documentinvoer; je legt dus losse pagina’s op de glasplaat en scant enkelzijdig.

De verbinding met je netwerk verloopt via wifi, waardoor je via een laptop maar ook een tablet of telefoon kunt printen. De printer werkt uiteraard goed met Windows- en macOS-systemen en hij is compatibel met mobiele besturingssystemen als iOS en Android.

De TS3750i gebruikt twee cartridges (zwart en kleur) maar vier inkten, waarbij de kleuren in één gecombineerde kleurcartridge zitten.

HP DeskJet 2921

De HP DeskJet 2921 is een thermische inkjet-all-in-one die speciaal bedoeld is voor thuisgebruik. Je hebt één apparaat dat kan printen, kopiëren en scannen; de scanner is een flatbedscanner zonder automatische documentinvoer. De printtechniek gebruikt twee cartridges: een zwarte en een driekleurencartridge. De kleurfunctie is beschikbaar voor zowel printen als kopiëren. De papierlade biedt ruimte aan 60 vellen normaal papier en ondersteunt DL-enveloppen.

Als draadloze all-in-one-printer kan deze DeskJet via wifi op je netwerk worden aangesloten, maar het is ook mogelijk om de printer via een usb-kabel rechtstreeks met een computer aan te verbinden. De printsnelheid bij dit model is rond de 7 pagina's in zwart en 5,5 pagina's per minuut in kleur. Automatisch dubbelzijdig afdrukken wordt niet ondersteund.

Epson Expression Home XP-2200

Bij de Epson Expression Home XP-2200 draait het om een compacte kleureninkjet waarmee je zowel kunt printen als scannen en kopiëren. De printer werkt met vier afzonderlijke inkten en heeft een maximale printresolutie van 4800 x 1200 dpi. De maximale papiermaat is A4 en de papierlade kan 50 vellen bevatten. Printen gebeurt via een handmatige papierinvoer, zonder extra lade.

De XP-2200 heeft een flatbed-scanner zonder automatische documentinvoer; dubbelzijdig scannen wordt niet automatisch ondersteund. Op printsnelheid scoort dit model tot 27 pagina’s per minuut in zwart en tot 15 pagina’s per minuut in kleur in de snelste modus. Verbinden gaat via usb of draadloos via wifi. Via een fysieke WPS-knop maak je eenvoudig verbinding.

Epson Expression Home XP-3200

De Epson Expression Home XP-3200 is een all-in-one-printer met iets meer mogelijkheden aan de bedieningskant. De inkjet is voorzien van een 1,44-inch lcd-scherm en kan dubbelzijdig printen. De maximale afdrukresolutie is 5760 x 1440 dpi. Het apparaat ondersteunt diverse papierformaten tot en met A4 en ook verschillende envelop- en fotopapierformaten accepteert de printer.

De geïntegreerde flatbed-scanner haalt een optische scanresolutie van 1200 x 2400 dpi, met 48-bit kleurdiepte bij de invoer en 24-bit bij de uitvoer. De XP-3200 gebruikt vier losse cartridges en heeft een papierlade voor standaard papier; randloos printen behoort ook tot de mogelijkheden. De printsnelheid ligt rond de 10 pagina’s per minuut in zwart en 5 in kleur. Voor verbinding met je netwerk is wifi aanwezig, plus usb voor directe koppeling. Apple AirPrint wordt ondersteund.

HP Smart Tank 5108 - Multifunctionele printer

De HP Smart Tank 5108 is een inkjet all-in-one met navulbare inkttanks in plaats van losse cartridges. De printer kan scannen en kopiëren. De papierlade heeft volgens de gegevens plaats voor 100 vellen en ondersteunt verschillende formaten, met een formaatbereik tot ongeveer 215,9 x 355,6 mm.

Bij de printspecificaties wordt een snelheid van ongeveer 12 pagina’s per minuut in zwart en 5 in kleur genoemd en automatisch dubbelzijdig afdrukken is eveneens mogelijk. De scanner is een flatbedscanner en ondersteunt enkelzijdige scans; automatische documentinvoer en automatisch dubbelzijdig scannen zijn niet aanwezig. De verbinding met netwerk gaat via wifi en je kunt de printer direct via usb aansluiten.

▼ Volgende artikel
PlayStation State of Play: hier kijk je vanavond om 23:00 uur
Huis

PlayStation State of Play: hier kijk je vanavond om 23:00 uur

Sony PlayStation zendt aanstaande donderdagavond om 23:00 uur Nederlandse tijd een nieuwe State of Play-livestream uit. Martin, Simon en Jacco kijken live met je mee!

Er gingen al geruchten over de komst van de State of Play, en die blijken nu dus te kloppen. Nate the Hate, de insider die wel vaker de komst van aan games gerelateerde presentaties op voorhand lekt, claimde dat onlangs namelijk al.

Op PlayStation Blog schrijft Sony dat de presentatie meer dan zestig minuten beslaat en "nieuws, gameplay-updates en aankondigingen van gamestudio's verspreid over de wereld" bevat voor aankomende PlayStation 5-games. Daarbij zullen er zowel games van PlayStation Studios zelf als andere bedrijven de revue passeren.

Zoals gezegd wordt de State of Play op donderdag 12 februari om 23:00 uur Nederlandse tijd uitgezonden, en zal deze te zien zijn via YouTube en Twitch. De presentatie zal ook hieronder te zien zijn zodra hij begint. Uiteraard streamen we de presentatie ook op Twitch, YouTube en TikTok!

Over de precieze inhoud van de State of Play-presentatie is nog niets bekend. Wel is het opvallend dat de presentatie meer dan een uur duurt, wat het een van de langste State of Play-presentaties tot dusver maakt.

Watch on YouTube

Wat is er te zien in de nieuwe State of Play?

Sony brengt dit jaar in ieder geval Saros, Marathon en Marvel's Wolverine uit, maar van die laatste is inmiddels bevestigd dat de game in de lente van dit jaar een update krijgt.

Verder werd vorige week een nieuwe Horizon-game met een focus op multiplayergameplay aangekondigd, genaamd Horizon Hunters Gathering. We weten ook dat The Last of Us-ontwikkelaar Naughty Dog aan hun nieuwe game Intergalactic: The Heretic Prophet werkt, en volgens geruchten wordt er bij PlayStation Studios ook een nieuwe God of War-game ontwikkeld met metroidvania-elementen.

Andere titels die vermoedelijk voorbijkomen zijn: Resident Evil Requiem, Helldivers 2, Marvel Tokon: Fighting Souls, Ace Combat 8, Marathon en Phantom Blade Zero.

Kunnen we dan helemaal geen verrassingen verwachten? Volgens geruchten werkt Sony Santa Monica al een tijdje aan een tweedimensionale God of War-game met Kratos' broer Deimos in de hoofdrol, en vermoed wordt dat deze eindelijk wordt aangekondigd. Sowieso zijn er veel God of War-geruchten: ook zou er gewerkt worden aan een heruitgave van de eerste drie delen en spin-off met personages Atreus in de hoofrol.