Skip to content
Snippets Groups Projects
Commit 9c6d4bd9 authored by gabriel sartori's avatar gabriel sartori
Browse files

revisão do capítulo

parent faadd49c
No related branches found
No related tags found
1 merge request!37Issue#50
......@@ -6,9 +6,9 @@ Dicionário de Termos
## Config
O `config` é um comando usado para ajustar as configurações padrão do git.
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.
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.
......@@ -24,7 +24,7 @@ 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 transferência
(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, é
......@@ -41,7 +41,7 @@ ssh-keygen
## Help
Todo comando git tem um manual de ajuda que pode ser exibido na tela
Todo comando Git tem um manual de ajuda que pode ser exibido na tela
com o comando `--help`.
**Exemplo:**
......@@ -52,12 +52,15 @@ git status --help
## Repositório
<<<<<<< HEAD
=======
Um repositório é uma pasta gerenciada pelo git. A partir
da criação desta, usufruimos dos sistema de versionamento, sendo possível
transitar entre as diferentes versões a medida que necessário.
>>>>>>> 07c90afef682bf3d8d8cd150e8145174e3520928
usufruimos da podemos marcar pontos de mudanças significativas nos arquivos gerenciados,
sendo possível transitar entre as diferentes verões a medida do necessário.
**Sugestão**: Um repositório é uma pasta gerenciada pelo git. A partir
da criação desta, usufruimos dos sistema de versionamento.
**Exemplo:**
......@@ -68,19 +71,17 @@ git init
## Stagin Area
A stagin area é um espaço temporário na pasta gerenciada pelo git. É
aonde ficam os arquivos antes de ser marcados como uma versão definitiva.
Em tradução livre, stagin area é area de estágio,
podemos assim imaginar que o arquivo está estagiando antes de
ser promovido a um arquivo definitivo.
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 aonde o
seus arquivos git estão hospedados. O remote padrão
geralmente é criado com o nome de `origin`, mas
é possível adiciona-lo utilizando outros nomes e
até mesmo adicionar outros servidores remotos juntamente ao `origin`.
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:**
```{r, engine='bash', eval=FALSE}
......@@ -96,8 +97,8 @@ 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 é usado o `clone`, o servidor remoto
é adicionado automaticamente, podendo ser acessado atravéz do nome
É importante salientar que quando se é usado o `clone`, o servidor remoto
é adicionado automaticamente, podendo ser acessado através do comando
`origin`.
**Exemplo:**
......@@ -111,7 +112,7 @@ git remote
## Status
O status exibe a diferença entre o estado atual dos arquivos e o estado
do ultimo `commit` do mesmo `branch`. São três estados possíveis:
do último `commit` do mesmo `branch`. São três estados possíveis:
consolidado (committed), modificado (modified) e preparado (staged).
**Exemplo:**
......@@ -133,10 +134,9 @@ 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 para commits anteriores onde o código está
em pleno funcionamento.
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:**
```{r, engine="bash", echo=TRUE, eval=FALSE}
......@@ -145,11 +145,18 @@ git commit -m "Meu primeiro commit"
## Branch
<<<<<<< HEAD
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 no capitulos dos worksflows.
=======
Os `branchs` são como cópias dos arquivos do último commit para um ambiente
de desenvolvimento paralelo, o qual 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.
>>>>>>> 07c90afef682bf3d8d8cd150e8145174e3520928
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
......@@ -160,7 +167,7 @@ git branch novoBranch
## Checkout
O `checkout` serve para transitar entre branchs e commits.
Usando o checkout é possivel voltar a commits anteriores.
Usando o checkout é possível voltar a commits anteriores.
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
......@@ -170,10 +177,10 @@ git checkout teste
## Merge
Com o `merge` é possivel a fusão dos dois ramos em um.
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 dos dois, o `merge` (fundir) é usado,
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.
......@@ -188,14 +195,20 @@ git merge novoBranch
## Rm
<<<<<<< HEAD
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 excluido do disco
rígido. Também é possível que o arquivo deixe de ser gerenciado
e permaneça no disco.
=======
O `git rm`, de forma mais prática, serve para remover um arquivo deixando
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.
>>>>>>> 07c90afef682bf3d8d8cd150e8145174e3520928
Uma das vantagens é que, quando o arquivo é removido pelo `git rm`, ele
aparece como preparado (staged), precisando somente que
a exclusão seja commitada.
Uma das vantagens é que, quando o arquivo é removido pelo `git rm`,
aparece como preparado (staged), precisando somente que a exclusão seja
commitada.
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
......@@ -208,10 +221,9 @@ git rm --cached teste.tex
## Mv
O `git mv` move ou renomeia arquivos, informando ao git que eles foram
movidos ou renomeados.
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
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.
......@@ -234,10 +246,8 @@ git push origin master
## Fetch
O `fetch` busca no repositório remoto os dados e arquivos que
não estão no repositório local. É impostante frisar que o `fetch` não
faz o merge dos arquivos, deixando isso para ser feito manualmente
pelo usuário.
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:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
......@@ -262,10 +272,9 @@ git pull origin
`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, permitindo que, quando o computador for desligado e depois
ligado novamente, o git ainda esteja trabalhando com o mesmo `branch`
de antes.
esse arquivo é automaticamente modificado, apontando agora para o
novo local, e assim permitindo que, quando o computador for desligado e
depois de reniciado o Git ainda esteja trabalhando com o mesmo `branch`.
## Tag
......@@ -274,10 +283,10 @@ 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 simplemente aponta para um `commit` específico, já a `tag`
anotada é guardada como objtos inteiros, possuindo algumas informações
relacionadas a ela, como o nome da pessoa que criou, a data, uma mensagem
semelhante a de `commit`, entre outras.
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:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
......@@ -290,8 +299,8 @@ git tag -a v1.0 -m "Minha primeira tag anotada."
## Stash
É uma maneira de não precisar fazer um `commit` para mudar de `branch`.
Executando este comando, os arquivos modificados ficam salvos em uma
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.
......@@ -307,25 +316,25 @@ git stash list
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 resetados
apagados de maneira irreversível (--hard) ou serem apenas resetados
ao estado de não commitado (--soft).
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
# Apagando o ultimo commit (Voltando ao anterior):
# Apagando o último commit (voltando ao anterior):
git reset --hard HEAD~1
```
## Rebase
O `rebase` é usado para modificar `commits` antigos. Ele refaz a arvore
de `commits`, sendo assim, não é uma boa ideia fazer um `push` da
alteração, pois modificara a arvore do servidor, afetando todos os
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 idéia geral é que ele pega os commits de um ramo e "muda de base",
passando-os para novos commits do ramo atual, formando uma arvore com
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:**
......@@ -337,8 +346,8 @@ git rebase teste
## Blame
Pesquisa qual `commit` modificou determinado arquivo, com o objetivo
de encontrar quem inseriu um erro e quando foi inserido.
Esse método também e chamado de anotação de arquivo.
de encontrar quem e quando um erro foi inserido.
Esse método também é chamado de anotação de arquivo.
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
......@@ -349,7 +358,7 @@ de encontrar quem inseriu um erro e quando foi inserido.
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
no `commit` esteja tudo funcionando e um em que não esteja.
o código esteja funcionando e outro que não esteja.
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
......
## Clonar, Modificar e Enviar
Exemplos de Rotinas
===================
## Clonar, Modificar e Subir
```{r, engine='bash', echo=TRUE, eval=FALSE}
# Clonar o projeto desta apostila:
git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git
# Modifique o projeto antes de executar o código abaixo.
# Commitar o projeto:
git commit -a -m "Sua Mensagem de Commit"
# Enviar projeto ao servidor (branch master, servidor origin):
git push origin master
```
## Resolver conflito de merge
```{r, engine='bash', eval=FALSE, echo=TRUE}
# Requisitar merge:
git merge ramo_teste
# Resolver conflitos manualmente.
# Finalizar merge com o commit:
git commit -a -m "Merge do ramo_teste"
```
## Incorporar o remoto ao local
```{r, engine='bash', eval=FALSE, echo=TRUE}
# Listando os servidores remotos:
git remote
# Adicionando novo remote com nome remoto:
git remote add remoto git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git
# Atualizando arquivos locais:
git pull
```
## Resolver um bug
```{r, engine='bash', eval=FALSE, echo=TRUE}
git branch bugfix
git checkout bugfix
# Modifica o código de acordo com o necessário.
git commit -a -m "Bug corrigido"
git checkout master
git merge bugfix
git branch -d bugfix
```
## Deletar Ramos
## Deletar ramos
```{r, engine='bash', echo=TRUE, eval=FALSE}
# Listar ramos:
git branch
# Deletar ramo local:
git branch -d "nome_ramo"
# Deletar ramo remoto:
git push origin :nome_ramo
```
## Criar ramo de um commit passado
```{r, engine='bash', echo=TRUE, eval=FALSE}
# Verificar código commit:
git log
# Criando branch com commit do código
# ec3650c8661d75b486a236e3d416ab58db1d596a:
git branch novo_branch ec3650c8661d75b486a236e3d416ab58db1d596a
# Mudando para novo_branch
git checkout novo_branch
```
## Voltar o projeto para um commit
```{r, engine='bash', echo=TRUE, eval=FALSE}
# Listando commits pelo nome e código de identificação:
git log --pretty=oneline
# Voltando a um commit anterior, em que seu código
#de identificação é: ec3650c8661d75b486a236e3d416ab58db1d596a.
git checkout ec3650c8661d75b486a236e3d416ab58db1d596a
```
## Reescrever mensagem de commit
```{r, engine='bash', echo=TRUE, eval=FALSE}
git log --oneline
git commit --amend "Correção de Commit"
git push -f origin master
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment