Escolar Documentos
Profissional Documentos
Cultura Documentos
Git para
iniciantes
Guia completo
para começar a
usar o controle
de versão de
forma eficiente
ÍNDICE
Conceitos
O que é controle de versão?
Por que utilizar um sistema de controle de versão?
Sistema de controle de versão centralizado x distribuído
O que é Git?
Git vs. GitHub
Primeiros passos com Git
Instalando o Git
Instalando o Git no Ubuntu
Instalando o Git no windows
Criando um repositório Git
Estrutura de um comando Git
Comandos Essenciais do Git
Adicionando arquivos e realizando commits
Entendendo o Git
Git workflow
Criando branches e realizando merges (Branching e Merging)
Como criar uma branch
Como efetuar merge da sua branch
Resolvendo conflitos
Desfazendo alterações
Desfazendo alterações utilizando hash de commits
Melhores práticas de Git
Trabalhando com GitHub
Quais os primeiros passos para utilizar o GitHub
Criar uma conta no GitHub
Criando um repositório remoto
Clonar um repositório remoto
Estou com o repositório em meu computador. E agora?
Técnicas Avançadas de Git
Os próximos passos para aperfeiçoar seu versionamento
Git rebase
cherry-picking
Git Hooks
Git aliases
Exercícios
Conclusão
1
I
C O N C E I T O S
I 2
O que é
controle de versão?
Controle de versão é um sistema que
ajuda a gerenciar as mudanças em um
conjunto de arquivos ao longo do
tempo. Ele permite que várias pessoas
trabalhem nos mesmos arquivos
simultaneamente, sem se preocupar
em bloquear ou sobrescrever o trabalho
um do outro.
3
O controle de versão é uma ferramenta
essencial para o desenvolvimento de
software, mas também pode ser usado
para outros tipos de arquivos, como
documentos e gráficos. É
particularmente útil para equipes que
trabalham em projetos grandes ou
para indivíduos que desejam
acompanhar o trabalho ao longo do
tempo.
4
Rastreamento de alterações: O
versionamento permite que você
acompanhe as mudanças feitas em um
arquivo ao longo do tempo e possa
recuperar versões anteriores, caso seja
necessário.
5
Backup e recuperação:
O versionamento também serve como
uma forma de backup de arquivos. Se
algo der errado com o arquivo atual,
você pode facilmente recuperar uma
versão anterior e retomar o trabalho a
partir daí.
Experimentação e desenvolvimento:
O versionamento permite que você crie
e experimente novos recursos e
funcionalidades, sem afetar o código
principal. Isso serve para testar novas
ideias e recursos sem arriscar a
estabilidade do projeto principal.
7
Isso significa que os desenvolvedores
podem trabalhar offline e, quando
estiverem prontos para enviar suas
alterações, podem sincronizá-las com o
repositório central ou enviar para outro
desenvolvedor. Isso torna a
colaboração mais flexível e
descentralizada, pois não há
dependência de um servidor
centralizado.
8
Em resumo, a principal diferença entre
um sistema de controle de versão
distribuído e um sistema de controle de
versão centralizado é que o primeiro
permite uma colaboração mais flexível
e descentralizada, enquanto o segundo
é mais rígido e depende de um servidor
centralizado para funcionar.
O que é Git?
Git é um sistema de controle de versão
distribuído de código aberto criado por
Linus Torvalds em 2005. Ele é
amplamente utilizado em projetos de
software para gerenciar o código-fonte
e colaboração entre desenvolvedores.
9
Isso torna o controle de versão mais
rápido, mais confiável e mais eficiente
em relação a outros sistemas de
controle de versão centralizados.
Além disso, Git oferece recursos como
ramificação, mesclagem e tags, que
tornam a colaboração em equipe mais
fácil e flexível. Como Git é um sistema
de controle de versão distribuído
(explicado no tópico anterior), cada
desenvolvedor tem uma cópia
completa do repositório de código em
sua máquina local, tornando o processo
de colaboração e compartilhamento de
código mais fácil e seguro.
11
Os desenvolvedores podem usar o Git
sem o GitHub, mas o GitHub torna o
processo de colaboração em equipe e
compartilhamento de código mais fácil
e eficiente. O GitHub permite que os
desenvolvedores armazenem seus
repositórios de código em nuvem,
podendo, assim, ser acessados por
outros desenvolvedores em qualquer
lugar do mundo. Ele também facilita a
colaboração em equipe, permitindo que
várias pessoas trabalhem no mesmo
repositório de código-fonte, rastreiem
problemas e mesclagem de
ramificações de código.
12
II
P R I M E I R O S
P A S S O S C O M
G I T
II 13
Instalando o Git
Os passos para instalar o Git dependem
do Sistema Operacional utilizado. Neste
capítulo mostrarei como instalar nos
Sistemas Operacionais Ubuntu e
Windows. Caso você utilize outro, além
desses, fique a vontade para conferir as
instruções na documentação do git.
Você pode encontrar estas referências
no seguinte link: https://git-
scm.com/downloads
14
3.: Em seguida, execute o comando
abaixo para instalar o Git:
git --version
15
Instalando o Git no windows
Acesse a página de download no site
oficial do Git:
https://git-scm.com/download/win
16
Criando um repositório Git
cd ~/dev/git/primeiro_repo_git/
17
Feito isso, devemos informar o git que a
partir de agora ele deve gerenciar este
diretório. Para isso devemos utilizar o
seguinte comando:
git init
18
Entenderemos o que cada trecho dessa
estrutura representa:
19
<argumentos>: São informações
adicionais fornecidas ao comando.
Os argumentos geralmente são
opcionais e podem ser posicionais ou
nomeados.
Por exemplo, o comando git clone
git://github.com/user/repo.git clona um
repositório remoto em sua máquina
local.
21
git merge: Mescla as alterações de um
branch em outro.
Adicionando arquivos e
realizando commits
22
Como vimos anteriormente, utilizamos
git add para adicionar arquivos ao
índice do git para serem rastreador. Já
o git commit cria um commit com as
alterações. Aqui está um guia passo a
passo para adicionar arquivos e
“comittar” as alterações no Git:
23
Use o comando git commit para
confirmar as alterações e criar um
commit. Por exemplo, para criar um
commit com uma mensagem, você
pode executar o comando:
24
III
E N T E N D E N D O
O G I T
III 25
Git workflow
O fluxo de trabalho (workflow) do git
pode variar de equipe para equipe e de
projeto para projeto, mas aqui está
uma descrição geral do fluxo de
trabalho básico do Git:
26
10
27
Envie as alterações: Agora que você
tem um novo commit com suas
alterações, você pode enviar as
alterações para o repositório central
usando o comando git push.
28
Este é um fluxo de trabalho básico do
Git, mas pode haver variações
dependendo do projeto e das equipes
envolvidas. Além disso, o Git oferece
recursos adicionais, como pull requests
e branching models mais complexos,
que podem ser úteis para projetos
maiores e equipes mais complexas.
29
O Git permite que os desenvolvedores
criem branches (ramificações) para
trabalhar em diferentes recursos ou
funcionalidades de um projeto
isoladamente, ou seja, sem interferir no
trabalho dos demais desenvolvedores
ou na versão principal do projeto.
30
O uso correto de branching e merging
no Git pode ajudar a gerenciar
efetivamente projetos de software com
várias equipes trabalhando
simultaneamente, garantindo que as
alterações sejam integradas de
maneira suave e consistente.
31
Certifique-se de estar na branch
principal usando o comando
git pull
33
Para fazer um merge da sua branch
para a branch master no Git, siga os
seguintes passos:
Execute o comando
34
O Git tentará fazer o merge
automaticamente, mas em alguns
casos pode ocorrer um conflito. Nesses
casos, o Git mostrará uma mensagem
de erro e você deverá resolver o conflito
manualmente antes de continuar o
merge.
Se o merge for bem-sucedido, os
commits da sua branch serão
adicionados à branch principal.
Resolvendo conflitos
Quando você faz um merge ou um
rebase no Git, podem ocorrer conflitos
entre as alterações realizadas em
diferentes branches. O Git não
consegue decidir automaticamente
qual é a versão correta a ser usada,
portanto, é necessário resolver os
conflitos manualmente. Para resolver
conflitos no Git, siga os seguintes
passos:
35
Abra o arquivo em questão — marcado
como arquivo em conflito pelo git — em
um editor de texto e procure as
marcações de conflito que o Git inseriu
no código. Essas marcações indicam as
alterações conflitantes e devem ser
resolvidas manualmente.
Edite o arquivo para resolver os
conflitos. Escolha a versão correta ou
faça as alterações necessárias para
mesclar as duas versões.
Após fazer as alterações, salve o
arquivo. Adicione o arquivo modificado
ao índice de versionamento do Git
usando o comando git add <arquivo-
modificado>
36
É importante lembrar que, ao resolver
conflitos, você deve sempre escolher a
versão correta e fazer merge das
alterações cuidadosamente para
garantir que não haja perda de dados
ou quebras no código.
Além disso, é uma boa prática manter
as branches atualizadas e realizar o
merge das alterações com frequência
para minimizar a possibilidade de
conflitos.
Desfazendo alterações
Git oferece várias maneiras de desfazer
alterações em um repositório. Aqui
estão algumas:
38
Desfazendo o último commit:
Desfazendo alterações
utilizando hash de commits
Para os próximos comandos
precisaremos do hash do commit que
desejamos reverter ou desfazer.
Para obter o hash do commit você pode
usar o comando git log. O hash é uma
sequência alfanumérica única que
identifica o commit.
39
Execute o comando git log. Isso
mostrará uma lista de todos os
commits no seu repositório.
Encontre o commit do qual você deseja
obter o hash e copie a sequência
alfanumérica ao lado de "commit". Algo
como:
"d23f80b4e4c233e6c8f1d3e1a914c9b69".
40
Revertendo para um commit anterior
41
Melhores práticas de Git
Commits pequenos e frequentes:
Isto ajuda a manter um histórico de
mudanças limpo e organizado,
permitindo que você reverta facilmente
a alteração se houver um problema.
Use branches:
Use branches para manter o código
organizado e trabalhar em diferentes
recursos e correções de bugs sem
afetar o código principal. Certifique-se
de nomear suas branches de forma
clara e significativa.
42
Faça pull regularmente:
Certifique-se de fazer pull regularmente
para manter seu repositório local
atualizado com o repositório remoto.
Isso evita conflitos desnecessários e
problemas de merge no futuro.
Use o .gitignore:
O arquivo .gitignore é usado para
ignorar arquivos desnecessários que
não devem ser incluídos no repositório.
Como arquivos gerados pelo build, por
exemplo. Criar o .gitignore ajuda a
evitar problemas com arquivos
desnecessários no repositório.
43
Revisão de código:
A revisão de código é uma prática
importante para garantir a qualidade
do código e evitar problemas de
segurança. Certifique-se de envolver
outros colaboradores em revisões de
código e usar ferramentas para
simplificar o processo.
44
IV
IV 45
Quais os primeiros passos para
utilizar o GitHub
Criar e utilizar um repositório remoto no
GitHub pode soar como algo complexo
para quem nunca realizou essa tarefa,
mas para iniciar basta que realizemos
3 passos.
Criar um repositório
Clonar o repositório
46
Criar uma conta no GitHub
No início deste livro entendemos a
diferença entre Git e GitHub e também
entendemos qual a função do GitHub
em relação ao git. Agora criaremos
nossa conta para podermos trabalhar
com as duas ferramentas.
1. Acesse https://github.com/.
2. Clique em "Sign up" no canto
superior direito da página.
3. Preencha as informações
solicitadas na página de registro,
incluindo nome de usuário, endereço
de e-mail e senha.
4. Clique em "Create account" para
concluir o processo de registro.
5. Após criar sua conta, você pode
personalizar seu perfil, criar
repositórios para seus projetos e
colaborar com outros usuários do
Github.
47
Criando um repositório remoto
Para criar um repositório remoto no
Github, siga os passos abaixo:
1. Acesse https://github.com/.
2. Faça login na sua conta.
3. No canto superior direito da página,
clique no botão "+", e em seguida
em "New repository".
4. Insira o nome do repositório na
caixa de texto "Repository name".
5. Se achar necessário, adicione uma
descrição ao repositório na caixa de
texto "Description".
6. Escolha se o repositório será público
ou privado, marcando a opção
correspondente.
7. Selecione se deseja criar um
repositório com um arquivo
README.md, com um arquivo de
.gitignore ou com uma licença.
8. Clique em "Create repository" para
criar o repositório.
48
Clonar um repositório remoto
Para clonar um repositório do GitHub
para o seu computador, siga os passos
abaixo:
50
Para fazer o "push" das suas alterações
para o GitHub, siga os passos abaixo:
51
No momento de realizar o push (git
push), se você seguiu as melhores
práticas e criou uma branch nova para
o desenvolvimento da sua nova feature,
será necessário forçar com que o git
crie a versão remota da sua branch ao
realizar o primeiro push. Para isso você
deve rodar o seguinte comando.
52
Após rodar o comando de push será
necessário inserir suas credenciais do
GitHub quando solicitado (usuário e
senha ou token de acesso).
53
Efetuando pull de alterações
git pull
54
Pronto! Agora a sua branch local está
atualizada com as alterações mais
recentes da branch remota do GitHub.
55
V
V 56
Técnicas avançadas:
Os próximos passos para
aperfeiçoar seu versionamento
Durante o aprendizado, você já deve ter
se familiarizado com os conceitos
básicos de controle de versão, como
commits, branches e merges. No
entanto, existem técnicas avançadas
em Git que podem levar o seu fluxo de
trabalho a um nível totalmente novo.
Neste capítulo, vamos dar uma breve
olhada em algumas dessas técnicas
avançadas para motivá-lo a explorar
mais a fundo o que Git tem a oferecer.
Embora possa parecer um pouco
intimidante no início, com a prática e a
compreensão adequadas, essas
técnicas podem transformar a maneira
como você trabalha.
57
Git rebase
cherry-picking
59
Git Hooks
Git aliases
Exercícios
VI 62
Para este primeiro exercício
trabalharemos apenas com git, logo
mais faremos algumas tarefas com Git
e GitHub.
63
Adicione uma nova linha no arquivo
README.md.
Faça o commit da alteração na
nova branch.
Alterne de volta para a branch
principal e verifique que a nova linha
não está presente.
Mescle a nova branch na branch
principal.
Exclua a nova branch.
64
Agora, sim, faremos algumas tarefas
utilizando GitHub
65
Faça o commit da nova linha na
nova branch.
Faça o push da nova branch para o
repositório remoto no GitHub.
Crie um pull request para mesclar a
nova branch na branch principal.
Mescle a nova branch na branch
principal.
Exclua a nova branch no repositório
remoto.
66
VII
Conclusão
VII 67
Este projeto é um guia prático útil para
iniciantes que desejam aprender Git e
GitHub. Ele apresenta informações
importantes com exemplos para ajudar
os leitores a entender conceitos-chave,
como commits, branches e merges.
Em suma, este livro é uma introdução
completa e bem estruturada ao Git e ao
GitHub que oferece aos iniciantes uma
compreensão sólida do fluxo de
trabalho de desenvolvimento de
software. Ele não apenas apresenta
conceitos fundamentais, mas também
explora técnicas avançadas, sendo
assim uma fonte valiosa de
informações para qualquer pessoa que
deseje aprimorar suas habilidades em
controle de versão. Este livro é uma
ferramenta útil para quem deseja
aprender Git e GitHub de maneira
rápida e eficaz.
68