| title | Git |
|---|---|
| subtitle | Do noob até o Wizard lv12 |
- Ferramenta de controle de versão
- Ótimo para trabalhar em equipe
- Uma ótima forma de backup
- Mantém o histórico de tudo
- Muito melhor que salvar código em GDrive ou Dropbox
- É de longe a ferramenta mais adotada para versionamento no meio open-source
- Para ser o/a top da balada
Foi criado em 2005 por Linus Torvalds para o versionamento do kernel Linux após desentendimento com a empresa responsável pelo DVCS. Foi rapidamente adotado por outros projetos.
github.com/mateusKoppe/git-guia-basico
- git-scm.com/book/pt-br/v1
- github.github.com/training-kit/downloads/pt_BR/github-git-cheat-sheet.pdf
- github.github.com/training-kit/downloads/pt_BR/github-git-cheat-sheet/
pwd # Exibe o diretório atual
ls # Lista os arquivos e pastas no diretório
mkdir <pasta> # Cria um diretório
cd <pasta> # Entra no diretório informado
mv <atual> <novo> # Renomeia um arquivo ou diretóriosudo apt install git # Debian based
brew install git
Baixe o executável no site oficial e instale
Repositório é o local onde você armazenará e versionará o seu código.
Navegue até o diretório do seu projeto e digite:
# Inicia um repositório vazio
git initQuando você executar esse comando uma pasta .git será criada no diretório e essa pasta conterá todos os meta dados para gerenciar o seu repositório.
O git funciona com base em snapshots, que armazenam as modificações que foram feitas ao longo do projeto.
Essas snapshots agem como "fotografias" que salvam o estado do projeto naquele momento, e então irão aplicar essas mudanças em um commit.

