# Git Doc - Draft
O Git é o sistema opensource de controle de versão mais popular da internet.
Ele pode ser usado principalmente no desenvolvimento de software, mas pode ser usado para registrar o histórico de edições de qualquer tipo de arquivo.
Cada diretório de trabalho do Git é um repositório com um histórico completo e habilidade total de acompanhamento das revisões, não dependente de acesso a uma rede ou a um servidor central.
### Inicializando um repositorio
`$ git init`
> Cria um Repositorio Git vazio
>[Mais sobre o `git init`](https://git-scm.com/docs/git-init)
### Clonando um repositorio
`$ git clone`
> Clona um repositorio ja existente em um diretorio.
>[Mais sobre o `git clone`](https://git-scm.com/docs/git-clone)
### Branches
`$ git branch` ou `$ git branch --list`
> Este comando eh usado para Listar, criar ou deletar as branches
#### Criando uma branch
`$ git branch <nome-da-branch>`
> Este comando cria uma branch localmente, para enviar esta nova branch para o repositorio remoto, eh necessario usar o seguinte comando:
`$ git push -u <remote> <nome-da-branch>`
#### Deletando uma branch
`$ git branch -d <nome-da--branch>`
> Este comando deleta a branch escolhina localmente.
### Alternando entre as Branches (Git Checkout)
> Usado para alterar de uma branch para outra:
`$ git checkout <nome-da-branch>`
> Podemos usar também para criar e trocar para uma nova branch ao mesmo tempo:
`$ git checkout -b <nome-da-branch>`
### Verificando status da branch (Git Status)
`$ git status`
> Fornece informações sobre a branch atual.
> Como: arquivos modificados, novos, deletados, etc..
### Adicionando arquivos ao commit (Git Add)
> Ao criarmos, alterarmos ou excluirmos um arquivo, as alterações serão feitas em nosso ambiente local e não é incluinda no proximo commit.
> Para incluiar as alterações no proximo commit usamos:
`$ git add <arquivo>`
> Para adicionar todos os arquivos de uma só vez:
`$ git add .` ou `$ git add -A`
> O comando git add não altera o repositorio e as alterações não são salvas até usarmos o comando git commit.
### Commitando as alteracoes no Codigo
`$ git commit -m "<mensagem explicando a mudanca no codigo>"`
> Registra alteracoes para o repositorio.
[Mais sobre o `git commit`](https://git-scm.com/docs/git-commit)
### Enviando os commits para o servidor remoto
`$ git push <remote> <nome-da-branch>`
> Este comando envia todos os commits para o servidor remoto.
### Obtendo as atualizacoes do repositorio remoto
`$ git pull <remote>`
> Nota: o git pull é uma combinacao do `git fetch` e do `git merge`, quando usamos o `git pull` ele recebe as atualizacoes do repositorio remoto (fetch) e aplica as alteracoes no seu repositorio local (merge)
### Desfazendo alteracoes
`$ git revert 'numero do hash'`
>Este comando desfaz as alteracoes local ou remotamente utilizando o numero da hash.
>Esta hash eh um identificador do commit, para pegar a hash correspondente ao commit que deseja desfazer utiliza o comando:
`$ git log --oneline`
### Git Rebase
> Este comando serve para pegar as alterações feitas em outras branchs que vamos mergear a nossa para não ter conflito de codigo.
> Primeiramente pegamos as alterações com:
`$ git fetch`
> Então fazemos o rabase na branch desejada:
`$ git rebase <nome-da-branch>`
> Após localizar um conflito que o git não conseguiu resolver precisamos editar os arquivos manualmente, escolhendo o código correto e após aplicar as alterações utilizando o comando `git add .` só após esta operação podemos continuar com o rebase.
`$ git rebase --continue`
> Podemos pular alguns conflitos com o comando skip:
`$ git rebase --skip`
> Ao finalizar o processo de rebase damos o comando:
`$ git push -f`
### Mesclando as Branches
Quando você conclui o desenvolvimento em sua branch e tudo funciona bem, a etapa final é mesclar as branches, isso é feito com o comando git merge.
`$ git merge <nome-da-branch>`
---
##### biografia
> [10 Comandos que todo Desenvolvedor deveria saber](https://blog.geekhunter.com.br/comandos-git-mais-utilizados/)
---
###### tags: `git`