## Comandos Básicos
Como inicializar o repositório local como um repositorio git.
```
git init
```
Conectar o repositório local ao um repositório remoto (hosting git)
```
git remote add origin https://remotegit.com/repo/repo.git
```
ou para SSH:
```
git remote set-url origin
[email protected]:user/priv-scalation-mautic.git
```
Para testar a conexão SSH:
```
ssh -T
[email protected]
```
> O nome origin é o nome da conexão que é dada para remote link. Não necessariamente é necessário ser esse, apenas uma convenção.
Usando o git remote, para visualizar as origens você pode rodar o seguinte comando:
```
git remote
```
Em alguns momentos é necessário setar alguns parâmetros de configuração em nível de repositório, usuário ou em nível de sistema.
```
# Configuração em nível de repositorio.
git config --local ...
# Configuração em nível de usuário.
git config --global ...
# Configuração em nível de maquina.
git config --system ...
```
> Como existem configurações que podem ser divergentes, existe um processo de hierarquia no nos níveis.
Existe um hack para deixar a tabela de visualização de logs em um formato mais acessível que seria o seguinte comando:
```
git config --global alias.hist 'log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short'
```
## Comandos de Commit, log e branch
Verifica como está a integridade dos arquivos/status do repositório/status dos commits, etc.
```
git status
```
Em alguns momentos será necessário realizar a restauração de arquivos ausentes ou corrompidos:
```
git restore .
```
Para visualizar os detalhes de um commit especifico você pode usar o comando:
```
git log
```
ou o nosso alias:
```
git hist
```
E para pegar especificações do que foi commited, data e arquivos pode usar o seguinte comando, sendo o hashid o identificador do commit:
```
git show <hashid>
```
Para poder adicionar dados para um commit você pode usar o seguinte comando:
```
git add file.txt
```
Ou para remover:
```
git rm file.txt
```
Para enviar suas atualizações para um repositório remoto:
```
git push
```
Para listar todas as branchs existente iremos rodar o seguinte comando:
```
git branch -a
```
> Ao visualizar as branchs no git status, você verá em branco as branchs locais, em verde a branch atual e em vermelho as branchs de rastreamento.
![[git-branch-a.png.png]]
Como você pode observar a minha branch local não possui uma branch de rastreamento, então caso você queira subir algo nessa branch terá um erro:
```
git push
fatal: The current branch teste has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin teste
To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.
```
Para criar uma nova branch basta:
```
git branch <nome>
```
Caso precise depois modificar o nome:
```
git branch -m <oldname> <newname>
```
E por fim, caso seja necessário apagar uma branch:
```
git branch -d <name_branch>
```
Um comando rápido para criar uma nova branch e depois trocar para ela seria:
```
git switch -c minha-branch
```
## Tags
Para listar as tags:
```
git tag
```
Para criar uma nova tag anotada:
```
git tag -a "nome-tag" -m "comentario-tag"
```
Para poder apagar uma tag:
```
git tag -d "nome-Tat"
```
Também é possível tag automática basta rodar os seguintes comandos:
```
Para adicionar a configuração a **um repositório local específico**, acesse o repositório e execute:
`git config --**local** push.followTags true`
Para adicionar a configuração **a todos os repositórios do seu usuário corrente do sistema operacional** execute:
`git config --**global** push.followTags true`
Para adicionar a configuração **a todos os repositórios de todos os usuários do sistema operacional** execute:
`git config --**system** push.followTags true`
```
## Removendo conteúdo.
Para desfazer de alterações de arquivos que já foram versionados anteriormente:
```
git restore --source <hash> nomedoarquivo
```
Para apagar arquivo ou se desfazer de algo que nunca foi versionado:
```
git clean <nomedoarquivo>
```
Você pode também fazer uma reversão apenas local de um commit:
```
git revert <hashid>
```
Como também é possível dar um reset (Removendo o commit localmente e remotamente):
```
git reset <hashid>
```
Para baixar as ultimas atualizações remotas para o repositório local, você pode usar o comando:
```
git fetch
```
A seguir você pode usar o comando git merge para para juntar as modificações remotas com as locais.
```
git merge origin/branch1
```