> For the complete documentation index, see [llms.txt](https://coursepress.gitbook.io/1dv021/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://coursepress.gitbook.io/1dv021/guider/sa-kommer-du-igang-med-ditt-repo-for-ovningsuppgifterna.md).

# Så kommer du igång med ditt repo för övningsuppgifterna

Här hittar du anvisningar som visar dig steg för steg de olika moment du är tvungen att utföra för att skapa förutsättningar för ditt arbete med kursens övningsuppgifter.

{% hint style="danger" %}
För att kunna följa denna guide behöver du tillgång till internet, ett GitHub-konto samt ett privat repositorium under organisationen på <https://github.com/1dv021>.
{% endhint %}

## Steg 1. Öppna ett terminalfönster

Öppna ett terminalfönster (Bash).

{% tabs %}
{% tab title="Windows" %}
Bash installerades när du installerade *Git*. Sök efter och välj *Git Bash*.
{% endtab %}

{% tab title="macOS" %}
Bash är en del av din plattform från början. Sök efter och välj *Terminal*, som är applikationen du ska använda.
{% endtab %}

{% tab title="Linux" %}
Bash är en del av din plattform från början. Sök efter och välj *Terminal*, som är applikationen du ska använda.
{% endtab %}
{% endtabs %}

## Steg 2. Skapa en katalog för kursens repon

Under kursen kommer du att arbeta med flera repon. Det är därför lämpligt att samla de lokala repona under en och samma katalog, förslagsvis namngiven efter kursens kod 1dv021.

```bash
mkdir 1dv021
```

## Steg 3. Byt till den nya katalogen

&#x20;**VIKTIGT!** För de kommande stegen är det viktigt att du står i katalogen du skapade under steg 1 genom att använda kommandot `cd` ("*change directory*").

```bash
cd 1dv021
```

## Steg 4. Klona ditt repo för övningsuppgifter

Du har blivit tilldelad ett privat tomt repo för dina övningsuppgifter. I detta repo samlar du alla övningsuppgifter du gör. Du skapar en lokal arbetskopia av ditt repo för övningsuppgifter med [`git clone`](https://help.github.com/articles/cloning-a-repository/).

```bash
git clone https://github.com/1dv021/example-username-exercises.git
```

{% hint style="danger" %}
***OBS!***  Ersätt `example-username` i `example-username-exercises.git` med ditt användarnamn du fått av universitetet.
{% endhint %}

Exempelutskrift:

```
Cloning into 'example-username-exercises'...
warning: You appear to have cloned an empty repository.
```

{% hint style="info" %}
Genom att använda `git clone` klonar du ett befintligt repo på GitHub, d.v.s. du skapar en lokal fullständig arbetskopia av repot på GitHub. En katalog kommer att skapas med samma namn som repot du klonar, i detta fall `[example-username]-exercises`, och fyllas med de filer och kataloger repot innehåller. De ändringar du gör lokalt kommer att skickas till repot på GitHub då du använder kommandot `git push`.
{% endhint %}

## Steg 5. Verifiera att katalog skapats

Kontrollera att allt hittils fungerat som förväntat genom att använda kommandot `ls`, som listar innehållet i en katalog.

```bash
ls
```

Exempelutskrift:

```
example-username-exercises/
```

## Steg 6. Byt till den klonade katalogen

```bash
cd example-username-exercises
```

{% hint style="warning" %}
Ersätt `example-username` i `example-username-exercises` med ditt användarnamn du fått av universitetet.
{% endhint %}

## Steg 7. Hämta "boilerplate"-inställningar för ditt repo

Du hämtar filer (och kataloger) från ett annat repo än det du klonat genom att använda kommandot [`git pull`](https://help.github.com/articles/fetching-a-remote/#pull).

```bash
git pull https://github.com/1dv021/boilerplate-gitignore.git
```

Exempelutskrift:

```
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/1dv021/boilerplate-gitignore
 * branch            HEAD       -> FETCH_HEAD
```

{% hint style="info" %}
Repot [boilerplate-gitignore](https://github.com/1dv021/boilerplate-gitignore) innehåller filen [`.gitignore`](https://git-scm.com/docs/gitignore), som definierar vilka filer och kataloger som inte ska skickas till GitHub i samband med en synkronisering mellan mellan ditt lokala repo och ditt repo på GitHub.
{% endhint %}

## Steg 8. Verifiera att inställningar hämtats

Kontrollera att katalogen nu innehåller den dolda katalogen `.git` som skapades i samband med att du klonade `example-username-exercises` samt den dolda filen `.gitignore` från repot `boilerplate-gitignore`.

```bash
ls -A
```

Exempelutskrift:

```
.git/ .gitignore
```

## Steg 9. Synkronisera ändringarna med ditt repo på GitHub

För att synkronisera ändringarna mellan ditt lokala repo och repot på GitHub använder du kommandot [`git push`](https://help.github.com/articles/pushing-to-a-remote/).

```bash
git push
```

Exempelutskrift:

```
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 738 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/1dv021/example-username-exercises.git
 * [new branch]      master -> master
```

{% hint style="warning" %}
I detta fall behöver du inte lägga till filen `.ignore` och göra en "*commit*" då detta redan tagits hand om av kommandot `git pull`.
{% endhint %}

## Steg 10. Kontrollera ditt repo

Starta en webbläsare och gå till ditt repo, <https://github.com/1dv021/_example-username_-exercises>, för att kontrollera att repot innehåller filen `.gitignore`.

## Steg 11. Klart!

Allt är nu förberett för att du ska kunna arbeta med övningsuppgifterna. Glöm inte att regelbundet göra "commits" och synkronisera ändringar du gör i katalogen `example-username-exercises`. Lycka till!

### Fira!

Genom att följa denna guide har du nu förberett ditt privata repo för kursens övningsuppgifter.

{% hint style="success" %}
**Tips**! Ta en titt på guiden [Att komma igång med en övningsuppgift](/1dv021/guider/att-komma-igang-med-en-ovningsuppgift.md) eller [andra intressanta guider](/1dv021/guider.md).
{% endhint %}
