# GIT
O git é uma ferramenta que foi criada para versionar seu trabalho, ajudando a ter um controle da sua aplicação. O git em sí funciona muito bem para criar te dar um controle das versões da sua aplicação, porem, tudo que ele faz fica salvo no seu computador.
O git conta com diversas plataformas online chamadas de repositiorios como por exemplo o GitHub. Os repositorios salvam seu projeto em nuvem, facilitando o compartilhamento e a contribuição de outros desenvolvedores, fora isso, garante que seu projeto fique salvo na nuvem, evitando percas de arquivos ou ate mesmo do projeto inteiro.
## Em pratica
Para começar a usar o git, antes de tudo você precisa ter ele baixado,
para baixar basta usar o google e pesquisar GIT. Terminando ter instalado o mesmo, para verificar se está tudo OK, basta abrir o cmd e digitar `git --version`
> 
> aparecendo a versão seguinifica que ta tudo belesinha :D
## Baixando o repositorio
antes de tudo, entre na pagina que você quer clonar o projeto usando o cmd.
para nevegar entre as pastas no CMD basta digitar o comando `cd "pasta"`
> LIKE THIS
> 
> caso tenha duvida se a pasta exite, use o comando `dir` para listar as pastas
> caso tenha interrese em aprender a mexer no cmd https://www.thomas-krenn.com/en/wiki/Cmd_commands_under_Windows lista de bastante comandos : D
> não tenha medo de usar eles :>
> se der ruim é so formatar o pc que ta suave
Estando na pasta que você quer e tendo o git baixado basta usar o comando
`git clone "LINK DO REPOSITORIO"`
feito isso o agora é so codar : D
como faço para mandar minhas alterações pro git??
`git status` Esse comando mostras suas alterações.
`git add .` Esse comando adiciona tudo oque você fez para ser comitado.
`git commit -am "MENSAGEM DO QUE VOCÊ FEZ"` Esse comando salva tudo que você modificou, o `-am` indica para o git pegar tudo que você adicionou usando o `.`
como faço para atualizar meu repositorio?
`git pull` para atualizar seu projeto antes de você subir ele.
`git push` para mandar seu projeto pro repositorio
> lista dos comandos com suas descrições
> https://confluence.atlassian.com/bitbucketserver/basic-git-commands-776639767.html
## Boas praticas
NUNCA... **NUNCA** faça algo direto na branch master caso você esteja em um projeto com outras pessoa.
Sempre crie uma branch `git checkout -b "nome da branch"`.
#### oque é uma branch??
vamos se dizer que ela é uma copia perfeita do seu projeto, nela você pode fazer oque você quiser sem se preocupar em influenciar o funcionamento da versão original ><
#### NOOSSA EU FIZ UMA ALTERAÇÃO NA MINHA BRANCH COMO EU FAÇO PARA MANDAR PRA VERSÃO ORIGINAL?
basta comitar suas alterações usando o
`git add .`
`git commit -am "opa opa opa"`
`git push --set-upstream origin "nome da sua branch"`
`--set-upstream` serve para criar a branch no repositorio online caso ela não exista.
e depois é muito simples basta usar o comando `git checkout "branch principal"` o checkout muda sua branch,
> o -b que você viu acima serve na situação onde sua branch não exista e você queira fazer uma.
`git merge "criando poutrona automatica"`
feito isso é so dar um `git pull` e depois um `git push`
> geralmente as branchs principais são "develop" "master" "main"
#### GIT FLOW
não irei entrar muito em detalhes mas é o seguinte...
sempre que for fazer uma criação de alguma pagina/componente/cafe,
crie ela em uma branch usando as seguintes nomeclaturas
`feat/craindo-pagina-sei-oque`
quando for fazer alguma correção use a
`fix/colocando mais açucar no cafe`
terminando seu trabalho basta commitar
`git add .`
`git commit -am "mais açcar no cafe"`
`git push --set-upstream origin "fix/colocando mais açucar no cafe"`
`git checkout "master"`
`git merge "fix/colocando mais açucar no cafe"`
`git pull`
`git push`
#### :O mas porque isso?
isso serve para ter uma organização e vizualização do seu trabalho ><
e tambem se vecê não gostou de como ficou a alteração basta você desalocar a sua branch : D
eu não sei como faz isso por linha de comando então deixo vocês descobrirem por conta propria.
> caso queria ver o gitflow mais afundo https://www.atlassian.com/br/git/tutorials/comparing-workflows/gitflow-workflow
> tem uma quantidade absurda de texto, mas vale apena ler, é algo que a maioria das empresas exigem tal conhecimento.
meu git https://github.com/andreixhz : D