├── README.md
├── flow-git.md
└── img
├── checkout1.png
├── checkout2.png
├── code.png
├── comandos.gif
├── comandos.gif:Zone.Identifier
├── commit1.png
├── commit2.png
├── commit3.png
├── fork.png
├── fork1.png
├── new-arquivo.png
├── new-branch.png
├── new-branch1.png
├── new-repository.png
├── pr.png
├── pr1.png
├── pr2.png
├── quick-setup.png
├── staging.gif
├── staging.gif:Zone.Identifier
└── star.png
/README.md:
--------------------------------------------------------------------------------
1 | # Flow Git e Github na prática
2 | sejam bem vindos a mais um flow de aprendizado, eu sou a Rafael Rampasso e hoje eu vou mostrar pra vocês como utilizar o GIT na prática
3 |
4 | ## Instalando o GIT
5 |
6 | * [Link com os downloads](https://git-scm.com/downloads)
7 |
8 | ## Criar um projeto novo
9 |
10 | * Criar uma nova pasta em seu computador, com o nome `Flow Git`
11 |
12 | * Abrir o VSCode nessa pasta
13 |
14 | * Criar um novo arquivo `README.md`
15 |
16 | * Escrever dentro dele `Você aprenderá alguns comandos do Git`
17 |
18 | * Salva o arquivo
19 |
20 | Agora então é hora de usarmos o Git
21 |
22 | * Abre o Git Bash que foi instalado na máquina (pode ser pelo terminal do VSCode mesmo)
23 |
24 | * `git init` para inicializar o repositório
25 |
26 | Foi criada uma pasta `.git` e é ali que toda a mágica acontece, então não apague
27 |
28 | * `git add README.md` para colocar o arquivo na área de stagging
29 | 
30 |
31 | Esse `add` é necessário antes de darmos o commit.
32 |
33 | * `git commit -m "primeiro commit"` dar o commit no repositório.
34 |
35 | * `git branch -M "main"` para alterar o nome da branch principal de `main` para `main` (isso é uma boa prática atualmente recomendada)
36 |
37 | ## Interfaces Git
38 |
39 | Beleza, recebemos a confirmação de que o commit aconteceu, mas isso tá um pouco abstrato ainda né?
40 | Existem algumas [interfaces legais do git](https://git-scm.com/downloads/guis) que você pode fazer o download para poder visualizar como está o projeto, o que foi alterado em cada commit, quando foi alterado etc.
41 | Aqui eu vou mostrar pra vocês a usarem direto no Github.
42 |
43 | ## Repositório no Github
44 |
45 | * Depois de você ter criado a sua conta na plataforma, você irá em `Criar novo repositório`
46 |
47 | Você vai preencher com as informações do projeto, então dar o nome do repositório, colocar uma breve descrição e criar
48 |
49 | 
50 |
51 | Logo depois vai aparecer essa página um pouco cinza e confusa e com vários comandos (pode até perceber que alguns deles já usamos), mas o que você tem que fazer é bem simples, apenas copie o link que aparecer para você
52 |
53 | 
54 |
55 | * Para passar o commit do meu repositório local (da minha máquina) para um repositório na plataforma do Github, usamos o `git remote add origin `
56 |
57 | * `origin` é o nome utilizado para referenciar o nosso repositório
58 |
59 | Agora já temos o nosso repositório local conectado com o respositório do Github, porém o `commit` que damos na máquina não sobe automaticamente para a plataforma
60 |
61 | * Para isso precisaremos empurrar, enviar para lá com o `git push -u origin main`
62 |
63 | Agora se recarregarmos a página iremos ver o nosso arquivo aqui na plataforma!
64 |
65 | ## Alterando e adicionando arquivo
66 |
67 | Beleza, agora que temos o nosso repositório no Github configurado direitinho, podemos usar e abusar do que o Git oferece, afinal é pra isso que estamos utilizando ele né?
68 | Primeira coisa que faremos então é alterar esse arquivo que já commitamos
69 |
70 | * Adiciona mais uma frase no arquivo `Essa é uma alteração`
71 |
72 | * Além disso iremos criar um novo arquivo `Projeto.md`, onde escreveremos `Esse é o arquivo onde desenvolverei o meu projeto`
73 |
74 | * Agora então precisamos subir essa alteração, pra isso seguiremos os mesmos passos de `git add .` (agora ponto `.` pois adiciona todos os arquivos) e `git commit -m "Primeira alteração"`
75 |
76 | * Lembrando que para alterar algo no nosso respositório do Github precisamos dar o push, então `git push origin main` (sem o -u)
77 |
78 | Se olharmos agora o nosso código no Github, ele terá sido alterado, e não só isso, se clicarmos no nome do `commit`, podemos ver exatamente as alterações que foram feitas nele.
79 |
80 | 
81 |
82 | Aqui nesse botão poderemos ver todos os commits já feitos anteriormente, então se clicarmos em algum deles, veremos exatamente o que havia sido alterado, além de claro, vermos o código como era. Incrível né?
83 |
84 | 
85 |
86 | O verde com `+` e o vermelho com `-` mostra, os conteúdos que foram adicionados e editados dentro do código.
87 | 
88 |
89 | ## Branch
90 |
91 | Até agora tudo o que fizemos de alterações e mandamos de commit, foi na nossa `main`, que é aquela linha do tempo principal.
92 | Agora vou mostrar pra vocês como criamos uma branch e depois como que juntamos ela com o código que já está na `main` (lembrando que ela é uma linha cronológica adicional/alternativa a principal)
93 | E outra, a branch pode ser criada tanto para quando você for fazer uma alteração em um arquivo, quando para adicionar outro arquivo dentro do projeto ou mesmo excluir.
94 |
95 | Obs. *Lembrem que eu estou aqui editando um arquivo markdown, porém isso tudo vale para qualquer tipo de arquivo com qualquer extensão*
96 |
97 | * Nesse caso vamos adicionar um novo arquivo para desenvolver a nossa feature `Flow-Git`
98 |
99 | * Então a primeira coisa que fazemos é `git checkout -b "dev"`, assim criando uma branch para ele
100 | Esse comando além de criar a branch já entra nela com o checkout, inclusive se olharmos agora aqui no meu VSCode, estamos dentro dela.
101 | 
102 |
103 | * Vou então criar o arquivo, criar o `flow-git.md` "aqui eu crio o arquivo"
104 |
105 | 
106 |
107 | * E agora fazemos o passo a passo que já sabemos, colocamos a nossa alteração em stagging com o `git add .` e commitamos com o `git commit -m "novo arquivo"`
108 |
109 | * Para enviarmos agora que vai ser diferente. Vocês lembram que utilizávamos o `git push orgin main` né? Porém main era aquela branch principal. Agora então usaremos `git push origin dev`
110 |
111 | 
112 |
113 | Agora se olharmos o nosso Github, veremos que tem 2 branches, a `main` e a `dev`
114 |
115 | 
116 |
117 | Vamos supor que eu ainda não tivesse terminado de desenvolver, eu poderia continuar tranquilamente na branch `dev` até terminar!
118 |
119 | Mas Ramps, e se eu precisasse por algum motivo voltar naquela branch `main` e desenvolver a partir do que deixei lá? Sem problemas, a única coisa que você precisa fazer nesse caso é `git checkout main`, e pra voltar depois é só `git checkout dev` novamente
120 |
121 | Beleza! Agora desenvolvi tudo o que queria aqui na branch `dev`, como que junto ela com a main sem conflitos? É através do merge, vejamos abaixo!
122 |
123 | ## Merge
124 |
125 | * Agora o que precisamos fazer é ir para a nossa branch principal `git checkout main` e lá faremos o merge com a branch `dev` que criamos, com `git merge dev`
126 |
127 | Pronto, agora tudo o que tinha de alteração na branch `dev` juntou com a `main`
128 |
129 | 
130 |
131 | * Para finalizar então, vamos jogar lá no Github isso tudo com o `git push origin main`
132 |
133 | ## Clone
134 |
135 | Como vocês podem baixar meu código?
136 |
137 | Sempre que você entrar em um repositório, seja o seu ou o de qualquer outra pessoa, terá esse botão `Code`, que quando você clica aparece um link:
138 |
139 | 
140 |
141 | * Você irá copiar esse link e levar ele lá pro nosso terminal
142 |
143 | * O comando para puxar o projeto para a sua máquina é o `git clone https://github.com/flowramps/workshop-github.git`
144 |
145 | Não é necessário criar um repositório antes disso, como fizemos anteriormente com o `git init`. Dessa vez, basta abrir o terminal e clonar o projeto e tudo aparecerá!
146 |
147 | ## Pull
148 |
149 | E se eu fizer uma alteração no repositório, como vocês podem atualizar na máquina de vocês?
150 |
151 | * Basta vocês executarem o comando `git pull`, ele irá puxar todas as alterações feitas no repositório do Github para o seu repositório local
152 |
153 | ## Fork
154 |
155 | Mas Ramps quando eu fiz o clone do seu repositório ele não apareceu no meu Github.
156 | Existe a ferramenta `fork`, que é bem mais simples para fazer isso
157 | Você só precisa apertar nesse botão dentro do repositório e sucesso jovem! Ele aparece automaticamente lá na sua conta:
158 |
159 | Clica e faça o teste pra você ver como vai ficar!
160 |
161 | 
162 |
163 | ## Pull request
164 |
165 | O último conceito que quero ensinar para vocês é o de Pull Request ou como falamos de `PR`, vamos entender como ele funciona:
166 |
167 | * Após você ter dado um fork no projeto e ele ter ido pra sua conta, você poderá alterar o projeto e adicionar as funcionalidades que deseja
168 |
169 | * Você pode por exemplo dar um fork no meu repositório de `workshop-github` e ir melhorando o conteudo do seu `README.md` ou adicionar mais conteúdos que possam ajudar a comunide em seu desenvolvimento por exemplo nessa página.
170 |
171 | * Depois disso, você poderá salvar o projeto, dar o `git add .`, `git commit -m "trecho PR"` e `git push origin main` como vimos nos passos anteriores.
172 |
173 | Quando você for olhar o seu Github, verá que existe uma mensagem parecida com a seguinte:
174 | 
175 |
176 | Isso significa que a branch do seu repositório está 1 commit "na frente" da branch original
177 |
178 | O que você deve perceber agora é esse botão que aparece em seguida:
179 |
180 | 
181 |
182 | Ele servirá para caso você deseje enviar para o dono do repositório original uma solicitação de pull, ou seja, fazer com que ele puxe as alterações que você fez no seu repositório para o repositório dele, original
183 |
184 | Ao clicar nesse botão, você será direcionado para uma página que fará a avaliação se esse `pull request` terá conflitos ou não com o código no repositório original. Caso não tenha, bastão clicar no botão de `Create pull request`
185 |
186 | 
187 |
188 | Você irá colocar um nome intuitivo, que demonstre a funcionalidade adicionada e o ideal é que você também crie uma boa descrição do que desenvolveu, não somente explicando o que é, mas ensinando ao dono do repositório original a forma como ele poderá testar também
189 |
190 | Depois disso, basta esperar para que o dono da branch original aceite o seu pull request
191 |
192 | ## Finalização
193 |
194 | Existem diversas outras funcionalidades do Git e do Github, porém tenho certeza que com tudo isso que vocês viram hoje vocês já conseguem desenvolver um projeto de uma forma bem legal
195 |
196 | Recomendo sempre vocês darem uma olhada na [documentação do Git](https://git-scm.com/doc), pois qualquer dúvida que apareça pode ser respondida por lá na explicação
197 |
198 | **Não esqueçam de deixar o like e se inscrever no [canal do Youtube](https://www.youtube.com/@EstudandoDevops) **
199 |
200 | E aproveitando já aperta o Star para fortalecer o repo!
201 |
202 | 
203 |
204 | Até a próxima...
205 |
206 |
207 | 
208 |
209 | ## Configurações Globais
210 |
211 | * Configurar o editor padrão e a branch inicial
212 | ```
213 | git config --global core.editor vim
214 | git config --global init.defaultBranch main
215 | ```
216 | * Visualizar as configurações globais
217 | ```
218 | cat ~/.gitconfig
219 | ```
220 | * Configurar o editor do sistema para uso global com o Vim
221 | ```
222 | git config --system core.editor vim
223 | ```
224 | ## Inicialização de Repositório
225 |
226 | * Inicializar um repositório Git
227 | ```
228 | git init
229 | ```
230 | ## Gerenciamento de Arquivos
231 |
232 | * Adicionar um arquivo para ser rastreado
233 | ```
234 | git add arquivo.txt
235 | ```
236 | * Desfazer a adição de um arquivo
237 | ```
238 | git reset
239 | ```
240 | * Efetuar um commit
241 | ```
242 | git commit
243 | ```
244 | ## Gerenciamento de Commits
245 |
246 | * Adicionar e commitar alterações de forma rápida
247 | ```
248 | git commit -a -m "Commit rápido para arquivo.txt"
249 | ```
250 | * Visualizar o histórico de commits
251 | ```
252 | git log
253 | ```
254 | * Visualizar o histórico de um arquivo específico
255 | ```
256 | git log -p arquivo.txt
257 | ```
258 | * Reverter para um commit específico
259 | ```
260 | git checkout 2cc62bbe0f7fcfb4483df968fb169dc85e01cfa4
261 | ```
262 | * Reverter para a branch principal
263 | ```
264 | git checkout main
265 | ```
266 | * Desfazer o último commit sem perder alterações
267 | ```
268 | git reset --soft HEAD~1
269 | ```
270 | * Desfazer o último commit e descartar alterações
271 | ```
272 | git reset --hard
273 | ```
274 | ## Ignorando Arquivos
275 |
276 | * Utilize o arquivo .gitignore para especificar quais arquivos não devem ser incluídos no repositório.
277 |
278 | ## Gerenciamento de Branches
279 |
280 | * Criar uma nova branch
281 | ```
282 | git branch feature/novo_arquivo
283 | ```
284 | * Mudar para uma branch específica
285 | ```
286 | git checkout feature/novo_arquivo
287 | ```
288 | * Mudar o nome da branch atual
289 | ```
290 | git branch -m novo_nome
291 | ```
292 | * Deletar uma branch
293 | ```
294 | git branch -D nome_da_branch
295 | ```
296 | ## Merge
297 |
298 | * Criar uma nova branch e efetuar o merge
299 | ```
300 | git checkout -b stg
301 | git checkout main
302 | git merge stg
303 | ```
304 | * Deletar uma branch após o merge
305 | ```
306 | git branch -d stg
307 | ```
308 | ## Rebase
309 |
310 | * Atenção: O uso de rebase pode reescrever o histórico, use com cuidado.
311 | ```
312 | git rebase stg
313 | ```
314 | ## Cherry Pick
315 |
316 | * Selecionar commits específicos de uma branch e aplicá-los em outra
317 | ```
318 | git log
319 | git cherry-pick 5801dac2c67519a4041666421149877c39439a20
320 | ```
321 | ## Git Tag
322 |
323 | * Listar todas as tags
324 | ```
325 | git tag
326 | ```
327 | * Criar uma tag
328 | ```
329 | git tag -a v2.0 -m "Versão 2.0"
330 | ```
331 | * Adicionar uma tag a um commit específico
332 | ```
333 | git tag -a v1.0 -m "Versão 1.0" 5801dac2c67519a4041666421149877c39439a20
334 | ```
335 | * Visualizar detalhes de uma tag
336 | ```
337 | git show v2.0
338 | ```
339 | * Deletar uma tag
340 | ```
341 | git tag -d v2.0
342 | ```
343 | ## Trabalhando com repositório remoto
344 |
345 | * Criar e commitar em uma nova branch
346 | ```
347 | git checkout -b branchnova
348 | git add .
349 | git commit -m "Aletração em arquivo main.txt (teste remoto)"
350 | ```
351 | * Realizar o merge na branch principal e fazer o push
352 | ```
353 | git branch main
354 | git checkout main
355 | git merge branchnova
356 | git push
357 | ```
358 | ## Lidando com conflito
359 |
360 | * Realizar fetch e validar/listar branches existentes
361 | ```
362 | git fetch origin
363 | git branch -r
364 | ```
365 | * Realizar checkout na branch remota e validar diferenças
366 | ```
367 | git checkout origin/main
368 | git diff main origin/main
369 | ```
370 | * Realizar merge após ajustes e commit
371 | ```
372 | git checkout main
373 | git merge origin main
374 | git commit -a -m "Merge commit fetch"
375 | git push
376 | ```
377 | ## Git Log
378 |
379 | * Diversas opções de visualização do histórico
380 | ```
381 | git log --oneline
382 | git log
383 | git log --stat
384 | git log --n
385 | git log --graph --oneline
386 | git log --author="msrampasso"
387 | git log --after="1 week ago"
388 | ```
389 | ## Publicação
390 |
391 | * Adicionar, commitar e fazer push para a branch main
392 | ```
393 | git add .
394 | git commit -m "Script para validação cn - azure e ops"
395 | git push origin main
396 | ```
397 | Espero que este guia seja útil para entender e utilizar o Git de forma eficiente. Sinta-se à vontade para personalizar conforme necessário.
398 |
399 |
--------------------------------------------------------------------------------
/flow-git.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/flow-git.md
--------------------------------------------------------------------------------
/img/checkout1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/checkout1.png
--------------------------------------------------------------------------------
/img/checkout2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/checkout2.png
--------------------------------------------------------------------------------
/img/code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/code.png
--------------------------------------------------------------------------------
/img/comandos.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/comandos.gif
--------------------------------------------------------------------------------
/img/comandos.gif:Zone.Identifier:
--------------------------------------------------------------------------------
1 | [ZoneTransfer]
2 | ZoneId=3
3 | ReferrerUrl=https://www.canva.com/
4 | HostUrl=https://export-download.canva.com/MSXds/DAF3i1MSXds/15/0-2154259441288276383.gif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJHKNGJLC2J7OGJ6Q%2F20231220%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231220T060348Z&X-Amz-Expires=56954&X-Amz-Signature=9d09d670ee394662f7f9949c41178744de2d23df9b460f2970254f568b7eda3b&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%2A%3DUTF-8%27%27Comandos.gif&response-expires=Wed%2C%2020%20Dec%202023%2021%3A53%3A02%20GMT
5 |
--------------------------------------------------------------------------------
/img/commit1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/commit1.png
--------------------------------------------------------------------------------
/img/commit2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/commit2.png
--------------------------------------------------------------------------------
/img/commit3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/commit3.png
--------------------------------------------------------------------------------
/img/fork.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/fork.png
--------------------------------------------------------------------------------
/img/fork1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/fork1.png
--------------------------------------------------------------------------------
/img/new-arquivo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/new-arquivo.png
--------------------------------------------------------------------------------
/img/new-branch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/new-branch.png
--------------------------------------------------------------------------------
/img/new-branch1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/new-branch1.png
--------------------------------------------------------------------------------
/img/new-repository.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/new-repository.png
--------------------------------------------------------------------------------
/img/pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/pr.png
--------------------------------------------------------------------------------
/img/pr1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/pr1.png
--------------------------------------------------------------------------------
/img/pr2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/pr2.png
--------------------------------------------------------------------------------
/img/quick-setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/quick-setup.png
--------------------------------------------------------------------------------
/img/staging.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/staging.gif
--------------------------------------------------------------------------------
/img/staging.gif:Zone.Identifier:
--------------------------------------------------------------------------------
1 | [ZoneTransfer]
2 | ZoneId=3
3 | ReferrerUrl=https://www.canva.com/
4 | HostUrl=https://export-download.canva.com/S9e5U/DAF3eRS9e5U/2/0-7801773291089527509.gif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJHKNGJLC2J7OGJ6Q%2F20231219%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231219T035057Z&X-Amz-Expires=86077&X-Amz-Signature=b2f1cc10aa0757d98e6b4b4223b10ee2591a2f084f9fe5252e3ce075504fab53&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%2A%3DUTF-8%27%27Design%2520sem%2520nome.gif&response-expires=Wed%2C%2020%20Dec%202023%2003%3A45%3A34%20GMT
5 |
--------------------------------------------------------------------------------
/img/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flowramps/workshop-github/937be33ed99242e4441e3be38cb28cd06667e6f0/img/star.png
--------------------------------------------------------------------------------