Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
apostila-git
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Harbor Registry
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
pet-estatistica
apostila-git
Commits
9c6d4bd9
Commit
9c6d4bd9
authored
9 years ago
by
gabriel sartori
Browse files
Options
Downloads
Patches
Plain Diff
revisão do capítulo
parent
faadd49c
No related branches found
No related tags found
1 merge request
!37
Issue#50
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
cap08/cap08_dt.Rmd
+68
-59
68 additions, 59 deletions
cap08/cap08_dt.Rmd
cap08/cap08_er.Rmd
+92
-2
92 additions, 2 deletions
cap08/cap08_er.Rmd
with
160 additions
and
61 deletions
cap08/cap08_dt.Rmd
+
68
−
59
View file @
9c6d4bd9
...
...
@@ -6,9 +6,9 @@ Dicionário de Termos
## Config
O `config` é um comando usado para ajustar as configurações padrão do
g
it.
O `config` é um comando usado para ajustar as configurações padrão do
G
it.
Há duas configurações básicas a serem feitas: a inclusão do e-mail e
do nome do usuário
g
it.
do nome do usuário
G
it.
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
g
it tem um manual de ajuda que pode ser exibido na tela
Todo comando
G
it 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
g
it. É
aond
e ficam os arquivos antes de ser marcados como uma versão
definitiva.
Em tradução livre, stagin area é
a
rea 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
G
it. É
o local em qu
e ficam os arquivos antes de ser
em
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
n
om
e
É importante salientar que quando
se
é usado o `clone`, o servidor remoto
é adicionado automaticamente, podendo ser acessado atravé
s
do
c
om
ando
`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
u
ltimo `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 é poss
i
vel 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` é poss
i
vel 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
já
aparece como preparado (staged), precisando somente que
a exclusão seja
commitada.
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:**
```{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
g
it entende que o arquivo
Caso a mudança seja feita sem esse comando
,
o
G
it 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 simple
s
mente aponta para um `commit` específico
. J
á a `tag`
anotada é guardada como obj
e
tos 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 comand
o, os arquivos modificados ficam salvos em uma
Com este comando não é necessário
fazer um `commit` para mudar de `branch`.
Ao executá-l
o, 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
u
ltimo commit (
V
oltando ao anterior):
# Apagando o
ú
ltimo commit (
v
oltando ao anterior):
git reset --hard HEAD~1
```
## Rebase
O `rebase` é usado para modificar `commits` antigos. Ele refaz a
a
rvore
de `commits`, sendo assim
,
não é uma boa ideia fazer um `push` da
alteração, pois modificar
a
a
a
rvore 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 pe
ga os commits de um ramo e "muda de base",
passando-os para novos commits do ramo atual, formando uma
a
rvore com
A id
e
ia geral é
`rebase` apa
ga 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 quand
o foi inserido.
Esse método também
e
chamado de anotação de arquivo.
de encontrar quem
e quando um err
o 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
n
o
`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}
...
...
This diff is collapsed.
Click to expand it.
cap08/cap08_er.Rmd
+
92
−
2
View file @
9c6d4bd9
## 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
R
amos
## Deletar
r
amos
```{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
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment