# Introduksjon til GitHub Hei der, fremtidige utvikler! 👋 Klar for Ă„ bli med millioner av kodere over hele verden? Jeg er virkelig spent pĂ„ Ă„ introdusere deg for GitHub – tenk pĂ„ det som en sosial medieplattform for programmerere, bortsett fra at vi deler kode og bygger fantastiske ting sammen i stedet for Ă„ dele bilder av lunsjen vĂ„r! Her er noe som virkelig blĂ„ser meg av banen: hver app pĂ„ telefonen din, hver nettside du besĂžker, og de fleste verktĂžyene du kommer til Ă„ lĂŠre Ă„ bruke, ble bygget av team av utviklere som samarbeidet pĂ„ plattformer akkurat som GitHub. Den musikkappen du elsker? Noen som deg bidro til den. Det spillet du ikke kan legge fra deg? Jepp, sannsynligvis bygget med GitHub-samarbeid. Og nĂ„ skal DU lĂŠre hvordan du kan bli en del av det fantastiske fellesskapet! Jeg vet at dette kan fĂžles overveldende i starten – jeg husker selv da jeg stirret pĂ„ min fĂžrste GitHub-side og tenkte "Hva i all verden betyr dette?" Men her er greia: hver eneste utvikler startet akkurat der du er nĂ„. Innen slutten av denne leksjonen vil du ha din egen GitHub-repository (tenk pĂ„ det som din personlige prosjektutstilling i skyen), og du vil vite hvordan du lagrer arbeidet ditt, deler det med andre, og til og med bidrar til prosjekter som millioner av mennesker bruker. Vi skal ta denne reisen sammen, ett steg av gangen. Ingen hastverk, ingen press – bare deg, meg, og noen virkelig kule verktĂžy som snart kommer til Ă„ bli dine nye bestevenner! ![Intro til GitHub](../../../../translated_images/webdev101-github.8846d7971abef6f947909b4f9d343e2a23778aa716ca6b9d71df7174ee5009ac.no.png) > Sketchnote av [Tomomi Imura](https://twitter.com/girlie_mac) ## Quiz fĂžr leksjonen [Quiz fĂžr leksjonen](https://ff-quizzes.netlify.app) ## Introduksjon FĂžr vi dykker inn i de virkelig spennende tingene, la oss gjĂžre datamaskinen din klar for litt GitHub-magi! Tenk pĂ„ dette som Ă„ organisere kunstforsyningene dine fĂžr du lager et mesterverk – Ă„ ha de riktige verktĂžyene klare gjĂžr alt sĂ„ mye enklere og mye morsommere. Jeg skal gĂ„ gjennom hvert oppsettsteg med deg personlig, og jeg lover at det ikke er i nĂŠrheten av sĂ„ skremmende som det kanskje ser ut ved fĂžrste Ăžyekast. Hvis noe ikke gir mening med en gang, er det helt normalt! Jeg husker da jeg satte opp mitt fĂžrste utviklingsmiljĂž og fĂžlte meg som om jeg prĂžvde Ă„ lese gamle hieroglyfer. Hver eneste utvikler har vĂŠrt akkurat der du er nĂ„, og lurt pĂ„ om de gjĂžr det riktig. Spoiler: hvis du er her og lĂŠrer, gjĂžr du det allerede riktig! 🌟 I denne leksjonen skal vi dekke: - hvordan du sporer arbeidet du gjĂžr pĂ„ maskinen din - hvordan du jobber med prosjekter sammen med andre - hvordan du kan bidra til Ă„pen kildekode-programvare ### Forutsetninger La oss gjĂžre datamaskinen din klar for litt GitHub-magi! Ikke bekymre deg – dette oppsettet er noe du bare trenger Ă„ gjĂžre Ă©n gang, og deretter er du klar for hele kodereisen din. Ok, la oss starte med grunnlaget! FĂžrst mĂ„ vi sjekke om Git allerede er installert pĂ„ datamaskinen din. Git er i utgangspunktet som Ă„ ha en super-smart assistent som husker hver eneste endring du gjĂžr i koden din – mye bedre enn Ă„ frenetisk trykke Ctrl+S hvert andre sekund (vi har alle vĂŠrt der!). La oss se om Git allerede er installert ved Ă„ skrive denne magiske kommandoen i terminalen din: `git --version` Hvis Git ikke er der ennĂ„, ingen grunn til bekymring! Bare gĂ„ til [last ned Git](https://git-scm.com/downloads) og last det ned. NĂ„r du har installert det, mĂ„ vi introdusere Git ordentlig for deg: > 💡 **FĂžrste gangs oppsett**: Disse kommandoene forteller Git hvem du er. Denne informasjonen vil bli knyttet til hver commit du gjĂžr, sĂ„ velg et navn og en e-postadresse du er komfortabel med Ă„ dele offentlig. ```bash git config --global user.name "your-name" git config --global user.email "your-email" ``` For Ă„ sjekke om Git allerede er konfigurert, kan du skrive: ```bash git config --list ``` Du trenger ogsĂ„ en GitHub-konto, en kodeeditor (som Visual Studio Code), og du mĂ„ Ă„pne terminalen din (eller: kommandolinjen). GĂ„ til [github.com](https://github.com/) og opprett en konto hvis du ikke allerede har en, eller logg inn og fyll ut profilen din. 💡 **Moderne tips**: Vurder Ă„ sette opp [SSH-nĂžkler](https://docs.github.com/en/authentication/connecting-to-github-with-ssh) eller bruke [GitHub CLI](https://cli.github.com/) for enklere autentisering uten passord. ✅ GitHub er ikke det eneste kode-repositoriet i verden; det finnes andre, men GitHub er det mest kjente. ### Forberedelse Du trenger bĂ„de en mappe med et kodeprosjekt pĂ„ din lokale maskin (laptop eller PC), og et offentlig repository pĂ„ GitHub, som vil fungere som et eksempel pĂ„ hvordan du kan bidra til andres prosjekter. ### Hold koden din trygg La oss snakke om sikkerhet et Ăžyeblikk – men ikke bekymre deg, vi skal ikke overvelde deg med skumle ting! Tenk pĂ„ disse sikkerhetspraksisene som Ă„ lĂ„se bilen eller huset ditt. De er enkle vaner som blir en selvfĂžlge og holder det harde arbeidet ditt beskyttet. Vi skal vise deg moderne, sikre mĂ„ter Ă„ jobbe med GitHub fra starten av. PĂ„ denne mĂ„ten vil du utvikle gode vaner som vil tjene deg godt gjennom hele kodingskarrieren din. NĂ„r du jobber med GitHub, er det viktig Ă„ fĂžlge sikkerhetspraksis: | SikkerhetsomrĂ„de | Beste praksis | Hvorfor det er viktig | |------------------|---------------|------------------------| | **Autentisering** | Bruk SSH-nĂžkler eller Personlige Tilgangstokens | Passord er mindre sikre og blir faset ut | | **Tofaktorautentisering** | Aktiver 2FA pĂ„ GitHub-kontoen din | Gir et ekstra lag med kontobeskyttelse | | **Repository-sikkerhet** | Aldri commit sensitiv informasjon | API-nĂžkler og passord skal aldri vĂŠre i offentlige repositorier | | **Avhengighetsstyring** | Aktiver Dependabot for oppdateringer | Holder avhengighetene dine sikre og oppdaterte | > ⚠ **Kritisk sikkerhetspĂ„minnelse**: Aldri commit API-nĂžkler, passord eller annen sensitiv informasjon til noe repository. Bruk miljĂžvariabler og `.gitignore`-filer for Ă„ beskytte sensitiv data. **Moderne autentiseringsoppsett:** ```bash # Generate SSH key (modern ed25519 algorithm) ssh-keygen -t ed25519 -C "your_email@example.com" # Set up Git to use SSH git remote set-url origin git@github.com:username/repository.git ``` > 💡 **Proff-tips**: SSH-nĂžkler eliminerer behovet for Ă„ skrive inn passord gjentatte ganger og er mer sikre enn tradisjonelle autentiseringsmetoder. --- ## Administrer koden din som en proff Ok, NÅ blir det virkelig spennende! 🎉 Vi skal lĂŠre hvordan du sporer og administrerer koden din som proffene gjĂžr, og helt ĂŠrlig, dette er en av mine favoritting Ă„ lĂŠre bort fordi det er en skikkelig game-changer. Se for deg dette: du skriver en fantastisk historie, og du vil holde styr pĂ„ hver utkast, hver briljant redigering, og hver "vent, det der er genialt!"-Ăžyeblikk underveis. Det er akkurat det Git gjĂžr for koden din! Det er som Ă„ ha den mest utrolige tidsreisende notatboken som husker ALT – hver tastetrykk, hver endring, hver "oi, det Ăždela alt"-Ăžyeblikk som du umiddelbart kan angre. Jeg skal vĂŠre ĂŠrlig – dette kan fĂžles overveldende i starten. Da jeg begynte, tenkte jeg "Hvorfor kan jeg ikke bare lagre filene mine som vanlig?" Men stol pĂ„ meg: nĂ„r Git klikker for deg (og det vil!), vil du ha et av de lyspĂŠre-Ăžyeblikkene hvor du tenker "Hvordan har jeg NOEN GANG kodet uten dette?" Det er som Ă„ oppdage at du kan fly nĂ„r du har gĂ„tt overalt hele livet! La oss si at du har en mappe lokalt med et kodeprosjekt, og du vil begynne Ă„ spore fremgangen din ved hjelp av git – versjonskontrollsystemet. Noen sammenligner det Ă„ bruke git med Ă„ skrive et kjĂŠrlighetsbrev til ditt fremtidige jeg. NĂ„r du leser commit-meldingene dine dager, uker eller mĂ„neder senere, vil du kunne huske hvorfor du tok en beslutning, eller "rulle tilbake" en endring – det vil si, nĂ„r du skriver gode "commit-meldinger". ### Oppgave: Opprett ditt fĂžrste repository! > 🎯 **Din oppgave (og jeg er sĂ„ spent pĂ„ deg!)**: Vi skal opprette ditt aller fĂžrste GitHub-repository sammen! NĂ„r vi er ferdige her, vil du ha din egen lille hjĂžrne av internett hvor koden din bor, og du vil ha gjort din fĂžrste "commit" (det er utviklersprĂ„k for Ă„ lagre arbeidet ditt pĂ„ en veldig smart mĂ„te). > > Dette er ĂŠrlig talt et sĂ„ spesielt Ăžyeblikk – du er i ferd med Ă„ offisielt bli med i det globale fellesskapet av utviklere! Jeg husker fortsatt spenningen ved Ă„ opprette mitt fĂžrste repo og tenke "Wow, jeg gjĂžr virkelig dette!" La oss gĂ„ gjennom dette eventyret sammen, steg for steg. Ta deg god tid med hver del – det er ingen premie for Ă„ skynde seg, og jeg lover at hvert eneste steg vil gi mening. Husk, hver kodestjerne du beundrer, satt en gang akkurat der du er nĂ„, klar til Ă„ opprette sitt fĂžrste repository. Hvor kult er det? > Sjekk ut videoen > > [![Git og GitHub grunnleggende video](https://img.youtube.com/vi/9R31OUPpxU4/0.jpg)](https://www.youtube.com/watch?v=9R31OUPpxU4) **La oss gjĂžre dette sammen:** 1. **Opprett ditt repository pĂ„ GitHub**. GĂ„ til GitHub.com og se etter den lysegrĂžnne **Ny**-knappen (eller **+**-tegnet Ăžverst til hĂžyre). Klikk pĂ„ den og velg **Nytt repository**. Slik gjĂžr du det: 1. Gi repositoryet ditt et navn – velg noe som betyr noe for deg! 1. Legg til en beskrivelse hvis du vil (dette hjelper andre med Ă„ forstĂ„ hva prosjektet ditt handler om) 1. Bestem om du vil ha det offentlig (alle kan se det) eller privat (bare for deg) 1. Jeg anbefaler Ă„ krysse av for Ă„ legge til en README-fil – det er som forsiden av prosjektet ditt 1. Klikk **Opprett repository** og feir – du har nettopp opprettet ditt fĂžrste repo! 🎉 2. **Naviger til prosjektmappen din**. NĂ„ skal vi Ă„pne terminalen din (ikke bekymre deg, det er ikke sĂ„ skummelt som det ser ut!). Vi mĂ„ fortelle datamaskinen hvor prosjektfilene dine er. Skriv denne kommandoen: ```bash cd [name of your folder] ``` **Hva vi gjĂžr her:** - Vi sier i utgangspunktet "Hei datamaskin, ta meg til prosjektmappen min" - Dette er som Ă„ Ă„pne en spesifikk mappe pĂ„ skrivebordet ditt, men vi gjĂžr det med tekstkommandoer - Erstatt `[navnet pĂ„ mappen din]` med det faktiske navnet pĂ„ prosjektmappen din 3. **GjĂžr mappen din om til et Git repository**. Her skjer magien! Skriv: ```bash git init ``` **Her er hva som nettopp skjedde (ganske kult!):** - Git opprettet en skjult `.git`-mappe i prosjektet ditt – du ser den ikke, men den er der! - Den vanlige mappen din er nĂ„ et "repository" som kan spore hver endring du gjĂžr - Tenk pĂ„ det som Ă„ gi mappen din superkrefter til Ă„ huske alt 4. **Sjekk hva som skjer**. La oss se hva Git tenker om prosjektet ditt akkurat nĂ„: ```bash git status ``` **ForstĂ„ hva Git forteller deg:** Du kan se noe som ser slik ut: ```output Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: file.txt modified: file2.txt ``` **Ikke fĂ„ panikk! Her er hva dette betyr:** - Filer i **rĂždt** er filer som har endringer, men som ikke er klare til Ă„ lagres ennĂ„ - Filer i **grĂžnt** (nĂ„r du ser dem) er klare til Ă„ lagres - Git er hjelpsom ved Ă„ fortelle deg nĂžyaktig hva du kan gjĂžre videre > 💡 **Proff-tips**: Kommandoen `git status` er din beste venn! Bruk den nĂ„r som helst du er forvirret over hva som skjer. Det er som Ă„ spĂžrre Git "Hei, hva er situasjonen akkurat nĂ„?" 5. **GjĂžr filene dine klare til Ă„ lagres** (dette kalles "staging"): ```bash git add . ``` **Hva vi nettopp gjorde:** - Vi fortalte Git "Hei, jeg vil inkludere ALLE filene mine i neste lagring" - `.` er som Ă„ si "alt i denne mappen" - NĂ„ er filene dine "staged" og klare for neste steg **Vil du vĂŠre mer selektiv?** Du kan legge til bare spesifikke filer: ```bash git add [file or folder name] ``` **Hvorfor vil du kanskje gjĂžre dette?** - Noen ganger vil du lagre relaterte endringer sammen - Det hjelper deg med Ă„ organisere arbeidet ditt i logiske deler - GjĂžr det lettere Ă„ forstĂ„ hva som endret seg og nĂ„r **Endret mening?** Ingen problem! Du kan fjerne filer fra staging slik: ```bash # Unstage everything git reset # Unstage just one file git reset [file name] ``` Ikke bekymre deg – dette sletter ikke arbeidet ditt, det tar bare filene ut av "klar til Ă„ lagres"-bunken. 6. **Lagre arbeidet ditt permanent** (gjĂžr din fĂžrste commit!): ```bash git commit -m "first commit" ``` **🎉 Gratulerer! Du har nettopp gjort din fĂžrste commit!** **Her er hva som nettopp skjedde:** - Git tok et "snapshot" av alle de staged filene dine akkurat nĂ„ - Commit-meldingen "fĂžrste commit" forklarer hva dette lagringspunktet handler om - Git ga dette snapshotet en unik ID slik at du alltid kan finne det senere - Du har offisielt begynt Ă„ spore prosjektets historie! > 💡 **Fremtidige commit-meldinger**: For dine neste commits, vĂŠr mer beskrivende! I stedet for "oppdatert ting", prĂžv "La til kontaktskjema pĂ„ hjemmesiden" eller "Fikset feil i navigasjonsmenyen". Ditt fremtidige jeg vil takke deg! 7. **Koble ditt lokale prosjekt til GitHub**. Akkurat nĂ„ eksisterer prosjektet ditt bare pĂ„ datamaskinen din. La oss koble det til GitHub-repositoryet ditt slik at du kan dele det med verden! FĂžrst, gĂ„ til GitHub-repository-siden din og kopier URL-en. Deretter kommer du tilbake hit og skriver: ```bash git remote add origin https://github.com/username/repository_name.git ``` (Erstatt den URL-en med din faktiske repository-URL!) **Hva vi nettopp gjorde:** - Vi har opprettet en forbindelse mellom ditt lokale prosjekt og GitHub-repositoriet ditt - "Origin" er bare et kallenavn for GitHub-repositoriet ditt – det er som Ă„ legge til en kontakt pĂ„ telefonen din - NĂ„ vet ditt lokale Git hvor det skal sende koden din nĂ„r du er klar til Ă„ dele den 💡 **Enklere mĂ„te**: Hvis du har GitHub CLI installert, kan du gjĂžre dette med Ă©n kommando: ```bash gh repo create my-repo --public --push --source=. ``` 8. **Send koden din til GitHub** (det store Ăžyeblikket!): ```bash git push -u origin main ``` **🚀 Dette er det! Du laster opp koden din til GitHub!** **Hva som skjer:** - Dine commits reiser fra datamaskinen din til GitHub - `-u`-flagget setter opp en permanent forbindelse slik at fremtidige pushes blir enklere - "main" er navnet pĂ„ din primĂŠre branch (som hovedmappen) - Etter dette kan du bare skrive `git push` for fremtidige opplastinger! 💡 **Raskt notat**: Hvis branchen din heter noe annet (som "master"), bruk det navnet i stedet. Du kan sjekke med `git branch --show-current`. 9. **Din nye daglige koderytme** (her blir det vanedannende!): Fra nĂ„ av, hver gang du gjĂžr endringer i prosjektet ditt, har du denne enkle tretrinnsprosessen: ```bash git add . git commit -m "describe what you changed" git push ``` **Dette blir din kodingspuls:** - GjĂžr noen fantastiske endringer i koden din ✹ - Stage dem med `git add` ("Hei Git, fĂžlg med pĂ„ disse endringene!") - Lagre dem med `git commit` og en beskrivende melding (fremtidige deg vil takke deg!) - Del dem med verden ved Ă„ bruke `git push` 🚀 - Gjenta – seriĂžst, dette blir like naturlig som Ă„ puste! Jeg elsker denne arbeidsflyten fordi det er som Ă„ ha flere lagringspunkter i et videospill. Gjorde du en endring du elsker? Commit den! Vil du prĂžve noe risikabelt? Ikke noe problem – du kan alltid gĂ„ tilbake til din siste commit hvis ting gĂ„r galt! > 💡 **Tips**: Du vil kanskje ogsĂ„ ta i bruk en `.gitignore`-fil for Ă„ forhindre at filer du ikke vil spore dukker opp pĂ„ GitHub – som den notatfilen du lagrer i samme mappe, men som ikke har noe Ă„ gjĂžre i et offentlig repository. Du kan finne maler for `.gitignore`-filer pĂ„ [.gitignore templates](https://github.com/github/gitignore) eller lage en ved hjelp av [gitignore.io](https://www.toptal.com/developers/gitignore). #### Moderne Git-arbeidsflyter Vurder Ă„ ta i bruk disse moderne praksisene: - **Conventional Commits**: Bruk et standardisert format for commit-meldinger som `feat:`, `fix:`, `docs:` osv. LĂŠr mer pĂ„ [conventionalcommits.org](https://www.conventionalcommits.org/) - **Atomiske commits**: SĂžrg for at hver commit representerer Ă©n logisk endring - **Hyppige commits**: Commit ofte med beskrivende meldinger i stedet for store, sjeldne commits #### Commit-meldinger En god Git-commit-emnelinje fullfĂžrer fĂžlgende setning: Hvis den brukes, vil denne commiten For emnet, bruk imperativ, nĂ„tid: "endre" ikke "endret" eller "endrer". Som i emnet, bruk ogsĂ„ imperativ, nĂ„tid i kroppen (valgfritt). Kroppen bĂžr inkludere motivasjonen for endringen og kontrastere dette med tidligere oppfĂžrsel. Du forklarer `hvorfor`, ikke `hvordan`. ✅ Ta noen minutter til Ă„ surfe rundt pĂ„ GitHub. Kan du finne en virkelig god commit-melding? Kan du finne en veldig minimal en? Hvilken informasjon synes du er den viktigste og mest nyttige Ă„ formidle i en commit-melding? ## Samarbeid med andre (Den morsomme delen!) Hold pĂ„ hatten, for NÅ blir GitHub helt magisk! đŸȘ„ Du har mestret Ă„ administrere din egen kode, men nĂ„ dykker vi inn i min absolutte favorittdel – Ă„ samarbeide med fantastiske mennesker fra hele verden. Se for deg dette: Du vĂ„kner i morgen og ser at noen i Tokyo har forbedret koden din mens du sov. SĂ„ fikser noen i Berlin en feil du har slitt med. Innen ettermiddagen har en utvikler i SĂŁo Paulo lagt til en funksjon du aldri engang hadde tenkt pĂ„. Det er ikke science fiction – det er bare en vanlig tirsdag i GitHub-universet! Det som virkelig begeistrer meg er at samarbeidsferdighetene du er i ferd med Ă„ lĂŠre? Dette er de EKSAKTE samme arbeidsflytene som teamene hos Google, Microsoft og dine favorittstartups bruker hver eneste dag. Du lĂŠrer ikke bare et kult verktĂžy – du lĂŠrer det hemmelige sprĂ„ket som fĂ„r hele programvareverdenen til Ă„ samarbeide. SeriĂžst, nĂ„r du opplever gleden av at noen godkjenner din fĂžrste pull request, vil du forstĂ„ hvorfor utviklere blir sĂ„ lidenskapelige om Ă„pen kildekode. Det er som Ă„ vĂŠre en del av verdens stĂžrste, mest kreative teamprosjekt! > Se video > > [![Git og GitHub grunnleggende video](https://img.youtube.com/vi/bFCM-PC3cu8/0.jpg)](https://www.youtube.com/watch?v=bFCM-PC3cu8) Hovedgrunnen til Ă„ legge ting pĂ„ GitHub var Ă„ gjĂžre det mulig Ă„ samarbeide med andre utviklere. I ditt repository, naviger til `Insights > Community` for Ă„ se hvordan prosjektet ditt sammenlignes med anbefalte fellesskapsstandarder. Vil du fĂ„ repositoryet ditt til Ă„ se profesjonelt og innbydende ut? GĂ„ til repositoryet ditt og klikk pĂ„ `Insights > Community`. Denne kule funksjonen viser deg hvordan prosjektet ditt sammenlignes med det GitHub-fellesskapet anser som "gode repository-praksiser." > 🎯 **FĂ„ prosjektet ditt til Ă„ skinne**: Et godt organisert repository med god dokumentasjon er som Ă„ ha en ren, innbydende butikkfront. Det viser folk at du bryr deg om arbeidet ditt og fĂ„r andre til Ă„ ville bidra! **Dette gjĂžr et repository fantastisk:** | Hva du bĂžr legge til | Hvorfor det er viktig | Hva det gjĂžr for deg | |-----------------------|-----------------------|-----------------------| | **Beskrivelse** | FĂžrsteinntrykk teller! | Folk vet umiddelbart hva prosjektet ditt gjĂžr | | **README** | Forsiden til prosjektet ditt | Som en vennlig guide for nye besĂžkende | | **Retningslinjer for bidrag** | Viser at du Ăžnsker hjelp | Folk vet nĂžyaktig hvordan de kan hjelpe deg | | **Adferdskodeks** | Skaper et vennlig miljĂž | Alle fĂžler seg velkomne til Ă„ delta | | **Lisens** | Juridisk klarhet | Andre vet hvordan de kan bruke koden din | | **Sikkerhetspolicy** | Viser at du er ansvarlig | Demonstrerer profesjonelle praksiser | > 💡 **Profftips**: GitHub tilbyr maler for alle disse filene. NĂ„r du oppretter et nytt repository, huk av boksene for Ă„ automatisk generere disse filene. **Moderne GitHub-funksjoner Ă„ utforske:** đŸ€– **Automatisering & CI/CD:** - **GitHub Actions** for automatisert testing og distribusjon - **Dependabot** for automatiske oppdateringer av avhengigheter 💬 **Fellesskap & Prosjektledelse:** - **GitHub Discussions** for fellesskapsdiskusjoner utover issues - **GitHub Projects** for kanban-stil prosjektledelse - **Branch-beskyttelsesregler** for Ă„ opprettholde kodekvalitetsstandarder Alle disse ressursene vil vĂŠre nyttige for Ă„ onboarde nye teammedlemmer. Og dette er typisk ting nye bidragsytere ser pĂ„ fĂžr de i det hele tatt ser pĂ„ koden din, for Ă„ finne ut om prosjektet ditt er det rette stedet for dem Ă„ bruke tiden sin. ✅ README-filer, selv om de tar tid Ă„ forberede, blir ofte oversett av travle vedlikeholdere. Kan du finne et eksempel pĂ„ en spesielt beskrivende README? Merk: det finnes noen [verktĂžy for Ă„ lage gode README-filer](https://www.makeareadme.com/) som du kanskje vil prĂžve. ### Oppgave: Merge litt kode Bidragsdokumenter hjelper folk med Ă„ bidra til prosjektet. Det forklarer hvilke typer bidrag du ser etter og hvordan prosessen fungerer. Bidragsytere mĂ„ gĂ„ gjennom en serie med steg for Ă„ kunne bidra til ditt repo pĂ„ GitHub: 1. **Forke repoet ditt** Du vil sannsynligvis at folk skal _forke_ prosjektet ditt. Forking betyr Ă„ lage en kopi av repositoryet ditt pĂ„ deres GitHub-profil. 1. **Clone**. Derfra vil de klone prosjektet til sin lokale maskin. 1. **Opprette en branch**. Du vil be dem om Ă„ opprette en _branch_ for arbeidet sitt. 1. **Fokusere endringen pĂ„ ett omrĂ„de**. Be bidragsytere om Ă„ konsentrere bidragene sine pĂ„ Ă©n ting av gangen – pĂ„ den mĂ„ten Ăžker sjansen for at du kan _merge_ arbeidet deres. Tenk deg at de skriver en feilretting, legger til en ny funksjon og oppdaterer flere tester – hva om du vil, eller bare kan implementere 2 av 3, eller 1 av 3 endringer? ✅ Tenk deg en situasjon der branches er spesielt kritiske for Ă„ skrive og levere god kode. Hvilke bruksomrĂ„der kan du komme pĂ„? > Merk, vĂŠr den endringen du Ăžnsker Ă„ se i verden, og opprett branches for ditt eget arbeid ogsĂ„. Alle commits du gjĂžr vil bli gjort pĂ„ branchen du for Ăžyeblikket er "checked out" til. Bruk `git status` for Ă„ se hvilken branch det er. La oss gĂ„ gjennom en bidragsarbeidsflyt. Anta at bidragsyteren allerede har _forket_ og _klonet_ repoet, sĂ„ de har et Git-repo klart til Ă„ jobbe med pĂ„ sin lokale maskin: 1. **Opprett en branch**. Bruk kommandoen `git branch` for Ă„ opprette en branch som vil inneholde endringene de har tenkt Ă„ bidra med: ```bash git branch [branch-name] ``` > 💡 **Moderne tilnĂŠrming**: Du kan ogsĂ„ opprette og bytte til den nye branchen med Ă©n kommando: ```bash git switch -c [branch-name] ``` 1. **Bytt til arbeidsbranch**. Bytt til den spesifiserte branchen og oppdater arbeidskatalogen med `git switch`: ```bash git switch [branch-name] ``` > 💡 **Moderne notat**: `git switch` er den moderne erstatningen for `git checkout` nĂ„r du bytter branch. Det er tydeligere og tryggere for nybegynnere. 1. **UtfĂžr arbeid**. PĂ„ dette tidspunktet kan du legge til endringene dine. Ikke glem Ă„ informere Git om det med fĂžlgende kommandoer: ```bash git add . git commit -m "my changes" ``` > ⚠ **Kvalitet pĂ„ commit-meldinger**: SĂžrg for Ă„ gi commiten din et godt navn, bĂ„de for din egen del og for vedlikeholderen av repoet du hjelper til med. VĂŠr spesifikk om hva du har endret! 1. **Kombiner arbeidet ditt med `main`-branchen**. PĂ„ et tidspunkt er du ferdig med arbeidet og Ăžnsker Ă„ kombinere det med `main`-branchen. `main`-branchen kan ha endret seg i mellomtiden, sĂ„ sĂžrg for Ă„ oppdatere den til det nyeste med fĂžlgende kommandoer: ```bash git switch main git pull ``` PĂ„ dette tidspunktet vil du sĂžrge for at eventuelle _konflikter_, situasjoner der Git ikke enkelt kan _kombinere_ endringene, skjer i din arbeidsbranch. Derfor kjĂžr fĂžlgende kommandoer: ```bash git switch [branch_name] git merge main ``` Kommandoen `git merge main` vil hente inn alle endringer fra `main` til din branch. ForhĂ„pentligvis kan du bare fortsette. Hvis ikke, vil VS Code fortelle deg hvor Git er _forvirret_, og du kan endre de berĂžrte filene for Ă„ angi hvilket innhold som er mest nĂžyaktig. 💡 **Moderne alternativ**: Vurder Ă„ bruke `git rebase` for en renere historikk: ```bash git rebase main ``` Dette spiller av dine commits pĂ„ toppen av den nyeste main-branchen, og skaper en lineĂŠr historikk. 1. **Send arbeidet ditt til GitHub**. Å sende arbeidet ditt til GitHub betyr to ting. Å pushe branchen din til repoet ditt og deretter Ă„pne en PR, Pull Request. ```bash git push --set-upstream origin [branch-name] ``` Kommandoen ovenfor oppretter branchen pĂ„ ditt forkede repo. 1. **Åpne en PR**. Deretter vil du Ă„pne en PR. Du gjĂžr det ved Ă„ navigere til det forkede repoet pĂ„ GitHub. Du vil se en indikasjon pĂ„ GitHub hvor det spĂžr om du vil opprette en ny PR, du klikker pĂ„ det og blir tatt til et grensesnitt hvor du kan endre commit-meldingens tittel, gi den en mer passende beskrivelse. NĂ„ vil vedlikeholderen av repoet du forked se denne PR-en og _krysser fingrene_ for at de setter pris pĂ„ og _merger_ PR-en din. Du er nĂ„ en bidragsyter, yay :) 💡 **Moderne tips**: Du kan ogsĂ„ opprette PR-er ved hjelp av GitHub CLI: ```bash gh pr create --title "Your PR title" --body "Description of changes" ``` 🔧 **Beste praksis for PR-er**: - Link til relaterte issues ved Ă„ bruke nĂžkkelord som "Fixes #123" - Legg til skjermbilder for UI-endringer - Be om spesifikke anmeldere - Bruk utkast-PR-er for arbeid som pĂ„gĂ„r - SĂžrg for at alle CI-sjekker er bestĂ„tt fĂžr du ber om gjennomgang 1. **Rydd opp**. Det anses som god praksis Ă„ _rydde opp_ etter at du har lykkes med Ă„ merge en PR. Du vil rydde opp bĂ„de din lokale branch og branchen du pushet til GitHub. FĂžrst, la oss slette den lokalt med fĂžlgende kommando: ```bash git branch -d [branch-name] ``` SĂžrg for Ă„ gĂ„ til GitHub-siden for det forkede repoet og fjern den eksterne branchen du nettopp pushet til. `Pull request` virker som et rart begrep fordi du egentlig Ăžnsker Ă„ pushe endringene dine til prosjektet. Men vedlikeholderen (prosjekteieren) eller kjerneteamet mĂ„ vurdere endringene dine fĂžr de merger dem med prosjektets "main"-branch, sĂ„ du ber egentlig om en beslutning om endringen fra en vedlikeholder. En pull request er stedet for Ă„ sammenligne og diskutere forskjellene som er introdusert pĂ„ en branch med anmeldelser, kommentarer, integrerte tester og mer. En god pull request fĂžlger omtrent de samme reglene som en commit-melding. Du kan legge til en referanse til en issue i issue-tracker, nĂ„r arbeidet ditt for eksempel fikser en issue. Dette gjĂžres ved Ă„ bruke en `#` etterfulgt av nummeret pĂ„ din issue. For eksempel `#97`. đŸ€žKrysser fingrene for at alle sjekker gĂ„r gjennom og at prosjektets eier(e) godkjenner endringene dine og slĂ„r dem sammen med prosjektetđŸ€ž Oppdater din nĂ„vĂŠrende lokale arbeidsgren med alle nye commits fra den tilsvarende eksterne grenen pĂ„ GitHub: `git pull` ## Bidra til Open Source (Din sjanse til Ă„ gjĂžre en forskjell!) Er du klar for noe som kommer til Ă„ blĂ„se deg helt av banen? đŸ€Ż La oss snakke om Ă„ bidra til open source-prosjekter – jeg fĂ„r gĂ„sehud bare av Ă„ dele dette med deg! Dette er din sjanse til Ă„ bli en del av noe virkelig ekstraordinĂŠrt. Tenk deg Ă„ forbedre verktĂžyene som millioner av utviklere bruker hver dag, eller fikse en feil i en app som vennene dine elsker. Det er ikke bare en drĂžm – det er det open source-bidrag handler om! Her er det som gir meg frysninger hver gang jeg tenker pĂ„ det: hvert eneste verktĂžy du har lĂŠrt med – kodeeditoren din, rammeverkene vi skal utforske, til og med nettleseren du leser dette i – startet med noen akkurat som deg som gjorde sitt aller fĂžrste bidrag. Den geniale utvikleren som bygde din favoritt-VS Code-utvidelse? De var en gang en nybegynner som klikket "create pull request" med skjelvende hender, akkurat som du er i ferd med Ă„ gjĂžre. Og her er det vakreste: open source-samfunnet er som internettets stĂžrste gruppesamling. De fleste prosjekter ser aktivt etter nykommere og har problemer merket "good first issue" spesielt for folk som deg! Vedlikeholdere blir genuint begeistret nĂ„r de ser nye bidragsytere fordi de husker sine egne fĂžrste steg. Du lĂŠrer ikke bare Ă„ kode her – du forbereder deg pĂ„ Ă„ bli med i en global familie av skapere som vĂ„kner hver dag og tenker "Hvordan kan vi gjĂžre den digitale verden litt bedre?" Velkommen til klubben! 🌟 FĂžrst, la oss finne et repository (eller **repo**) pĂ„ GitHub som interesserer deg og som du Ăžnsker Ă„ bidra med en endring til. Du vil kopiere innholdet til din maskin. ✅ En god mĂ„te Ă„ finne 'nybegynnervennlige' repoer pĂ„ er Ă„ [sĂžke etter taggen 'good-first-issue'](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/). ![Kopier et repo lokalt](../../../../translated_images/clone_repo.5085c48d666ead57664f050d806e325d7f883be6838c821e08bc823ab7c66665.no.png) Det finnes flere mĂ„ter Ă„ kopiere kode pĂ„. En mĂ„te er Ă„ "klone" innholdet i repositoryet, ved Ă„ bruke HTTPS, SSH eller GitHub CLI (Command Line Interface). Åpne terminalen din og klon repositoryet slik: ```bash # Using HTTPS git clone https://github.com/ProjectURL # Using SSH (requires SSH key setup) git clone git@github.com:username/repository.git # Using GitHub CLI gh repo clone username/repository ``` For Ă„ jobbe med prosjektet, bytt til riktig mappe: `cd ProjectURL` Du kan ogsĂ„ Ă„pne hele prosjektet ved Ă„ bruke: - **[GitHub Codespaces](https://github.com/features/codespaces)** - GitHubs skyutviklingsmiljĂž med VS Code i nettleseren - **[GitHub Desktop](https://desktop.github.com/)** - En GUI-applikasjon for Git-operasjoner - **[GitHub.dev](https://github.dev)** - Trykk pĂ„ `.`-tasten pĂ„ et hvilket som helst GitHub-repo for Ă„ Ă„pne VS Code i nettleseren - **VS Code** med GitHub Pull Requests-utvidelsen Til slutt kan du laste ned koden i en zip-mappe. ### Noen flere interessante ting om GitHub Du kan stjerne, fĂžlge og/eller "forke" ethvert offentlig repository pĂ„ GitHub. Du finner dine stjernemerkede repositories i rullegardinmenyen Ăžverst til hĂžyre. Det er som bokmerker, men for kode. Prosjekter har en problemsporer, som oftest pĂ„ GitHub under "Issues"-fanen med mindre annet er angitt, hvor folk diskuterer problemer relatert til prosjektet. Og Pull Requests-fanen er der folk diskuterer og vurderer endringer som er under behandling. Prosjekter kan ogsĂ„ ha diskusjoner i forum, e-postlister eller chattekanaler som Slack, Discord eller IRC. 🔧 **Moderne GitHub-funksjoner**: - **GitHub Discussions** - Innebygd forum for samtaler i fellesskapet - **GitHub Sponsors** - StĂžtt vedlikeholdere Ăžkonomisk - **Security-fanen** - Rapporter om sĂ„rbarheter og sikkerhetsrĂ„d - **Actions-fanen** - Se automatiserte arbeidsflyter og CI/CD-pipelines - **Insights-fanen** - Analyse om bidragsytere, commits og prosjektets helse - **Projects-fanen** - GitHubs innebygde prosjektstyringsverktĂžy ✅ Ta en titt rundt i ditt nye GitHub-repo og prĂžv noen ting, som Ă„ redigere innstillinger, legge til informasjon i repoet ditt, opprette et prosjekt (som et Kanban-brett), og sette opp GitHub Actions for automatisering. Det er mye du kan gjĂžre! --- ## 🚀 Utfordring Ok, det er pĂ„ tide Ă„ teste dine nye GitHub-superkrefter! 🚀 Her er en utfordring som kommer til Ă„ fĂ„ alt til Ă„ falle pĂ„ plass pĂ„ den mest tilfredsstillende mĂ„ten: Ta med deg en venn (eller et familiemedlem som alltid spĂžr hva du driver med nĂ„r du sitter foran datamaskinen) og begi dere ut pĂ„ et samarbeidsprosjekt sammen! Her skjer den virkelige magien – opprett et prosjekt, la dem forke det, lag noen grener og slĂ„ sammen endringer som de proffene dere er i ferd med Ă„ bli. Jeg skal ikke lyve – dere kommer sannsynligvis til Ă„ le pĂ„ et tidspunkt (spesielt nĂ„r dere begge prĂžver Ă„ endre den samme linjen), kanskje klĂž dere i hodet av forvirring, men dere vil definitivt ha de fantastiske "aha!"-Ăžyeblikkene som gjĂžr all lĂŠringen verdt det. I tillegg er det noe spesielt med Ă„ dele den fĂžrste vellykkede sammenslĂ„ingen med noen andre – det er som en liten feiring av hvor langt dere har kommet! Har du ikke en kodevenn ennĂ„? Ingen problem! GitHub-samfunnet er fullt av utrolig velkomne mennesker som husker hvordan det var Ă„ vĂŠre ny. Se etter repositories med "good first issue"-etiketter – de sier i bunn og grunn "Hei nybegynnere, kom og lĂŠr med oss!" Hvor kult er ikke det? ## Quiz etter forelesning [Quiz etter forelesning](https://ff-quizzes.netlify.app/web/en/) ## Oppsummering & Fortsett Ă„ lĂŠre Puh! 🎉 Se pĂ„ deg – du har nettopp mestret GitHub-grunnleggende som en ekte mester! Hvis hjernen din fĂžles litt full akkurat nĂ„, er det helt normalt og faktisk et godt tegn. Du har nettopp lĂŠrt verktĂžy som tok meg uker Ă„ bli komfortabel med da jeg startet. Git og GitHub er utrolig kraftige (som, seriĂžst kraftige), og hver utvikler jeg kjenner – inkludert de som nĂ„ virker som trollmenn – mĂ„tte Ăžve og snuble litt fĂžr alt falt pĂ„ plass. Det faktum at du har kommet deg gjennom denne leksjonen betyr at du allerede er pĂ„ vei til Ă„ mestre noen av de viktigste verktĂžyene i en utviklers verktĂžykasse. Her er noen helt fantastiske ressurser for Ă„ hjelpe deg med Ă„ Ăžve og bli enda mer fantastisk: - [Veiledning for Ă„ bidra til open source-programvare](https://opensource.guide/how-to-contribute/#how-to-submit-a-contribution) – Din veikart til Ă„ gjĂžre en forskjell - [Git jukselapp](https://training.github.com/downloads/github-git-cheat-sheet/) – Ha denne tilgjengelig for rask referanse! Og husk: Ăžvelse gir fremgang, ikke perfeksjon! Jo mer du bruker Git og GitHub, jo mer naturlig blir det. GitHub har laget noen fantastiske interaktive kurs som lar deg Ăžve i et trygt miljĂž: - [Introduksjon til GitHub](https://github.com/skills/introduction-to-github) - [Kommuniser med Markdown](https://github.com/skills/communicate-using-markdown) - [GitHub Pages](https://github.com/skills/github-pages) - [HĂ„ndtering av sammenslĂ„ingskonflikter](https://github.com/skills/resolve-merge-conflicts) **FĂžler du deg eventyrlysten? Sjekk ut disse moderne verktĂžyene:** - [GitHub CLI-dokumentasjon](https://cli.github.com/manual/) – For nĂ„r du vil fĂžle deg som en kommandolinje-trollmann - [GitHub Codespaces-dokumentasjon](https://docs.github.com/en/codespaces) – Kode i skyen! - [GitHub Actions-dokumentasjon](https://docs.github.com/en/actions) – Automatiser alt - [Beste praksis for Git](https://www.atlassian.com/git/tutorials/comparing-workflows) – Ta arbeidsflyten din til neste nivĂ„ ## GitHub Copilot Agent Challenge 🚀 Bruk Agent-modus for Ă„ fullfĂžre fĂžlgende utfordring: **Beskrivelse:** Opprett et samarbeidsprosjekt for webutvikling som demonstrerer hele GitHub-arbeidsflyten du har lĂŠrt i denne leksjonen. Denne utfordringen vil hjelpe deg med Ă„ Ăžve pĂ„ opprettelse av repository, samarbeidsfunksjoner og moderne Git-arbeidsflyter i et realistisk scenario. **Oppgave:** Opprett et nytt offentlig GitHub-repository for et enkelt "Web Development Resources"-prosjekt. Repositoryet bĂžr inkludere en godt strukturert README.md-fil som lister opp nyttige verktĂžy og ressurser for webutvikling, organisert etter kategorier (HTML, CSS, JavaScript, osv.). Sett opp repositoryet med riktige fellesskapsstandarder, inkludert lisens, retningslinjer for bidrag og en adferdskodeks. Opprett minst to funksjonsgrener: en for Ă„ legge til CSS-ressurser og en annen for JavaScript-ressurser. GjĂžr commits til hver gren med beskrivende commit-meldinger, og opprett deretter pull requests for Ă„ slĂ„ sammen endringene tilbake til main. Aktiver GitHub-funksjoner som Issues, Discussions, og sett opp en grunnleggende GitHub Actions-arbeidsflyt for automatiserte sjekker. ## Oppgave Din oppgave, hvis du velger Ă„ akseptere den: FullfĂžr [Introduksjon til GitHub](https://github.com/skills/introduction-to-github)-kurset pĂ„ GitHub Skills. Dette interaktive kurset lar deg Ăžve pĂ„ alt du har lĂŠrt i et trygt, veiledet miljĂž. I tillegg fĂ„r du et kult merke nĂ„r du er ferdig! 🏅 **FĂžler du deg klar for flere utfordringer?** - Sett opp SSH-autentisering for GitHub-kontoen din (slutt pĂ„ passord!) - PrĂžv Ă„ bruke GitHub CLI for dine daglige Git-operasjoner - Opprett et repository med en GitHub Actions-arbeidsflyt - Utforsk GitHub Codespaces ved Ă„ Ă„pne akkurat dette repositoryet i en skybasert editor Husk: hver ekspert var en gang nybegynner. Du klarer dette! đŸ’Ș --- **Ansvarsfraskrivelse**: Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nĂžyaktighet, vĂŠr oppmerksom pĂ„ at automatiske oversettelser kan inneholde feil eller unĂžyaktigheter. Det originale dokumentet pĂ„ sitt opprinnelige sprĂ„k bĂžr anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforstĂ„elser eller feiltolkninger som oppstĂ„r ved bruk av denne oversettelsen.