Git para Iniciantes: O Que Você Deveria Saber?
Git para Iniciantes: O Que Você Deveria Saber?
SERGIO CABRAL
Índice
1. Perguntas e respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Criando um repositório. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Comandos básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1. Um pouco mais sobre log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4. Onde estão os arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5. Branches e Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6. Navegando entre os commits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
6.1. O que é HEAD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.2. Como as coisas se relacionam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.3. Restaurando arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7. Comunicação com o servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.1. Usando um servidor local. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8. Unindo branches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
8.1. Resolvendo conflitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9. Aprendendo mais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Este conteúdo foi preparado para ser apresentado ao vivo na programação da EBAC sobre o
tema Primeiros passos para se tornar um desenvolvedor.
Se tudo estiver certo, você consegue a versão atualizada desse e-book nos links:
• git.sergiocabral.com
1
1. Perguntas e respostas
O que é o Git?
Um software de linha de comando conhecido como VCS ou SCM.
O GitHub tem no seu nome "Git" e isso causa alguma confusão. Mas há alternativas
de serviços com o mesmo propósito de serem servidores para Git. Por exemplo,
GitLab, Bitbucket e Azure DevOps.
2
2. Criando um repositório
git init
Cria do zero um repositório Git.
git clone
Cria uma cópia de um repositório existente.
3
3. Comandos básicos
git status
Estou numa pasta gerenciada pelo Git?
Quais arquivos que não estão no repositório?
git log
Mostra o histórico do que entrou no repositório.
4
3.1. Um pouco mais sobre log
No Git, ao executar um comando para um arquivo específico costuma-se ver --.
▪ alias.logg: Define o nome do alias onde poderá chamar por git logg.
▪ --no-pager: Evita a paginação em que você tem que pressionar q para sair.
5
4. Onde estão os arquivos
Há três lugares onde seus arquivos podem estar.
Figura 7. Conhecido como "As Três Árvores", no inglês, "The Three Trees", ou TTT.
Working Directory
O que está na pasta do seu projeto.
Gerenciado pelo sistema operacional.
Staging Area
O que vai para o repositório.
Próximo commit ainda não feito.
Também chamado index ou stage.
HEAD
O repositório.
Último commit feito e pai do próximo commit.
6
5. Branches e Tags
Commits sempre são um hash, que é uma sequência de 40 caracteres gerado com SHA1.
Isso é um hash de um commit qualquer: f019806e7923e3477da92378afb0175f7f0aefed
Criar branches
• git branch <nome-do-branch>
Excluir branches
• git branch -D <nome-do-branch>
Quando se usa -d (minúsculo) o Git não vai excluir branches que apontam para
commits que nunca sofreram merge.
Criar tags
• git tag <nome-da-tag> -m "<descritivo-opcional>"
Excluir tags
• git tag -d <nome-da-tag>
7
6. Navegando entre os commits
git show
Exibe o conteúdo do commit e o que foi modificado.
git checkout
O Working Directory vai ter o conteúdo do commit especificado.
git reset
A Staging Area vai ter o conteúdo do commit especificado.
Usar git reset --hard faz com que também seu Working Directory tenha o conteúdo do commit
especificado. Você pode perder dados aqui!
Opções:
1. Fazer commit das alterações com git add --all e git commit -m "mensagem".
Atenção! Arquivos em .gitignore serão ignorados.
8
6.1. O que é HEAD
HEAD é um atalho. Por exemplo:
• HEAD^1 é o commit pai do último commit feito. Múltiplos pais acontecem como resultado de um
merge.
HEAD poderia ser substituído por outros atalhos, como o nome de um branch ou
tag, ou o hash de um commit específico.
Assim como você, HEAD só conhece seu passado. Não existem atalhos para um
commit à frente.
9
6.2. Como as coisas se relacionam
Fazendo uma analogia, pense que…
• HEAD é você.
Nos casos acima, o commit é opcional. Quando não informado assume que seja HEAD.
Ao invés de commit, pode ser um branch, uma tag ou HEAD.
10
7. Comunicação com o servidor
git push
Envia seu branch atual para o servidor.
Figura 11. Ao enviar um branch para o servidor o Git vai dando dicas.
O GitHub não aceita que você digite sua senha. Você precisar criar um personal
access token. Para saber como, visite https://docs.github.com/pt/authentication/
keeping-your-account-and-data-secure/creating-a-personal-access-token.
git pull
Faz download de todos os novos dados no servidor, e atualiza o branch atual, onde você está.
O comando git pull é equivalente a dois comandos, git fetch seguido de git
merge (ou git rebase dependendo da sua configuração). O último comando é aquele
que vai atualizar seu branch atual para corresponder ao branch remoto.
Então, se quiser fazer o download sem atualizar o branch local, use git fetch.
11
7.1. Usando um servidor local
Um servidor remoto não precisa estar na internet, mas pode ser qualquer pasta que já seja um
repositório Git.
Seria possível definir uma pasta na rede local como servidor. Então a equipe de desenvolvedores
faz git clone dessa pasta e envia as alterações com git push.
Repositórios usados como servidores não recebem commits, então não precisa ter
Working Directory, que pode ser removido por…
• Repositórios já existentes:
12
8. Unindo branches
Unir branches envolve juntar alterações de dois branches (ou mais) em um único branch.
Há dois comandos para se fazer isso…
git merge
Analisa a diferença entre dois branches e cria um commit que conciliar as diferenças.
git rebase
Verifica quais commits do branch atual não existem no branch.
Então percorre cada commit e os aplica individualmente no branch de destino,
que será a nova 'base' para o branch atual.
13
8.1. Resolvendo conflitos
O Git sinaliza conflito nos arquivo com os marcadores <<<<<<< HEAD e >>>>>>>.
14
9. Aprendendo mais
git --help
Já é um bom ponto de partida. Exibe os comandos mais usados.
15