cap08_dt.Rmd

title: "Dicionário de Termos"
author: "PET Estatística UFPR"
graphics: yes
output:
pdf_document:
template:
highlight: default
toc: false
keep_tex: true
number_sections: false
Config
O config
é um comando usado para ajustar as configurações padrão do
Git. Há duas configurações básicas a serem feitas: a inclusão do e-mail
e do nome do usuário Git. Todas as configurações definidas como globais
ficam armazenadas em um arquivo chamado .gitconfig
, que fica
localizado no diretório padrão do usuário.
Exemplo:
# Configurando o usuário Ezio Auditore:
git config --global user.name "Ezio Auditore"
# Configurando o e-mail:
git config --global user.email ezio.auditore@exemple.com
SSH Key
É uma chave de autenticação baseada em criptografia de chave pública (chave assimétrica). Essa criptografia torna o processo de transferência de arquivos entre o cliente e o servidor mais segura.
Para que o Git local consiga se conectar a um servidor Git remoto, é necessário que esta chave seja gerada e que as devidas configurações sejam feitas tanto localmente quanto no servidor remoto, caso contrário, é exibido um erro e a conexão é interrompida.
Exemplo:
# Gerando chave SSH:
ssh-keygen
Help
Todo comando Git tem um manual de ajuda que pode ser exibido na tela com
o comando --help
.
Exemplo:
# Exibir ajuda do comando status:
git status --help
Repositório
Um repositório é uma pasta gerenciada pelo Git. A partir da criação desta, usufruímos do sistema de versionamento, sendo possível transitar entre as diferentes versões a medida que necessário.
Exemplo:
# Iniciar repositório na pasta atual:
git init
Stagin Area
A stagin area é um espaço temporário na pasta gerenciada pelo Git. É o local em que ficam os arquivos antes de serem marcados como uma versão definitiva. Em tradução livre, stagin area é área de estágio, podemos assim imaginar que o arquivo está estagiando antes de ser promovido a um arquivo definitivo.
Remote
O remote
mostra o servidor remoto onde os arquivos Git estão
hospedados. O remote padrão geralmente é criado com o nome de origin
,
mas é possível adicioná-lo utilizando outros nomes e até mesmo adicionar
outros servidores remotos juntamente ao origin
.
Exemplo:
# Adicionando um servidor remoto com nome origin:
git remote add origin "git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git"
Clone
O clone
é usado quando deseja-se clonar um repositório que está
disponível em um servidor remoto para o servidor local. Depois da
clonagem, estará disponível todos os arquivos e todo o histórico de
controle de versões sem a necessidade de uso da internet.
É importante salientar que quando se é usado o clone
, o servidor
remoto é adicionado automaticamente, podendo ser acessado através do
comando origin
.
Exemplo:
# Clonando o projeto desta apostila:
git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git
# Exibindo os servidores remotos:
git remote
Status
O status exibe a diferença entre o estado atual dos arquivos e o estado
do último commit
do mesmo branch
. São três estados possíveis:
consolidado (committed), modificado (modified) e preparado (staged).
Exemplo:
# Pedindo o status:
git status
Add
O add
adiciona (envia) os arquivos para a stagin area, para que possa
ser marcado no tempo por um commit.
Exemplo:
# Adicionar todos os arquivos a stagin area:
git add *
Commit
O commit
marca os arquivos da stagin area como uma versão definitiva,
para que posteriormente, caso algum erro ocorra, possamos voltar nos
commits anteriores onde o código está em pleno funcionamento.
Exemplo:
git commit -m "Meu primeiro commit"
Branch
Os branchs
são como uma cópia dos arquivos do ultimo commit para um
ambiente de desenvolvimento paralelo, o que permite que as modificações
em um branch
não afete os arquivos em outro. Os branchs também são
chamados de ramos de desenvolvimento. Veja com mais detalhes nos
capítulos 3 e 7.
Exemplo:
# Cria um branch chamado novoBranch
git branch novoBranch
Checkout
O checkout
serve para transitar entre branchs e commits. Usando o
checkout é possível voltar a commits anteriores.
Exemplo:
# Mudar do branch atual para o branch teste:
git checkout teste
Merge
Com o merge
é possível a fusão de dos dois ramos em um.
Quando se trabalha em ramos diferentes (diferentes branchs) e precisa-se
posteriormente juntar o trabalho, o merge
(fundir) é usado, permitindo
que o trabalho seja centralizado novamente. A fusão é feita de forma
automática, mas conflitos podem ocorrer, como por exemplo, quando duas
ou mais pessoas modificam a mesma parte do código. Estes conflitos
devem ser resolvidos manualmente, deixando a cargo do gerente de
projetos decidir que parte do código deve permanecer.
Exemplo:
# Faz merge do branch chamado novoBranch com o branch atual:
git merge novoBranch
Rm
O git rm
, na sua forma mais comum, serve para remover um arquivo de
forma que ele deixe de ser gerenciado pelo Git e seja excluído do disco
rígido. Também é possível que o arquivo deixe de ser gerenciado e
permaneça no disco.
Uma das vantagens é que, quando o arquivo é removido pelo git rm
, já
aparece como preparado (staged), precisando somente que a exclusão seja
commitada.
Exemplo:
# Remover arquivo teste.tex do gerenciamento e do disco:
git rm teste.tex
# Remover arquivo teste.tex apenas do gerenciamento:
git rm --cached teste.tex
Mv
O git mv
move ou renomeia arquivos informando ao Git.
Caso a mudança seja feita sem esse comando, o Git entende que o arquivo foi deletado e que um novo arquivo foi criado, deixando de fora, por exemplo, a ligação existente entre o arquivo e seus commits.
Exemplo:
# Renomeando o arquivo teste.tex para arquivo1.tex:
git mv teste.tex arquivo1.tex
Push
O push
é usado para "empurrar" os arquivos do repositório local para o
servidor remoto.
Exemplo:
# Atualizado o branch master (remoto), com o branch atual (local):
git push origin master
Fetch
O fetch
atualiza o repositório local com as alterações do remoto,
porém não realiza o merge dos arquivos, deixando isso para ser feito
manualmente.
Exemplo:
# Buscando arquivos no servidor remoto origin:
git fetch origin
Pull
O pull
é semelhante ao comando fetch
, porém, puxa os arquivos do
servidor remoto fazendo merge. Caso haja algum conflito de merge, estes
deverão ser resolvidos manualmente.
Exemplo:
# Puxando arquivos no servidor remoto origin:
git pull origin
HEAD
HEAD
é um arquivo que contém um apontador para o branch
atual.
Quando o checkout
é executado para a mudança do branch
, esse arquivo
é automaticamente modificado, apontando agora para o novo local, e assim
permitindo que, quando o computador for desligado e depois de reiniciado
o Git ainda esteja trabalhando com o mesmo branch
.
Tag
As tags são usadas para marcar pontos específicos do desenvolvimento. Geralmente são usadas para marcar versões definitivas, como a v1.0, v2.0 e assim por diante.
Elas são divididas em dois tipos: leve e anotada. A tag
leve
simplesmente aponta para um commit
específico. Já a tag
anotada é
guardada como objetos inteiros, possuindo algumas informações, como o
nome da pessoa que criou, a data, uma mensagem semelhante a de commit
,
entre outras.
Exemplo:
# Criando tag leve:
git tag -l "v1.0.0"
# Criando tag anotada:
git tag -a v1.0 -m "Minha primeira tag anotada."
Stash
Com este comando não é necessário fazer um commit
para mudar de
branch
. Ao executá-lo, os arquivos modificados ficam salvos em uma
pilha de modificações inacabadas, sendo possível transitar entre
branchs
e voltar ao trabalho inacabado quando necessário.
Exemplo:
# Fazendo o stash:
git stash
# Listando os stash criados:
git stash list
Reset
Enquanto o git checkout
somente transita entre os commits
, o reset
pode também alterar o histórico, fazendo commits
serem apagados de
maneira irreversível (--hard) ou serem apenas retornados ao estado de não
commitado (--soft).
Exemplo:
# Apagando o último commit (voltando ao anterior):
git reset --hard HEAD~1
Rebase
O rebase
é usado para modificar commits
antigos. Ele refaz a árvore
de commits
, sendo assim não é uma boa ideia fazer um push
da
alteração, pois modificará a árvore do servidor afetando todos os
desenvolvedores.
A ideia geral é rebase
apaga os commits de um ramo e "muda de base",
passando-os para novos commits do ramo atual, formando uma árvore com
fluxo de trabalho linear.
Exemplo:
# Fazer o rebase do branch teste para o atual:
git rebase teste
Blame
Pesquisa qual commit
modificou determinado arquivo, com o objetivo de
encontrar quem e quando um erro foi inserido. Esse método também é
chamado de anotação de arquivo.
Exemplo:
# Fazer
Bisect
O bisect
realiza uma pesquisa binária (binary search) a procura de
erros. Para que a pesquisa ocorra, é necessário um ponto no tempo em que
o código esteja funcionando e outro que não esteja.
Exemplo:
# Pesquisa Binária:
# Iniciando a pesquisa.
git bisect start
# Marcando o commit atual como não funcionando.
git bisect bad
# Marcando o commit com nome commit1 como funcionando:
git bisect good commit1