> For the complete documentation index, see [llms.txt](https://vainaweb.gitbook.io/construcao-de-paginas-web/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vainaweb.gitbook.io/construcao-de-paginas-web/capitulos/git/desafios.md).

# Desafios

## Desafio 01: Versionando uma música!

1. Crie uma pasta
2. Crie um arquivo de texto chamado musica.txt
3. Abra sua pasta no terminal e peça ao git que comece a versiona-la
4. Abra seu arquivo de texto e escreva uma frase da música que você mais gosta. Depois salve ele
5. Volte ao terminal e o use o comando para avisar ao git que você quer mesmo que sua alteração seja salva
6. Ainda no terminal, peça ao git que salve essa alteração, e deixe nela um comentário
7. Abra novamente seu arquivo de texto e adicione mais uma frase da música
8. Volte ao terminal e lembre ao git novamente de que você vai querer salvar essa alteração
9. Ainda no terminal, peça ao git que salve essa alteração, e deixe nela mais um comentário
10. Pergunte ao Git quais alterações foram gravadas

## Desafio 02: Minha página na web

1. Crie uma conta no Github
2. Crie uma pasta no seu computador chamada seunome.github.io
3. Abra sua pasta ano terminal e peça ao git que comece a versiona-la
4. Abra a pasta e crie dentro dela um arquivo chamado index.html
5. Abra o arquivo, escreva seu nome, e um textinho contando quem é você e coisas que você gosta de fazer. Salve ele
6. Volte ao terminal e o use o camando para avisar ao git que você quer mesmo que sua alteração seja salva
7. Ainda no terminal, peça ao git que salve essa alteração, e deixe nela um comentário
8. Vá ao Github e crie uma pasta também chamada seunome.github.io
9. Volte ao terminal e digite o comando que sincroniza a pasta do github com a pasta do seu computador
10. Ainda no terminal, digite o camando para subir as alterações do seu computador para o Github
11. Acesse o endereço seunome.github.io pelo seu navegador

## Desafio 03: Minha página web ramificada.

1. Crie um novo branch na pasta do projeto em seu computador

   ```
   git checkout -b meu-novo-ramo
   ```
2. Abra o arquivo index.html
3. Acrescente algum conteúdo que gostaria de ver em seu site, uma foto, uma lista de músicas.

   ```
   <ul>
   <li>Zezé de Camargo e Luciano - Evidências</li>
   <li>The Lumineers - Ophelia</li>
   <li>Imagine Dragons - Thunder</li>
   <li>Tom Rosenthal - Go Solo</li>
   </ul>
   ```
4. Abra o terminal e peça para o git preparar as mudanças no seu arquivo

   ```
   git add index.html
   ```
5. Ainda no terminal peça para o git salvar suas alterações

   ```
   git commit -m "Adicionei uma lista de músicas"
   ```
6. Volte para o ramo (*branch*) **master** digitando o seguinte comando

   ```
   git checkout master
   ```
7. Peça para o git mesclar os dois ramos *master* e *meu-novo-ramo* utilizando o seguinte comando

   ```
   git merge meu-novo-ramo
   ```
8. Peça para o git subir suas alterações para o GitHub

   ```
   git pull -u origin master
   ```
9. Acesse o endereço seunome.github.io para verificar as alterações.

Podemos utilizar as ramificações quando queremos trabalhar com algum colega e não queremos alterar código juntos. Existem alguns problemas em trabalhar em ramificações, quando utilizar o comando *git merge* podemos ter alguns conflitos,

## Desafio 04: Trabalhando com colega, resolvendo conflitos

Não temos nenhum complexo de identidade, mas aqui iremos nos passar por duas pessoas, a primeira é você e a segunda é seu colega lhe ajudando com o código da sua página.

Vamos começar sendo você mesmo.

1. Crie um novo branch chamado letra-musica

   ```
   git checkout -b letra-musica
   ```
2. Abra o arquivo index.html
3. Insira no arquivo a letra de uma música, como por exemplo **Ophelia**

   ```
   <h2>Trecho da Música Ophelia</h2>
   <p>
   Oh, oh, when I was younger, oh, oh, should have known better
   And I can't feel no remorse, and you don't feel nothing back
   </p>
   ```
4. Peça para que o git se prepare as modificações no arquivo index.html

   ```
   git add index.html
   ```
5. Faça com que o git persista as alterações no código

   ```
   git commit -m "Trecho da música Ophelia da banda Luminners"
   ```
6. Volte para o ramo (branch) **master**

   ```
   git checkout master
   ```

Agora iremos se passar pelo seu colega.

1. Na pasta do projeto do seu computador, crie um novo branch

   ```
   git checkout -b letra-musica-do-colega
   ```
2. Abra o arquivo index.html
3. Insira no arquivo a letra de uma música, como por exemplo **Ophelia**

   ```
   <h2>Trecho da Música Ophelia</h2>
   <p>
   Oh, oh, got a new girlfriend, he feels like he's on top
   And I don't feel no remorse, and you can't see past my blinders
   </p>
   ```
4. Peça para que o git se prepare as modificações no arquivo index.html

   ```
   git add index.html
   ```
5. Faça com que o git persista as alterações no código

   ```
   git commit -m "Trecho da música Ophelia da banda Luminners"
   ```
6. Volte para o ramo (branch) **master**

   ```
   git checkout -b master
   ```

Agora podemos atualizar o branch master em relação as branchs criados anteriormente.

1. Sincronize o branch *master* com o branch *letra-musica*

   ```
   git merge letra-musica
   ```
2. Sincronize o branch *master* com o branch *letra-musica-colega*

   ```
   git merge letra-musica-colega
   ```

Para apresentar o conflito o git inseri no arquivo que contém o conflito os seguintes caracteres.

```
<<<<
'trecho de música do branch _letra-musica_
====
'trecho de música do branch _letra-musica-colega_
>>>>
```

1. Abra o arquivo index.html
2. Navegue até o trecho de código conflitante.
3. Encontre os caracteres inseridos pelo git para identificar o conflito.
4. Resolva o conflito, escolha o trecho do seu colega e apague

   ```
   <<<<
   O seu trecho
   ====
   >>>>
   ```
5. Após remover os caracteres de conflito, peça para o git preparar as mudanças.

   ```
   git add index.html
   ```
6. Faça o git persistir as mudanças.

   ```
   git commit -m "Conflito resolvido, trecho de música do colega escolhido"
   ```
7. Envie o código para o github

   ```
   git push -u origin master
   ```
8. Entre na página seu-projeto.github.io para vizualizar as mudanças.

## Desafio 05: Começando uma nova linha de trabalho

A ideia deste desafio é utilizar o comando "cherry-pick", que permite você trabalhar a partir de um determinado commit específico de seu ambiente local. Para auxiliá-lo no entendimento, você pode realizar um breve estudo vendo este conteúdo aqui: <https://www.youtube.com/watch?v=CUpk6F2eNs0>

1. Realize 4 novos commits em seu projeto
2. Crie uma nova branch com o nome "new\_work\_branch"
3. Na nova branch, especifique que você deseja trabalhar a partir do conteúdo do seu terceiro commit realizado (criado no passo 1)
4. Verifique no log do GIT como está seu ambiente de trabalho, para o completo entendimento do comando cherry-pick
