# Att komma igång med en övningsuppgift

Här hittar du anvisningar som visar dig steg för steg de moment du är tvungen att utföra för att hämta hem en övningsuppgift så att du kan arbeta med den i ditt egna privata repo för övningsuppgifter.

{% hint style="danger" %}
För att kunna följa denna guide behöver du ha följt guiden ["Så kommer du igång med ditt repo för övningsuppgifterna"](/1dv021/guider/sa-kommer-du-igang-med-ditt-repo-for-ovningsuppgifterna.md).
{% endhint %}

## Steg 1. Öppna ett terminalfönster

Öppna ett terminalfönster (Bash).

## Steg 2. Byt till katalogen för dina övningsuppgifter

Se till att du befinner dig i katalogen för dina övningsuppgifter.

```bash
cd 1dv021/example-username-exercises
```

## Steg 3. Lägg till ett alias för källan till övningsuppgiften

För att undvika att skriva URL:en till källan ("*remote URL*") till övningsuppgiften upprepade gånger är det lämpligt att lägga till den en gång för alla genom att använda kommandot [`git remote add`](https://help.github.com/articles/adding-a-remote/).

```bash
git remote add hello-world https://github.com/1dv021/exercise-hello-world.git
```

{% hint style="info" %}
Namngivningen av repon för övningsuppgifter följer standarden `https://github.com/1dv021/exercise-the-name-of-the-exercise.git`, varför exempelvis övningsuppgiften "Hello, World!" har namnet `https://github.com/1dv021/exercise-hello-world.git`.
{% endhint %}

## Steg 4. Verifiera att ett alias skapats

Du verifierar att du lyckats lägga till en ny "remote" med kommandot `git remote -v` som listar alla "*remotes*" som är knutna till ditt repo för övningsuppgifter.

```bash
git remote -v
```

Exempelutskrift:

```
hello-world     https://github.com/1dv021/exercise-hello-world.git (fetch)
hello-world     https://github.com/1dv021/exercise-hello-world.git (push)
origin  https://github.com/1dv021/example-username-exercises.git (fetch)
origin  https://github.com/1dv021/example-username-exercises.git (push)
```

{% hint style="info" %}
Namnet "origin" är namnet på den "*remote*" som skapades då du klonade ditt repo för övningsuppgifter.
{% endhint %}

## Steg 5. Lägg till en ny övningsuppgift

Du använder kommandot `git subtree add` för att hämta hem filer från ett repo och placera dem i en ny underkatalog.

```bash
git subtree add --prefix=hello-world --squash hello-world master
```

Exempelutskrift:

```
git fetch hello-world master
warning: no common commits
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), done.
From https://github.com/1dv021/exercise-hello-world
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> hello-world/master
Added dir 'hello-world'
```

{% hint style="info" %}

* `--prefix`: definierar namnet på underkatalogen som ska skapas
* `--squash`: slår samman källans  "*commits*" till en
* `hello-world`: namnet på den "*remote*" som ska användas
* `master`: den "*branch*" som ska användas från specificerad "*remote*"
  {% endhint %}

## Steg 6. Byt till den skapade katalogen

```bash
cd hello-world
```

## Steg 7. Verifiera att kataloger och filer hämtats

Kontrollera att katalogen `hello-world` innehåller kataloger och filer.

```bash
ls -A
```

Exempelutskrift:

```
app.js  package.json  README.md  src/  test/
```

## Steg 8. Ignorera inte .gitignore!

Använd aliaset `ignore`, du själv skapat, för att generera en .gitignore-fil.

{% tabs %}
{% tab title="Windows" %}

```bash
git ignore node,visualstudiocode,windows >> .gitignore
```

{% endtab %}

{% tab title="macOS" %}

```bash
git ignore node,visualstudiocode,macos >> .gitignore
```

{% endtab %}

{% tab title="Linux" %}

```bash
git ignore node,visualstudiocode,linux >> .gitignore
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Använder du inte Visual Studio Code? Ersätt `visualstudiocode` med det utvecklingsverktyg du föredrar, t.ex. `sublimetext` eller `webstorm`. Föredrar du Atom? Atom behöver inga inställningar i .gitignore-filen varför du i så fall inte behöver ange något utvecklingsverktyg.
{% endhint %}

## Steg 9. Lägg till och spåra den nya filen

```bash
git add .
```

## Steg 10. Lagra ändringar

```bash
git commit -m 'Adding .gitignore'
```

Exempelutskrift:

```
[master 1846bc5] Adding .gitignore
 1 file changed, 93 insertions(+)
 create mode 100644 hello-world/.gitignore
```

## Steg 11. Synkronisera ändringarna

För att synkronisera ändringarna mellan ditt lokala repo och repot på GitHub använder du kommandot `git push`.

```bash
git push
```

Exempelutskrift:

```
Counting objects: 15, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (13/13), done.
Writing objects: 100% (15/15), 4.69 KiB | 0 bytes/s, done.
Total 15 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
To https://github.com/1dv021/example-username-exercises.git
   bc0d25e..1846bc5  master -> master
```

## Steg 12. Klart!

Nu är allt klart för att du ska kunna starta Visual Studio Code och börja arbeta med övningsuppgiften.

Glöm inte att regelbundet göra "*commits*" och synkronisera ändringar du gör i katalogen `example-username-exercises`. Lycka till!

![](/files/-LHI2WKzT-lUqRCVowse)

### Fira!

Genom att följa denna guide har du satt dig in hur du börjar arbeta med en av kursens övningsuppgifter.

{% hint style="success" %}
**Tips**! Ta en titt på [andra intressanta guider](/1dv021/guider.md).
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://coursepress.gitbook.io/1dv021/guider/att-komma-igang-med-en-ovningsuppgift.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