Antes de começarmos é necessário configurar algumas informações no git, como por exemplo o nome e o e-mail do usuário já que esses dados que estarão atrelados ao commit.
git config --global user.name <name>
git config --global user.email <email>Utilize apenas no seu computador pessoal, caso você queria definir a configuração apenas para um repositório específico use --local (já é o padrão)
git help # Lista comandos possíveis
git help [comando] # Exibe informações sobre o comandoO básico para "se virar".
git statusgit addgit commitgit resetgit diff
git status é o comando que você utilizará sempre que quiser informações sobre as modificações no repositório.
# Recebe status do repositório, dos arquivos
git statusOs arquivos no seu repositório estarão em um dos dois estados: untracket (não monitorado) ou tracked (monitorado).
Arquivos em tracked são os arquivos que já estavam na seu último commit, ou seja, o repositório já sabe da existência desse arquivo.
O arquivo pode estar em um dos seguintes estados: unmodified (não modificado), modified (modificado), ou staged (selecionado).
São os arquivos que ainda não fazem parte do histório do repositório ou ainda não foram selecionados.
Você pode passar a flag -s para ver uma versão curta e mais amigável do status.
git status -s
Quando você quiser adicionar/monitorar um arquivo para ser commitado você deve utilizar o comando git add, esse comando alterará o status do arquivo para staged.
(vai deixar o arquivo verdinho na lista)
# Adiciona arquivos para serem trackeados
git add <arquivo ou pasta>Caso esteja com preguiça de digitar manualmente todos os arquivos que foram modificados você pode simplesmente adicionar o diretório inteiro utilizando ., mas tome cuidado para não adicionar arquivo indesejáveis.
git add .Adicionei um arquivo in staged sem querer, e agora? Você pode usar
git resetpara retornar um arquivo para o seu status original.
Git status por padrão não irá fazer você perde código.
Outras funcionalidades do git reset serão listadas futuramente.
git reset <arquivo>Tudo pronto? Chegou a hora de salvar as mudanças em um commit com uma mensagem dizendo o que esse commit faz, para isso use o comando git commit.
O commit é justamente o que da essa ideia de snapshots, será com commits que você ira salvar determinados momentos do seu código e irá "encapsular" as mudanças selecionadas.
# Cria um commit abrindo-o em um editor
git commit
# De forma rápida:
git commit -m "<message>"E para ver isso aí??
Utilize git log para ver quais são os logs de commits do seu repositório.
# Exibe os logs
git log
# Uma linha por log
git log --onelineVocê pode usar a flag --oneline para visualizar os commits em apenas uma linhas e --graph para visualizar o histório de commit em forma de gráfico.
git log --oneline
git log --graph
git log --oneline --graph # Why not both?Git não faria sentido se não houvesse uma forma de compartilhar o repositório com outras pessoas.
Neste momento iremos aprender sobre repositórios remotos e os seguinte comandos:
git remotegit pushgit pullgit clone
Um repositório remoto é o local que irá centralizar as informações do seu repositório e poderá ser utilizado em conjunto com mais desenvolvedores.
Existem vários serviços que nos dão acesso a repositórios remotos, os mais populares são:
Nesta lição utilizaremos o Github pois ele é nele que estão a maior parte dos projetos open-source.
Repositório remotos também nos dão acesso a algumas funcionalidades que não teríamos em outros cenários, essas funcionalidades variam de serviço em serviço e são armazenadas somente no repositório remoto do serviço.
A maioria dessas funcionalidades torno de gestão de projeto e colaboração e não possuem um padrão ou alguma ligação direta com o projeto git.
Alguns exemplos de funcionalidades:
- Pull Requests
- Code Reviews
- Forks
- Wikis
- Issues
- Entre outros
A maioria dos projetos open-source utilizam dessas ferramentas para manter o projeto organizado e facilitar na contribuição de pessoas que desejam ajudar.
Obs: Agora você não tem mais desculpas para confundir Git com Github ;)
Depois de criado o repositório remoto precisamos informar ao nosso repositório local qual é a url que iremos utilizar.
# Lista os repositórios adicionados
git remote -v
# Adiciona um repositório remoto
git remote add <nome> <url>
# Por convenção o repositório principal geralmente
# é nomeado como origin
git remote add origin <url>Agora que está o remote configurado é só mandar os seus commits para o repositório remoto.
Para isso utiliza git push.
# Push = Empurra
# Envia os commits da branch selecionada
# para o remote selecionado
git push <remote> <branch>
# O mais comum é
git push origin masterE se o repositório remoto tiver commits que eu ainda não tenho?
Nesse caso é utilizado git pull:
# Pull = Puxa
# Atualiza a branch selecionada de acordo com o
# remote selecionado
git pull <remote> <branch>Uma boa prática é antes de começar a desenvolver sempre rodar um git pull para ter certeza que o seu código está atualizado com o repositório remoto.
Se quando tudo estiver pronto você quiser utilizar esse repositório em outro computador.
# Clona um repositório online
git clone <url> [<pasta destino>]Você vai utilizar git clone quando for testar o repositório do seu amigo ou qualquer outro que você viu no Github ;)
Branchs são bifurcações no seu códigos, você pode utilizar branchs para isolar o código e trabalhar em um "local" diferente da master até que o seu código esteja pronto, e assim que tudo estiver ok você pode enviar os commits para a master, garantindo assim que a master sempre estará estável.
Além disso é uma forma excelente de trabalhar em equipe, assim cada membro trabalha na sua branch até que a funcionalidade da branch estiver concluída.
git branchgit checkoutgit stashgit mergegit fetchgit stash
git branch é o comando que você usará para visualizar e criar branchs.
# Lista as branchs criadas e exibe a brach atual
git branch
# Cria uma nova branch baseada na branch atual
git branch <nome da branch>
# Remove uma branch
git branch -d <nome da branch>Assim que você criar a sua branch está tudo pronto para você trocar para a nova branch, para isso utilize o comando git checkout.
# Troca de branch
git checkout <nome da branch>
# Cria e troca de branch
git checkout -b <nome da branch>Quando você quiser "juntar" branchs você deve utilizar git merge, esse comando vai basicamente puxar os commits da branch selecionada na branch atual.
# Junta os commits da branch atual com a branch alvo
git merge <nome da brach>É uma boa prática sempre que for fazer algo um pouco mais trabalhoso criar uma branch e trabalhar nela, assim você pode trabalhar em um ambiente isolado, sem medo de fazer commits e cometer erros, assim que tudo estiver pronto basta fazer o merge :D
Quando você quiser buscar as branchs de algum remote utilize git fetch:
git fetch <remote>
As branchs desse remote serão criadas com o nome de /, para listar essas branchs digite:
git branch -a
# Salva as mudanças de uma branch e reseta-a
git stash
# Retorna as mudanças que foram salvas para a branch
git stash applyDa para se virar sem mas é sempre bom saber
Exibe as diferenças de acordo com o último commit
git diff
# Exibe as que foram adicionadas:
git diff --cachedMostra as modificações feitas em determinado commit
git show <hash do commit>Caso você queira voltar, tanto o código quanto o histórico para um commit antigo utilize git reset --hard
CUIDADO: Quando você faz isso você perde os commits e todo o códigos que estava nele.
git reset --hard <hash do commit>Toda vez que você executar um comando remoto que precisa de suas credenciais você precisará informar o seu login e sua senha.
Caso você esteja de saco cheio disso você pode configurar o git para salvar suas credenciais, para isso execute:
git config --global credential.helper storeCUIDADO: Quando você faz isso você salva sua senha desencriptada no disco, protegida somente pelas permissões do sistema. Se você estiver em uma máquina pública isto não é interessante.
Caso seja necessário que o repositório ignore algum arquivo ou algumas pasta é possível criar um .gitignore, nele você insere quais arquivos deverão ser ignorados no repositório.
Reflete o branch e commit atual.
Você também pode utilizar ~<n> para referenciar um número de commits anteriores.
git push origin HEAD


