From 7181446fa969e71548fda3aadb5331e02cc90805 Mon Sep 17 00:00:00 2001 From: lucianopf Date: Wed, 17 Jan 2024 18:09:47 -0300 Subject: [PATCH 01/10] feat: lesson-2 --- README.md | 4 ++-- lessons/lesson-2.md | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 lessons/lesson-2.md diff --git a/README.md b/README.md index 5a646ae..e2a60ef 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ Workshop de git básico e intermediário para pessoas de TI. ## Aulas 1. [Aula 1 - fork, clone e trocar de branches](lessons/lesson-1.md) -2. Aula 2 - comandos básicos de leitura (status, log) -3. Aula 3 - comandos básicos de escrita (add, diff, commit, push) +2. [Aula 2 - comandos básicos de leitura (status, log)](lessons/lesson-2.md) +3. Pula 3 - comandos básicos de escrita (add, diff, commit, push) 4. Aula 4 - comandos de manipulação de branches (rebase, merge) 5. Aula 5 - comandos de manipulação de branches (cherry-pick) 6. Aula 6 - comandos de manipulação de branches (revert) diff --git a/lessons/lesson-2.md b/lessons/lesson-2.md new file mode 100644 index 0000000..233c153 --- /dev/null +++ b/lessons/lesson-2.md @@ -0,0 +1,27 @@ +# Aula 2 (status, log) + +Agora que estamos em uma versão do repositório, local é interessante começar a conseguir visualizar o que temos de informação básica pra consulta. + +## Status + +De forma geral, esse comando da um resumo do estado atual do repositório, ele mostra se temos arquivos modificados, se temos arquivos novos, se temos arquivos deletados, se temos arquivos prontos para realizar commit, se temos arquivos prontos para serem enviados para o repositório remoto, etc... + +Para executar o comando, basta executar `git status`. Como não temos nada modificado no momento, não é esperado ter muita informação como resultado desse comando. Mas, logo logo iremos utiliza-lo bastante pra ajudar a compreender o estado do repositório. + + +## Log + +Esse comando é um dos mais importantes do git, ele mostra o histórico de commits do repositório, ele mostra quem fez o commit, quando foi feito, qual foi a mensagem do commit e qual foi o hash do commit. + +Para executar o comando basta executar `git log`. + +Temos diversas variações desse comando que podemos consultar usando o help `git log --help`. + +Atualmente o comando de visualizar logs que mais uso é o `git log --oneline` que traz de forma mais resumida o histórico de commits. +Temos também o comando `git log --graph` que renderiza no terminal uma representação gráfica do histórico de commits e branches. + +Obs: é possível configurar o padrão do log usando `git config --global format.pretty oneline` e daí em diante qualquer `git log` será `--oneline` + +--- + +Podemos seguir para a próxima aula na branch `lesson-3`. \ No newline at end of file From 5ec7c173a33b5b13da6f708086f97ef8f51466a7 Mon Sep 17 00:00:00 2001 From: lucianopf Date: Fri, 19 Jan 2024 12:55:24 -0300 Subject: [PATCH 02/10] feat: lesson-3 --- README.md | 2 +- lessons/lesson-3.md | 62 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 lessons/lesson-3.md diff --git a/README.md b/README.md index e2a60ef..44f241d 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Workshop de git básico e intermediário para pessoas de TI. 1. [Aula 1 - fork, clone e trocar de branches](lessons/lesson-1.md) 2. [Aula 2 - comandos básicos de leitura (status, log)](lessons/lesson-2.md) -3. Pula 3 - comandos básicos de escrita (add, diff, commit, push) +3. [Pula 3 - comandos básicos de escrita (add, diff, commit, push)](lessons/lesson-3.md) 4. Aula 4 - comandos de manipulação de branches (rebase, merge) 5. Aula 5 - comandos de manipulação de branches (cherry-pick) 6. Aula 6 - comandos de manipulação de branches (revert) diff --git a/lessons/lesson-3.md b/lessons/lesson-3.md new file mode 100644 index 0000000..28fa35d --- /dev/null +++ b/lessons/lesson-3.md @@ -0,0 +1,62 @@ +# Aula 2 (add, diff, commit, push) + +Nessa aula iremos aprender os comandos básicos de escrita do git, são eles: `add`, `commit` e `push`. + +**No fim desse arquivo teremos um exercício prático antes de seguir para a próxima aula.** + +## Add + +Quando queremos adicionar um arquivo novo ou modificado ao repositório local precisamos usar o comando `add`, esse comando adiciona o arquivo ao que chamamos de `staging area` que é uma área de preparação para o commit. +Para adicionar o commit basta executar `git add `. +Existem diversas formas de trabalhar com o add e podemos consultar todas elas usando o help `git add --help`. + +Por exemplo: + - `git add .` + - `git add -A` + - `git add --edit ` + + +## Diff + +Esse comando é usado para visualizar as diferenças entre o `working directory` e o `staging area`, para isso basta executar `git diff`. + +De forma geral, usamos muito esse comando pra comparar o estado anterior vs o que estamos modificando. Para instruções avançadas de como usar o diff, podemos consultar a documentação oficial do git [aqui](https://git-scm.com/book/pt-br/v2/Git-Essencial-Visualizando-Mudan%C3%A7as-no-Repository). + +## Commit + +Após usar o comando `add` para adicionar os arquivos que queremos ao `staging area`, precisamos usar o comando `commit` para criar um commit com essas alterações. Conseguimos utilizar o comando `git status`, aprendido na aula anterior, para inclusive conferir quais arquivos estaremos adicionando no commit em questão. +Um commit é uma forma de agrupar alterações em um ponto específico do tempo, ele é composto por um hash, autor, data, mensagem e um ponteiro para o commit anterior. + +Pra mais informações sobre commits, podemos consultar a documentação oficial o git [aqui](https://git-scm.com/book/pt-br/v2/Git-Essencial-Gravando-Altera%C3%A7%C3%B5es-no-Reposit%C3%B3rio). + +A forma mais simples de criar um commit, é utilizando o comando `git commit`. Porém, isso irá abrir um editor de texto integrado no terminal e isso pode num primeiro momento, ser um pouco confuso. para evitar que isso aconteça, podemos usar o comando `git commit -m "mensagem do commit"`, dessa forma o commit será criado com a mensagem que passamos como parâmetro, sem a necessidade de usar o editor integrado. + +Assim como os demais comandos, o `git commit` também possui algumas opções que podemos consultar usando o help `git commit --help`. + +🔎 **Ao longo do workshop iremos perceber que a mensagem do commit é algo importante e que tentamos sempre seguir padrões. O padrão mais comum é o de commits convencionais, que adotamos nesse workshop, e que pode ser explorado melhor aqui https://www.conventionalcommits.org/pt-br/v1.0.0/#resumo** + + +## Push + +O comando `push` é utilizado para enviar os commits criados para o repositório remoto. Para isso, basta executar `git push `, por exemplo: `git push origin main`. + +Obs: por padrão, quando clonamos um repositório, o nome do remote é `origin`. Podemos consultar isso com o comando `git remote -v`. + +# Prática 3 + +No título dessa aula (lesson-3.md) temos um pequeno erro onde se aponta `# Aula 2 (add, diff, commit, push)` entretanto estamos na aula 3 e devemos corrigir isso. + + +Vamos corrigir esse problema! +1. Com seu editor de preferencia, abra o arquivo `lessons/lesson-3.md` e corrija o erro de digitação. (`# Aula 3 (add, diff, commit, push)`) +2. Pra visualizar o status em funcionamento digite `git status` +3. Veja o diff das alterações usando `git diff` e confira se está alterando o que planeja. +4. Adicione o arquivo ao `staging area` usando o comando `git add lessons/lesson-3.md`. +5. Execute o `git diff` e `git status` novamente pra validar que não há mais diferenças entre o `working directory` e o `staging area`. +6. Crie um commit com a mensagem `feat: fix lesson-3 typo` usando o comando `git commit -m "feat: fix lesson-3 typo"`. Mas para isso, se lembre de adicionar a alteração realizada, com o comando `git add`. +7. Podemos visualizar o histórico de commits usando o comando `git log` ou `git log --oneline` (eu sempr prefiro o --one-line). +8. Com as mudanças realizadas localmente, precisamos enviar elas para o repositório remoto. Para isso, basta executar `git push origin lesson-3`. + +--- + +Podemos seguir para a próxima aula na branch `lesson-4`. \ No newline at end of file From b3e080060c15fbe334a5254e5e090716f518f5e0 Mon Sep 17 00:00:00 2001 From: lucianopf Date: Fri, 19 Jan 2024 13:14:55 -0300 Subject: [PATCH 03/10] feat: lesson-4 --- README.md | 2 +- images/rebase_i_1.png | Bin 0 -> 85637 bytes images/rebase_i_2.png | Bin 0 -> 18327 bytes images/rebase_i_3.png | Bin 0 -> 40189 bytes images/rebase_i_4.png | Bin 0 -> 58537 bytes lessons/lesson-4.md | 68 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 images/rebase_i_1.png create mode 100644 images/rebase_i_2.png create mode 100644 images/rebase_i_3.png create mode 100644 images/rebase_i_4.png create mode 100644 lessons/lesson-4.md diff --git a/README.md b/README.md index 44f241d..3cad46f 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Workshop de git básico e intermediário para pessoas de TI. 1. [Aula 1 - fork, clone e trocar de branches](lessons/lesson-1.md) 2. [Aula 2 - comandos básicos de leitura (status, log)](lessons/lesson-2.md) 3. [Pula 3 - comandos básicos de escrita (add, diff, commit, push)](lessons/lesson-3.md) -4. Aula 4 - comandos de manipulação de branches (rebase, merge) +4. [Aula 4 - comandos de manipulação de branches (rebase, merge)](lessons/lesson-4.md) 5. Aula 5 - comandos de manipulação de branches (cherry-pick) 6. Aula 6 - comandos de manipulação de branches (revert) 7. Aula 7 - comandos de manipulação de branches (fetch, pull) diff --git a/images/rebase_i_1.png b/images/rebase_i_1.png new file mode 100644 index 0000000000000000000000000000000000000000..39ec7f37e5174e14620a3c553595974049eea24c GIT binary patch literal 85637 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