O documento descreve os principais comandos do Git para gerenciar um repositório de versionamento de código de forma distribuída. Em três frases ou menos, o documento explica como iniciar e clonar repositórios, registrar alterações, criar branches, comparar versões e unir branches.
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
Git
1. Git
John Henrique Teixeira de Godoi
Instituto de Ciˆncias e Tecnologia
e
Universidade Federal de S˜o Paulo
a
S˜o Jos´ dos Campos – SP, Brasil
a e
Outubro, 2011
Programa de Educa¸˜o em Software Livre - PESL
ca
2. O quˆ? Por quˆ? Pra quˆ?
e e e
Rotina no git
Avisos!
Esses slides s˜o baseados principalmente no GitReference.
a
Algumas tradu¸˜es podem n˜o ser fi´is mas se adequavam
co a e
melhor ao contesto.
Al´m do cont´udo desses slides tem a parte pr´tica que ser´
e e a a
exibida durante a apresenta¸˜o.
ca
John Henrique Teixeira de Godoi Git
3. O quˆ? Por quˆ? Pra quˆ?
e e e
Rotina no git
Indice
1 O quˆ? Por quˆ? Pra quˆ?
e e e
Versionadores
Distribu´
ıdos
Git
John Henrique Teixeira de Godoi Git
4. O quˆ? Por quˆ? Pra quˆ?
e e e
Rotina no git
Indice
1 O quˆ? Por quˆ? Pra quˆ?
e e e
Versionadores
Distribu´
ıdos
Git
2 Rotina no git
Reposit´rio
o
Desenvolvimento
Dividir para Conquistar e Somar resultados
Compartilhando e Atualizando projetos
Examinando e comparando
John Henrique Teixeira de Godoi Git
5. Versionadores
O quˆ? Por quˆ? Pra quˆ?
e e e
Distribu´
ıdos
Rotina no git
Git
Imagine vocˆ no desenvolvimento de um sistema com milhares de
e
arquivos, milh˜es de linhas de c´digos e centenas de
o o
desenvolvedores.
Como organizar, compartilhar e sincronizar tudo o que for
produzido?
John Henrique Teixeira de Godoi Git
6. Versionadores
O quˆ? Por quˆ? Pra quˆ?
e e e
Distribu´
ıdos
Rotina no git
Git
Alguma vez vocˆ j´ quis que fazer Ctrl+Z em algum arquivo
e a
depois de ter desligado o computador?
J´ quis fazer alguma mudan¸a no seu c´digo e ter a garantia de
a c o
mantˆ-lo est´vel?
e a
John Henrique Teixeira de Godoi Git
7. Versionadores
O quˆ? Por quˆ? Pra quˆ?
e e e
Distribu´
ıdos
Rotina no git
Git
Versionadores - O que s˜o? Para que servem? Por quˆ
a e
us´-los?
a
Versionadores s˜o sistemas que permitem o gerenciamento da
a
manipula¸˜o de arquivos, n˜o apenas c´digos-fontes, de forma que
ca a o
seja poss´ trabalhar com diversas c´pias, vers˜es, do mesmo em
ıvel o o
momentos diferentes com a possibilidade de unific´-las,
a
recuper´-las, compar´-las, sincroniz´-las, manter um hist´rico do
a a a o
que for desenvolvido e, ainda, pessoas diferentes trabalharem sobre
o mesmo arquivo em paralelo.
John Henrique Teixeira de Godoi Git
8. Versionadores
O quˆ? Por quˆ? Pra quˆ?
e e e
Distribu´
ıdos
Rotina no git
Git
Sistemas de Versionamento Distribu´
ıdos
Diferentes de seus antecessores, que necessitavam de uma
aplica¸˜o servidor que centraliza-se o gerencimento dos arquivos,
ca
os versionadores distribu´ıdos dispensam essa necessidade com
c´pias independentes do mesmo c´digo que podem comunicar
o o
entre si e se sincronizarem.
Cada c´pia pode ser tratada com um backup de todo o sistema e
o
n˜o necessitam de conex˜o com a internet para que possam
a a
trabalhar de forma eficiente.
John Henrique Teixeira de Godoi Git
9. Versionadores
O quˆ? Por quˆ? Pra quˆ?
e e e
Distribu´
ıdos
Rotina no git
Git
Git
Criado por Linus Torvalds em 2005.
Nome vem de uma brincadeira com a g´ “git” e o Kernel
ıria
criado por Linus levar seu nome.
Sistema de Versionamento Distribu´ com foco em seu
ıdo
desempenho.
Desenvolvido voltado para o versionamento do kernel Linux
que antes era versionado com software propriet´rio.
a
John Henrique Teixeira de Godoi Git
10. Versionadores
O quˆ? Por quˆ? Pra quˆ?
e e e
Distribu´
ıdos
Rotina no git
Git
Git - interface
Os comandos do git s˜o passados como parˆmetros ap´s a
a a o
chamada deste na linha de comando.
git <comando><op¸˜es><parˆmetros>
co a
Existem interface gr´ficas, e plugins para IDE’s, que facilitam
a
o uso das funcionalidades do git sem ter que usar o terminal.
NetBeans: http://nbgit.org/
Eclipse: http://eclipse.org/egit/
gitk e git-gui s˜o interfaces gr´ficas nativas.
a a
Para windows o tortoisegit ´ uma das melhores op¸˜es.
e co
http://code.google.com/p/tortoisegit/
John Henrique Teixeira de Godoi Git
11. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Rotina no git
O uso dos comandos do git pode ser resumido em uma rotina
di´ria que abragem as necessidades do cotidiano com um
a
versionador.
John Henrique Teixeira de Godoi Git
12. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Rotina no git - cheatsheet
Figure: http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html
John Henrique Teixeira de Godoi Git
13. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Determinando territ´rio
o
init(-db) <op¸˜es>
co
Atrav´s desse comando ´ inicializado um
e e
reposit´rio git.
o
Uma op¸˜o bastante usada a –bare que permite
ca
a cria¸˜o de um reposit´rio sem qualquer
ca o
configura¸˜o pr´via.
ca e
clone <Endere¸oReposit´rioRemoto>
c o
Com este comando criasse uma c´pia de um
o
reposit´rio remoto para o diret´rio atual.
o o
John Henrique Teixeira de Godoi Git
14. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Identifique-se
config - -global <op¸˜es>
co
Insere suas informa¸˜es para identificar de forma
co
natural sua modifica¸˜es no projeto.
co
user.name ’Seu nome’
user.email seuemail@servidor.com
John Henrique Teixeira de Godoi Git
15. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Selecionando
add <Lista de arquivos>
Com esse comando vocˆ define quais arquivos
e
dentro do diret´rio ser˜o versionados e
o a
rastreados pelo reposit´rio.
o
Com . todos os arquivos, diret´rios e
o
sub-diret´rios, existentes, ser˜o adicionados.
o a
rm <Lista de arquivos>
Remove do rastreamento do reposit´rio a lista
o
de arquivos.
mv <fonte><destino>
O git n˜o rastreia renomea¸˜o de arquivos, e
a ca
esse comando ´ equivalente a (git rm –cached
e
orig; mv orig new; git add new).
John Henrique Teixeira de Godoi Git
16. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Como estamos?
status <op¸˜es>
co
Mostra o estado dos arquivos.
-s exibe um resumo do estado no diret´rio(??) e
o
no reposit´rio(A—M—D).
o
Adicionado, Modificado e Apagado(Deleted).
John Henrique Teixeira de Godoi Git
17. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Registrando o momento
commit <op¸˜es>
co
Registra as modifica¸˜es realizadas no
co
reposit´rio.
o
-a adiciona as mudan¸as realizadas (git add) ao
c
reposit´rio.
o
-m “descri¸˜o” permite colocar uma descri¸˜o
ca ca
geral da mudan¸as realizadas naquele registro.
c
Esses registros poderam ser comparados,
revertidos e compartilhados posteriormente.
John Henrique Teixeira de Godoi Git
18. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
De volta do t´nel do tempo
u
diff
Mostra a diferen¸a, linha por linha, do que foi
c
adicionado ou n˜o ao reposit´rio.
a o
- -cached apenas para o que foi adicionado
HEAD (registro especial que representa o estado
atual) diferen¸a entre HEAD e o ultimo registro.
c ´
- -stats resumo das diferen¸as
c
reset <Registro>
troca o cont´udo HEAD pelo registro passado
e
como parˆmetro.
a
“Ctrl+Z” do git
- -hard Al´m do cont´udo do registro altera a
e e
´rvore de registro e descarta todo o resto (use
a
com modera¸˜o).
ca
John Henrique Teixeira de Godoi Git
19. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Ramificando
branch <op¸˜es><nome da ramifica¸˜o>
co ca
sem passar nenhum parˆmetro, ele listar´ as
a a
ramifica¸˜es existentes
co
passando um nome, ele criar´ uma ramifica¸˜o a
a ca
partir da atual
-d permite excluir a ramifica¸˜o (Use com
ca
modera¸˜o!).
ca
checkout <op¸˜es><nome da ramifica¸˜o>
co ca
Altera qual a ramifica¸˜o est´ sendo trabalhada.
ca a
Obs.: Ele ir´ exigir o registro de poss´
a ıveis
modifica¸˜es antes de realizar a troca.
co
-b cria uma nova ramifica¸˜o e depois altera
ca
para essa
John Henrique Teixeira de Godoi Git
20. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Unindo
merge <Lista de ramifica¸˜es>
co
Unifica as ramifica¸˜es passadas por parˆmetro
co a
com a atual e os registros mais recentes ser˜o
a
combinados em um novo.
...::*CONFLITOS*::...
git merge - -abort
use mergetool e diff a vontade, resolva os conflitos e proceda
com o merge novamente.
John Henrique Teixeira de Godoi Git
21. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Nos “registros” anteriores do projeto...
log
exibe o hist´rico de registro da ramifica¸˜o
o ca
atual. O que inclui indentificador, nome e e-mail
do usu´rio, data e hor´rio e descri¸˜o.
a a ca
- -oneline exibe apenas o identificador e a
descri¸˜o.
ca
- -graph mostra um grafo com o comportamento
dos registro (unifica¸˜es e ramifica¸˜es).
co co
tag
permite criar um marco no hist´rico de forma
o
que se possa us´-lo para referenciar algum ponto
a
no hist´rico.
o
git log - -decorate exibe os marcos tamb´m
e
John Henrique Teixeira de Godoi Git
22. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Vocˆ n˜o est´ sozinho!
e a a
remote
sem parˆmetos mostra a lista de nomes dos
a
reposit´rios remotos.
o
-v mostra, tamb´m, o endere¸o de cada
e c
reposit´rio para envio e busca de atualiza¸˜es.
o co
add <nome><endere¸o>adiciona um novo
c
reposit´rio com o nome e endere¸o passados por
o c
parˆmetro.
a
rm <nome>remove o reposit´rio com o nome
o
passado por parˆmetro
a
John Henrique Teixeira de Godoi Git
23. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Comunicando-se
fetch <nome>
faz o download das novas ramifica¸˜es e dados
co
do reposit´rio remoto.
o
pull <nome>
al´m do download tenta unificar com a
e
ramifica¸˜o atual.
ca
push <nome><ramifica¸˜o>
ca
envia suas novas ramifica¸˜es e dados para um
co
reposit´rio remoto.
o
John Henrique Teixeira de Godoi Git
24. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Pente fino
Para filtrar o hist´rico gerado pelo “log” podemos usar alguns
o
parˆmetros:
a
- -author=<autor>- -oneline -<quantidade>filtra o hist´rico o
pelo “autor” mostrando os registros, limitado a uma certa
“quantidade”, feitos por este.
- -since, - -before, - -until, - -after={ data} filtra por uma
especifica “data”, desde, antes, at´ e depois desta,
e
respectivamente.
data pode ser escrita nas formas: 3.weeks.ago
ou 2011-10-4, por exemplo
- -grep=<padr˜o>busca os registros que possuam o “padr˜o”
a a
em suas informa¸˜esco
- -S<mudan¸a>procura no hist´rico onde foi inserida a
c o
“mudan¸a” passada que pode ser uma fun¸˜o, por exemplo.
c ca
John Henrique Teixeira de Godoi Git
25. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Pente fino
merge-base <ramifica¸˜o1><ramifica¸˜o2>
ca ca
encontro o registro em comum entre as
ramifica¸˜es passadas por parˆmetro
co a
diff - -stat <ramifica¸˜o1><ramifica¸˜o2>
ca ca
encontra o registro em comum e mostra quais
foram as mudan¸as.
c
blame <arquivo>
exibe o respons´vel por cada linha de c´digo.
a o
John Henrique Teixeira de Godoi Git
26. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Colher de ch´
a
DiffMerge, Kdiff3 ou Meld – ferramentas gr´ficas para solu¸˜o
a ca
de conflitos
sudo apt-get install meld ; git config - -global merge.tool meld
John Henrique Teixeira de Godoi Git
27. Reposit´rio
o
Desenvolvimento
O quˆ? Por quˆ? Pra quˆ?
e e e
Dividir para Conquistar e Somar resultados
Rotina no git
Compartilhando e Atualizando projetos
Examinando e comparando
Referˆncias
e
gitref.org/
git-scm.org
zrusin.blogspot.com/2007/09/git-cheat-sheet.html
andyjeffries.co.uk/articles/25-tips-for-intermediate-git-users
pajeonline.blogspot.com/2010/12/versionando-seus-dados-
boas-praticas-e.html
John Henrique Teixeira de Godoi Git