# Välkomna
<!-- Put the link to this slide here so people can follow -->
slide: https://hackmd.io/@1DjJVCYUR0ipYLJJ7gnfzQ/S1TbJ5ZUu
---
## Git/markdown skola med William.
***- Git i terminalen, windows/mac/linux.***
***- Vi ska även kolla lite på markdown***
---
### Git basics
- Version Control
- Spårbarhet
- Inget mer oroande över "vad fan var det jag ändrade sist?"
---
### Basic kommandon för att enkelt starta igång projekt.
- <code class="blue">git config --global user.name "username"</code>: Sätter ert användarnamn globalt, alltså för alla repos etc.
- <code class="blue">git config --global user.email "email@example.com"</code>: sätt er commit mail adress.
---
### Ansluta till github:
- Mac/linux
```bash=
ls -al ~/.ssh
#Kolla om det finns någon av dessa:
# id_rsa.pub
# id_ecdsa.pub
# id_ed25519.pub
```
- I windows ligger dessa under C:\Users\{dittanvändarnamn}\.ssh\id_rsa.pub
Har ni ingen SSH key kan ni läsa på [Github Docs](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh) hur man gör.
Ni måste även koppla er nyckel till ert github konto.
#### Ansluta till github

I din repo hittar du din ssh anslutning när du klickar på code knappen.
```bash=
#SSH variant
git remote add origin git@github.com:Krut-Oskar/git_test.git
#HTTPS variant
git remote add origin https://github.com/Krut-Oskar/git_test.git
```
Nu är origin namnet på din remote repo.
Du kan nu pusha saker från din lokala repo till din remote(github) direkt från terminalen.
---
### VAD FAN ÄR ETT LOCAL REPO DÅ?
Jo det ska jag berätta. SKOJA vet typ inte men kan förklara lite hur det funkar.
- Först måste ni ha en liten mapp för ert projekt.
```bash=
#Basically samma för alla OS.
cd /home/user/dev
mkdir mittnyaprojekt
cd mittnyaprojekt
```
- Initiera git i den här mappen
```bash=
git init
```
- skriv <code>git status</code>
- Nu borde det se ut så här ish.

- Nu kan ni slänga in lite filer och skriva <code>git status</code> igen och det borde se ut så här.

- Dett betyder att filerna inte är spåras av git. Men git ser att de finns i mappen.
- För att börja spåra dessa filer med git måste de läggas till. Det gör vi med <code>git add {filnamn}</code>.
- Här har jag endast börjat spåra README.md men inte python filen. Alla ändringar jag gör till den filen kommer nu sparas av git.

- För att commita den här ändringen så att git sparar ner den använder jag <code>git commit -m "mitt meddelande"</code>

---
## Nu har jag en local repository.
- Att "committa" är som att trycka "Spara som.." i Word.
- Comitten sparar de ändringar som ni gjort till alla filer som är addade och spåras av git.
- Om ni gör det ofta blir det lätt att gå tillbaka och se vad ni gjort om ni får errors.
- Filen som är comittad försvinner även från <code>git status</code> om den inte ändras, så fort den ändras kommer det synas

- Nu är ni redo för att pusha till github!
---
## Pusha till github
- Nu kan ni lägga till er remote repository som jag visade i början.
- För att skicka det som är sparat och ändrings historiken till github använder vi <code>git push</code> kommandot.
```bash=
git push origin main.
#origin är namnet på remote och main är namnet på den branch vi pushar till.
```
- Nu borde dina filer ha skickats till ditt github repo.
### Så enkelt var det!
---

---
## Git pull/clone/fetch
### Clone
<code>git clone {url}</code>
Kopierar en repository till den directory du är på din dator. Används för att ladda ner kod från github t.ex.
### Fetch
<code>git fetch {url}</code>
Laddar ner ny data från specifierad repository men ändrar inget i din lokala repository.
### Pull
<code>git pull {url}</code>
Laddar ner ny data från specifierad repository ***och mergar den med ditt nuvarande lokala repository.*** Så var försiktiga med detta bör endast användas med en "tom" lokal repository. ***Alla sparade ändringar som endast finns lokalt kommer att skrivas över.***
---
## Extra
### Git log
<code>git log</code>
Används för att se commit historik.
### Git ammend
<code>git commit --ammend</code>
Används för att t.ex. lägga till en till fil i en commit om man glömt en. Den ersätter din tidigare commit så du kommer bara se en commit i historiken.
### Git restore
<code>git restore {filename}</code>
<code>git restore --staged {filename}</code>
Används för att återställa en fil till hur den såg ut i den senaste commiten (eller clonen). Om du har råkat adda en fil som du inte ville adda kan du med flaggan --staged ta bort den så att git slutar spåra den.
### Läs mer
[Gits egen hemsida!](https://git-scm.com/doc)
[Github docs.](https://docs.github.com/en)
{"metaMigratedAt":"2023-06-15T22:43:09.667Z","metaMigratedFrom":"YAML","title":"Talk slides template","breaks":true,"description":"View the slide with \"Slide Mode\".","contributors":"[{\"id\":\"d438c954-2614-4748-a960-b249ee09dfcd\",\"add\":7300,\"del\":2336}]"}