README.md
This repo is as set of tasks related to a lecture on basic git.
Clone this repo to proceed with the tasks.
Noen av oppgavene bryter med det som er beste praksis og det som er realistisk i et indistruellt prosjekt. Dette er fordi oppgavenes poeng er å vise hvordan funksjonaliteten i git fungerer og at det er foskjellig hva folk mener er beste praksis.
- Kjør
git statusog se at du er på master/main branch, at working tree er clean og at det ikke er noe å comitt'e. - Åpne
EN.txtog skriv noe i filen og lagre den. - Kjør
git statusog se at filen ligger under "not staged for commit", dette betyr at filen er registrert i git, men at endringene i den ikke er en del av neste commit. - Kjør
git add EN.txt. - Kjør
git statusog se at filen nå ligger under "staged for commit", dette betyr at den blir en del av neste commit. - Kjør
git restore --staged EN.txtfor fjerne filen fra staging area. - Kjør
git statusfor å verifisere handlingen. - Kjør
git restore EN.txtfor å sette filen tilbake til den tilstanden den var før du gjorde endringene. - Kjør
git statusog se at det er likt som i punkt 1.
- Opprett en ny fil (med feks.
touch <filnavn>). - Kjør
git status- filen vil nå ligge under "untracked files", dette betyr at den ikke er registrert i git. - Kjør
git add <filnavn>. - Kjør
git statusog se at filen er staget. - Kjør
git restore --staged <filnavn>for å fjerne filen igjen fra staging. - Kjør
git statusfor å se at filen er tilbake til "untracked files" - Kjør
git clean -f .for å fjerne filen fra git og filsystemet.
- Kjør
git logfor å se historien til repositoriet. - Åpne
EN.txt, skriv "oppgave 2" i filen og lagre den. - Kjør
git add *for å stage endringen. - Kjør
git commit -m "oppgave 2"for å commmit'e endringene lokalt. - Kjør
git log. Du vil nå se at (HEAD -> main) ligger en commit foran (origin/main). Dette betyr at hodepekeren (der du ser på repositoriet) ikke er den samme tilstanden som repositoriet er i på GitHub. - Kjør
git pushfør å sende dine endringer til remote repository. - Kjør
git logfor å set at origin/main og HEAD er på samme commit.
- Kjør
git statusoggit logfor å få oversikt over repositoriet. - Kjør
git checkout -b branch-1for å opprette og bytte til grenenbranch-1. - Lag en ny fil som heter "BRANCH-1.txt og commit den.
- Kjør
git checkout -b branch-2for å opprette og bytte til grenenbranch-2. Denne grenen tar utgangspunkt ibranch-1. - Lag en ny fil som heter "BRANCH-2.txt og commit den.
- Kjør
git log,git statusoglsfor å se at alle endringene er i denne. branchen. - Kjør
git checkout -for å skifte tilbake til forrige branch (branch-1). - Kjør
git log,git statusoglsfor å se at endringene frabranch-2ikke er til stede. - Kjør
git checkout mainfor å skifte tilbake til main-branch. - Kjør
git log,git statusoglsfor å se at ingen av endringene i "branch-1" eller "branch-2" er til stede.
- Kjør
git pullfor å sørge for at du har de siste endringene lokalt. - Orienter deg på
mainbranch. (git log, evt.git statusogls) - Bytt til branchen
merge-branch. - Orienter deg på denne branchen og se at den har to commits som ikke er på
main. - Kjør
git merge mainfor å flette inn evt. endringer som har skjedd påmainsom ikke er på din branch. Dette er vanlig praksis fordi man vil skånemainfor potensielle konflikter. - Orienter deg på branchen og se om det er noen endringer.
- Bytt til
mainbranch. - Kjør
git log. - Kjør
git merge merge-branchfor å flettemerge-branchinn imain. - Kjør
git logog sammenlign loggen før og etter merge.
// NOT IMPLEMENTED
// NOT IMPELEMENTED
- Kjør
git pullfor å sørge for at du har de siste endringene lokalt. - Orienter deg på
mainbranch. (git log, evt.git statusogls) - Bytt til branchen
rebase-branch. - Orienter deg på denne branchen og se at den har to commits som ikke er på
main. - Kjør
git rebase mainfor å putte inn evt. endringer som har skjedd påmainsom ikke er på din branch på toppen av din branch. Dette er vanlig praksis fordi man vil skånemainfor potensielle konflikter. - Orienter deg på branchen og se om det er noen endringer.
- Bytt til
mainbranch. - Kjør
git log. - Kjør
git rebase rebase-branchfor å setterebase-branchpå toppen avmain. - Kjør
git logog sammenlign loggen før og etter rebase.
- Kjør
git pullfor å sørge for at du har de siste endringene lokalt. - Orienter deg på
mainbranch. (git log, evt.git statusogls) - Bytt til branchen
squash-branch. - Orienter deg på denne branchen og se at den har to commits som ikke er på
main. - Kjør
git rebase -i <commit-hash>der "commit-hash> er hash'en til commiten før "squash-1". (til men ikke med) - Endre "pick" til "squash" forran "squash-2" og endre "pick" til "reword". Klikk så "ctrl + x", etterfulgt av "y" på spørsmål om "Save modified buffer?", "eterfulgt av "enter".
- Du vil nå få opp en skjerm hvor du kan endre commit-meldingen til "squash-1" commiten, og siden "squash-2" blir most inn i denne vil dette bli deres nye felles melding.
- Bytt til
mainbranch. - Kjør
git log. - Kjør
git rebase squash-branchfor å settesquash-branchpå toppen avmain. - Kjør
git logog sammenlign loggen før og etter rebase.
Lek deg med git rebase -i <commit-hash>. Les nøye gjennom alle mulighetene du har. Prøv f.eks. å endre en commit og/eller prøv å endre en commit-melding. Her er det tryggt å ødelegge ting. :)