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
...
@@ -6,9 +6,9 @@ Dicionário de Termos
## Config
## 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
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
Todas as configurações definidas como globais ficam armazenadas em um
arquivo chamado `.gitconfig`, que fica localizado no diretório padrão
arquivo chamado `.gitconfig`, que fica localizado no diretório padrão
do usuário.
do usuário.
...
@@ -24,7 +24,7 @@ git config --global user.email ezio.auditore@exemple.com
...
@@ -24,7 +24,7 @@ git config --global user.email ezio.auditore@exemple.com
## SSH Key
## SSH Key
É uma chave de autenticação baseada em criptografia de chave pública
É 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.
de arquivos entre o cliente e o servidor mais segura.
Para que o git local consiga se conectar a um servidor git remoto, é
Para que o git local consiga se conectar a um servidor git remoto, é
...
@@ -41,7 +41,7 @@ ssh-keygen
...
@@ -41,7 +41,7 @@ ssh-keygen
## Help
## 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`.
com o comando `--help`.
**Exemplo:**
**Exemplo:**
...
@@ -52,12 +52,15 @@ git status --help
...
@@ -52,12 +52,15 @@ git status --help
## Repositório
## 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:**
**Exemplo:**
...
@@ -68,19 +71,17 @@ git init
...
@@ -68,19 +71,17 @@ git init
## Stagin Area
## Stagin Area
A stagin area é um espaço temporário na pasta gerenciada pelo
g
it. É
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.
o local em qu
e ficam os arquivos antes de ser
em
marcados como uma versão
Em tradução livre, stagin area é
a
rea de estágio,
definitiva.
Em tradução livre, stagin area é
á
rea de estágio,
podemos
podemos
assim imaginar que o arquivo está estagiando antes de
assim imaginar que o arquivo está estagiando antes de
ser promovido a um
ser promovido a um
arquivo definitivo.
arquivo definitivo.
## Remote
## Remote
O `remote` mostra o servidor remoto aonde o
O `remote` mostra o servidor remoto onde os arquivos Git estão hospedados.
seus arquivos git estão hospedados. O remote padrão
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
geralmente é criado com o nome de `origin`, mas
remotos juntamente ao `origin`.
é possível adiciona-lo utilizando outros nomes e
até mesmo adicionar outros servidores remotos juntamente ao `origin`.
**Exemplo:**
**Exemplo:**
```{r, engine='bash', eval=FALSE}
```{r, engine='bash', eval=FALSE}
...
@@ -96,8 +97,8 @@ disponível em um servidor remoto para o servidor local.
...
@@ -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
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.
histórico de controle de versões sem a necessidade de uso da internet.
É importante salientar que quando é usado o `clone`, o servidor remoto
É importante salientar que quando
se
é usado o `clone`, o servidor remoto
é adicionado automaticamente, podendo ser acessado atravé
z
do
n
om
e
é adicionado automaticamente, podendo ser acessado atravé
s
do
c
om
ando
`origin`.
`origin`.
**Exemplo:**
**Exemplo:**
...
@@ -111,7 +112,7 @@ git remote
...
@@ -111,7 +112,7 @@ git remote
## Status
## Status
O status exibe a diferença entre o estado atual dos arquivos e o estado
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).
consolidado (committed), modificado (modified) e preparado (staged).
**Exemplo:**
**Exemplo:**
...
@@ -133,10 +134,9 @@ git add *
...
@@ -133,10 +134,9 @@ git add *
## Commit
## Commit
O `commit` marca os arquivos da stagin area como uma
O `commit` marca os arquivos da stagin area como uma versão definitiva,
versão definitiva, para que posteriormente, caso algum erro ocorra,
para que posteriormente, caso algum erro ocorra, possamos voltar nos
possamos voltar para commits anteriores onde o código está
commits anteriores onde o código está em pleno funcionamento.
em pleno funcionamento.
**Exemplo:**
**Exemplo:**
```{r, engine="bash", echo=TRUE, eval=FALSE}
```{r, engine="bash", echo=TRUE, eval=FALSE}
...
@@ -145,11 +145,18 @@ git commit -m "Meu primeiro commit"
...
@@ -145,11 +145,18 @@ git commit -m "Meu primeiro commit"
## Branch
## Branch
<<<<<<< HEAD
Os `branchs` são como uma cópia dos arquivos do ultimo commit
Os `branchs` são como uma cópia dos arquivos do ultimo commit
para um ambiente de desenvolvimento paralelo, o que
para um ambiente de desenvolvimento paralelo, o que
permite que as modificações em um `branch` não afete os arquivos em outro.
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
Os branchs também são chamados de ramos de desenvolvimento. Veja com mais
detalhes no capitulos dos worksflows.
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:**
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
```{r, engine='bash', echo=TRUE, eval=FALSE}
...
@@ -160,7 +167,7 @@ git branch novoBranch
...
@@ -160,7 +167,7 @@ git branch novoBranch
## Checkout
## Checkout
O `checkout` serve para transitar entre branchs e commits.
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:**
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
```{r, engine='bash', echo=TRUE, eval=FALSE}
...
@@ -170,10 +177,10 @@ git checkout teste
...
@@ -170,10 +177,10 @@ git checkout teste
## Merge
## 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
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
permitindo que o trabalho seja centralizado novamente. A fusão é feita
de forma automática, mas conflitos podem ocorrer, como por exemplo,
de forma automática, mas conflitos podem ocorrer, como por exemplo,
quando duas ou mais pessoas modificam a mesma parte do código.
quando duas ou mais pessoas modificam a mesma parte do código.
...
@@ -188,14 +195,20 @@ git merge novoBranch
...
@@ -188,14 +195,20 @@ git merge novoBranch
## Rm
## Rm
<<<<<<< HEAD
O `git rm`, na sua forma mais comum, serve para remover um arquivo de
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
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
rígido. Também é possível que o arquivo deixe de ser gerenciado
e permaneça no disco.
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
Uma das vantagens é que, quando o arquivo é removido pelo `git rm`,
já
já
aparece como preparado (staged), precisando somente que
aparece como preparado (staged), precisando somente que
a exclusão seja
a exclusão seja
commitada.
commitada.
**Exemplo:**
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
```{r, engine='bash', echo=TRUE, eval=FALSE}
...
@@ -208,10 +221,9 @@ git rm --cached teste.tex
...
@@ -208,10 +221,9 @@ git rm --cached teste.tex
## Mv
## Mv
O `git mv` move ou renomeia arquivos, informando ao git que eles foram
O `git mv` move ou renomeia arquivos informando ao Git.
movidos ou renomeados.
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,
foi deletado e que um novo arquivo foi criado, deixando de fora,
por exemplo, a ligação existente entre o arquivo e seus commits.
por exemplo, a ligação existente entre o arquivo e seus commits.
...
@@ -234,10 +246,8 @@ git push origin master
...
@@ -234,10 +246,8 @@ git push origin master
## Fetch
## Fetch
O `fetch` busca no repositório remoto os dados e arquivos que
O `fetch` atualiza o repositório local com as alterações do remoto, porém
não estão no repositório local. É impostante frisar que o `fetch` não
não realiza o merge dos arquivos, deixando isso para ser feito manualmente.
faz o merge dos arquivos, deixando isso para ser feito manualmente
pelo usuário.
**Exemplo:**
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
```{r, engine='bash', echo=TRUE, eval=FALSE}
...
@@ -262,10 +272,9 @@ git pull origin
...
@@ -262,10 +272,9 @@ git pull origin
`HEAD` é um arquivo que contém um apontador para o `branch` atual.
`HEAD` é um arquivo que contém um apontador para o `branch` atual.
Quando o `checkout` é executado para a mudança do `branch`,
Quando o `checkout` é executado para a mudança do `branch`,
esse arquivo é automaticamente modificado apontando agora para o
esse arquivo é automaticamente modificado, apontando agora para o
novo local, permitindo que, quando o computador for desligado e depois
novo local, e assim permitindo que, quando o computador for desligado e
ligado novamente, o git ainda esteja trabalhando com o mesmo `branch`
depois de reniciado o Git ainda esteja trabalhando com o mesmo `branch`.
de antes.
## Tag
## Tag
...
@@ -274,10 +283,10 @@ Geralmente são usadas para marcar versões definitivas, como a v1.0, v2.0
...
@@ -274,10 +283,10 @@ Geralmente são usadas para marcar versões definitivas, como a v1.0, v2.0
e assim por diante.
e assim por diante.
Elas são divididas em dois tipos: leve e anotada.
Elas são divididas em dois tipos: leve e anotada.
A `tag` leve simplemente aponta para um `commit` específico
, j
á a `tag`
A `tag` leve simple
s
mente aponta para um `commit` específico
. J
á a `tag`
anotada é guardada como objtos inteiros, possuindo algumas informações
anotada é guardada como obj
e
tos inteiros, possuindo algumas informações
,
relacionadas a ela,
como o nome da pessoa que criou, a data, uma mensagem
como o nome da pessoa que criou, a data, uma mensagem
semelhante a de `commit`,
semelhante a de `commit`,
entre outras.
entre outras.
**Exemplo:**
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
```{r, engine='bash', echo=TRUE, eval=FALSE}
...
@@ -290,8 +299,8 @@ git tag -a v1.0 -m "Minha primeira tag anotada."
...
@@ -290,8 +299,8 @@ git tag -a v1.0 -m "Minha primeira tag anotada."
## Stash
## Stash
É uma maneira de não precisar
fazer um `commit` para mudar de `branch`.
Com este comando não é necessário
fazer um `commit` para mudar de `branch`.
Executando este comand
o, os arquivos modificados ficam salvos em uma
Ao executá-l
o, os arquivos modificados ficam salvos em uma
pilha de modificações inacabadas, sendo possível transitar entre
pilha de modificações inacabadas, sendo possível transitar entre
`branchs` e voltar ao trabalho inacabado quando necessário.
`branchs` e voltar ao trabalho inacabado quando necessário.
...
@@ -307,25 +316,25 @@ git stash list
...
@@ -307,25 +316,25 @@ git stash list
Enquanto o `git checkout` somente transita entre os `commits`,
Enquanto o `git checkout` somente transita entre os `commits`,
o `reset` pode também alterar o histórico, fazendo `commits` serem
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).
ao estado de não commitado (--soft).
**Exemplo:**
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
```{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
git reset --hard HEAD~1
```
```
## Rebase
## Rebase
O `rebase` é usado para modificar `commits` antigos. Ele refaz a
a
rvore
O `rebase` é usado para modificar `commits` antigos. Ele refaz a
á
rvore
de `commits`, sendo assim
,
não é uma boa ideia fazer um `push` da
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
alteração, pois modificar
á
a
á
rvore do servidor afetando todos os
desenvolvedores.
desenvolvedores.
A id
é
ia geral é
que ele pe
ga os commits de um ramo e "muda de base",
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
a
rvore com
passando-os para novos commits do ramo atual, formando uma
á
rvore com
fluxo de trabalho linear.
fluxo de trabalho linear.
**Exemplo:**
**Exemplo:**
...
@@ -337,8 +346,8 @@ git rebase teste
...
@@ -337,8 +346,8 @@ git rebase teste
## Blame
## Blame
Pesquisa qual `commit` modificou determinado arquivo, com o objetivo
Pesquisa qual `commit` modificou determinado arquivo, com o objetivo
de encontrar quem
inseriu um erro e quand
o foi inserido.
de encontrar quem
e quando um err
o foi inserido.
Esse método também
e
chamado de anotação de arquivo.
Esse método também
é
chamado de anotação de arquivo.
**Exemplo:**
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
```{r, engine='bash', echo=TRUE, eval=FALSE}
...
@@ -349,7 +358,7 @@ de encontrar quem inseriu um erro e quando foi inserido.
...
@@ -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
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
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:**
**Exemplo:**
```{r, engine='bash', echo=TRUE, eval=FALSE}
```{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}
```{r, engine='bash', echo=TRUE, eval=FALSE}
# Clonar o projeto desta apostila:
# Clonar o projeto desta apostila:
git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git
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}
```{r, engine='bash', echo=TRUE, eval=FALSE}
# Listar ramos:
git branch
# Deletar ramo local:
git branch -d "nome_ramo"
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