diff --git a/cap08/cap08_er.Rmd b/cap08/cap08_er.Rmd
index d546e7099bd1b4667dd0b943a7b98b8d270b170f..4858609a273f118a15b17d37f96c68f467676c4e 100644
--- a/cap08/cap08_er.Rmd
+++ b/cap08/cap08_er.Rmd
@@ -1,7 +1,10 @@
----
+    ---
 title: "Exemplos de Rotina"
 author: "PET Estatística UFPR"
 graphics: yes
+header-includes:
+    \usepackage{multicol}
+    \usepackage{cleveref}
 output:
   pdf_document:
     template: ../template.tex
@@ -14,111 +17,407 @@ output:
 
 \appendix
 
-\chapter{Exemplos de Rotinas Git}
+\chapter{Exemplos de Rotinas}
 
 Neste apêndice são descritas brevemente algumas das rotinas mais usuais
-em projetos sob sistema de versionamento Git. A maioria dos exemplos
-foram apresentados no decorrer da apostila e estão resumidos neste
-coletânea.
+em projetos Git. A maioria dos exemplos estão detalhados na apostila e
+foram resumidos nesta coletânea. Abaixo temos a lista de rotinas aqui
+presentes:
+
+\begin{multicols}{2}
+\footnotesize
+  \begin{description}
+    \item[Configure usuário e e-mail,] pág. \pageref{routine1}
+    \item[Inicie um projeto git local,] pág. \pageref{routine2}
+    \item[Trabalhe com ramos,] pág. \pageref{routine3}
+    \item[Visualize diferenças,] pág. \pageref{routine4}
+    \item[Resolva conflitos de \textit{merge},] pág. \pageref{routine5}
+    \item[Visualize seu projeto,] pág. \pageref{routine6}
+    \item[Volte versões anteriores,] pág. \pageref{routine7}
+    \item[Reescreva \textit{commits},] pág. \pageref{routine8}
+    \item[Adicione chaves públicas,] pág. \pageref{routine9}
+    \item[Trabalhe remotamente,] pág. \pageref{routine10}
+    \item[Manipule ramos remotos,] pág. \pageref{routine11}
+    \item[Adicione local remoto,] pág. \pageref{routine12}
+  \end{description}
+\end{multicols}
 
 \pagebreak
 
-\routine{Clonar, Modificar e Subir}
+<!-- ------------------------------------------- -->
+\hlabel{routine1}
+\routine{Configure usuário e e-mail}
 
 ```{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.
+## Configurando localmente
+##   - válido para o repositório atual
+git config user.name "Name Lastname"
+git config user.email "namelastname@servidor"
 
-# Commitar o projeto:
-git commit -a -m "Sua Mensagem de Commit"
-# Enviar projeto ao servidor (branch master, servidor origin):
-git push origin master
+## Configurando globalmente
+##   - válido para todos os repositórios do computador
+git config --global user.name "Name Lastname"
+git config --global user.email "namelastname@servidor"
+
+## Obs.: As configurações locais se sobrepõem as
+## globais, quando as duas forem avaliadas.
 
 ```
 
-\routine{Resolver conflito de merge}
+<!-- ------------------------------------------- -->
+\hlabel{routine2}
+\routine{Inicie um projeto Git local}
 
-```{r, engine='bash', eval=FALSE, echo=TRUE}
-# Requisitar merge:
-git merge ramo_teste
+```{r, engine='bash', echo=TRUE, eval=FALSE}
 
-# Resolver conflitos manualmente.
+## Em um diretório que deseja-se versionar
 
-# Finalizar merge com o commit:
-git commit -a -m "Merge do ramo_teste"
+## Inicia o versionamento Git
+git init
 
-```
+## Verifica o estado do repositório
+git status
 
-\routine{Incorporar o remoto ao local}
+## Adicione os arquivos para receber o commit 
+git add file1.txt file2.R file3.txt file4.Rmd
+
+## Registre a versão do repositório com uma mensagem
+## informativa
+git commit -m "Inicia repositório"
+
+## Verifica o histórico de versões
+git log
 
-```{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
 ```
 
-\routine{Resolver um bug}
+<!-- ------------------------------------------- -->
+\hlabel{routine3}
+\routine{Trabalhe com ramos}
 
-```{r, engine='bash', eval=FALSE, echo=TRUE}
+```{r, engine='bash', echo=TRUE, eval=FALSE}
 
+## Verifica os ramos existentes
+git branch
+
+## Cria um ramo, para trabalho específico como:
+##   - Corrigir bugs
+##   - Desenvolver features
+##   - Tarefas em geral
 git branch bugfix
+
+## Altera versionamento para o ramo criado
 git checkout bugfix
 
-# Modifica o código de acordo com o necessário.
+## Adiciona as alterações que corrigem o bug
+git add app.R
 
-git commit -a -m "Bug corrigido"
+## Registra as alterações
+git commit -m "Altera delimitadores da função"
+
+## Retorna para o ramo principal
 git checkout master
+
+## Incorpora ao ramo principal as alterações
+## realizados no ramo bugfix
 git merge bugfix
+
+## Deleta o ramo responsável pela correção do bug
 git branch -d bugfix
 
 ```
 
-\routine{Deletar ramos}
+<!-- ------------------------------------------- -->
+\hlabel{routine4}
+\routine{Visualize diferenças}
 
 ```{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
+
+## -------------------------------------------
+## Diferenças não commitadas
+
+## Lista as diferenças entre o último commit e o
+## estado do repositório no working directory
+git diff
+
+## Diferença para um único arquivo
+git diff file.Rmd
+
+## -------------------------------------------
+## Diferenças entre versões commitadas
+
+## Verifica os registros com referência
+git reflog
+
+## Lista as diferenças entre o último e o
+## antepenúltimo registro
+git diff HEAD~0 HEAD~2 ## ou
+
+## -------------------------------------------
+## Diferenças entre ramos
+
+## Lista diferenças entre os ramos master e
+## feature1
+git diff master feature1
+
+## Obs.: Programas externos podem ser utilizados para
+## visualizar diferenças use difftool no lugar de
+## diff, ver no cap. 06
+
 ```
 
-\routine{Criar ramo de um commit passado}
+<!-- ------------------------------------------- -->
+\hlabel{routine5}
+\routine{Resolva conflitos de merge}
 
-```{r, engine='bash', echo=TRUE, eval=FALSE}
-# Verificar código commit:
+```{r, engine='bash', eval=FALSE, echo=TRUE}
+
+## Incorpora modificações realizadas no ramo feature
+git merge feature
+
+## Edite e salve o(s) arquivo(s) em conflito, as
+## porções em conflito são destacadas por <<< === >>>
+
+## Finaliza merge com o commit:
+git commit -a -m "Merge do ramo feature"
+
+```
+
+<!-- ------------------------------------------- -->
+\hlabel{routine6}
+\routine{Visualize seu projeto}
+
+```{r, engine='bash', eval=FALSE, echo=TRUE}
+
+## Histórico de registros
 git log
-# Criando branch com commit do código
-# ec3650c8661d75b486a236e3d416ab58db1d596a:
-git branch novo_branch ec3650c8661d75b486a236e3d416ab58db1d596a
 
-# Mudando para novo_branch
-git checkout novo_branch
+## Histórico de registros em uma linha com trajetória
+## dos ramos 
+git log --graph --oneline 
+
+## Histórico de registro com referência
+git reflog
+
+## Histórico de registro via interface gráfica padrão
+gitk
 
 ```
 
-\routine{Voltar o projeto para um commit}
+<!-- ------------------------------------------- -->
+\hlabel{routine7}
+\routine{Volte versões anteriores}
 
 ```{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
+## Verifica o histórico de versões do repositório
+##   - Guarde o SHA1 ID do registro desejado: ec3650c8
+git log --oneline
+
+## -------------------------------------------
+## Descartar todas as alterações até um commit
+git reset --hard ec3650c8
+
+## Obs.: Reescreve a história do repositório, não
+## é recomendável reescrever a linha do tempo quando
+## se está em um projeto colaborativo remoto.
+
+## -------------------------------------------
+## Reverte o estado atual para um registro específico
+git revert ec3650c8
+git commit -am "Retorna projeto para versão funcional"
+
+## Obs.: Faz um merge da versão atual com a versão do
+## SHA1 ID informado. POdem haver conflitos que devem
+## ser resolvido para concluir a reversão.
+
+## -------------------------------------------
+## Cria um ramo provisório a partir de um SHA1 ID
+git checkout ec3650c8
+
+## Visualiza os ramos existentes
+git branch
+
+## Cria um ramo denifitivo com o estado no SHA1 ID
+git checkout -b ramo_teste
+
+## Obs.: O ramo provisório é removido assim que se
+## fizer um checkout para qualquer outro ramo
 
 ```
 
-\routine{Reescrever mensagem de commit}
+<!-- ------------------------------------------- -->
+\hlabel{routine8}
+\routine{Reescreva commits}
 
 ```{r, engine='bash', echo=TRUE, eval=FALSE}
+
+## Verifica o histórico de versões do repositório
 git log --oneline
-git commit --amend "Correção de Commit"
-git push -f origin master
+
+## -------------------------------------------
+## Reescreve a última mensagem de commit 
+git commit --amend -m "Correção de Commit"
+
+## Obs1.: Arquivos na staging area também são
+## incorporados ao último commit
+## Obs2.: Reescreve a história do repositório, não
+## é recomendável reescrever a linha do tempo quando
+## se está em um projeto colaborativo remoto.
+
+```
+
+<!-- ------------------------------------------- -->
+\hlabel{routine9}
+\routine{Adicione chaves públicas}
+
+```{r, engine='bash', echo=TRUE, eval=FALSE}
+
+## Crie uma chave pública.
+ssh-keygen -t rsa -C "namelastname@servidor"
+
+## Exibe as chaves públicas.
+cat ~/.ssh/id_rsa.pub
+
+## Adicione o conteúdo a um servidor remoto, como:
+##  - git@github.com
+##  - git@gitlab.com
+##  - git@gitlab.c3sl.ufpr.br
+
+## Verifica conexão com o servidor
+ssh -T endereço ## endereço = git@github.com, ...
+
+## Obs.: Todos os comandos ssh são provinientes do
+## pacote de função ssh para shell, portanto para
+## utilizar instale este pacote.
+
+```
+
+<!-- ------------------------------------------- -->
+\hlabel{routine10}
+\routine{Trabalhe remotamente}
+
+```{r, engine='bash', echo=TRUE, eval=FALSE}
+
+## Clona um projeto remoto:
+## e.g. git@github.com:pet-estatistica/apostila-git.git
+git clone endereço:namespace/project.git
+
+## Realiza modificações e/ou inclusões de em um ou
+## vários arquivos
+
+## Adiciona todas as alterações para commit
+git add .
+
+## Registra suas alterações
+git commit -a -m "Modifica compilação do projeto"
+
+## Envia as alterações para o repositório remoto (origin)
+git push origin
+
+## Traz estado do repositório remoto
+git pull origin
+
+```
+
+<!-- ------------------------------------------- -->
+\hlabel{routine11}
+\routine{Manipule ramos remotos}
+
+```{r, engine='bash', echo=TRUE, eval=FALSE}
+
+## -------------------------------------------
+## Realizando contribuições em um ramo remoto
+
+## Lista todos os ramos
+git branch -a
+
+## Altera versionamento para o ramo issue01
+git checkout issue01
+
+## Traz estado do ramo remoto issue01
+git pull origin issue01
+
+## Realiza modificações e/ou inclusões de em um ou
+## vários arquivos
+
+## Adiciona todas as alterações para commit
+git add .
+
+## Registra suas alterações
+git commit -a -m "Modifica laço iterativo condicional"
+
+## Envia as alterações no ramo para a versão remota
+git push origin issue01
+
+## -------------------------------------------
+## Realizando contribuições em um ramo remoto e
+## enviando o ramo principal mesclado
+
+## Traz estado do ramo remoto issue01
+git pull origin bugfix
+
+## Altera versionamento para o ramo issue01
+git checkout bugfix
+
+## Realiza modificações e/ou inclusões de em um ou
+## vários arquivos
+
+## Adiciona todas as alterações para commit
+git add .
+
+## Registra suas alterações
+git commit -a -m "Altera classe do objeto retornado"
+
+## Retorna ao ramo principal
+git checkout master
+
+## Incorpora modificações realizadas no ramo bugfix 
+git merge bugfix
+
+## Envia as alterações o repositório remoto
+git push origin master
+
+## Deleta o ramo local e remoto bugfix
+git branch -d bugfix ## Local
+git push :bugfix     ## Remoto
+
+```
+
+<!-- \routine{Incorporar o remoto ao local} -->
+<!-- ------------------------------------------- -->
+\hlabel{routine12}
+\routine{Adicione local remoto} 
+
+```{r, engine='bash', eval=FALSE, echo=TRUE}
+
+## Lista os servidores remotos, com endereço
+git remote -v
+
+## -------------------------------------------
+## Adicionando local para trazer contribuições
+
+## Adiciona local remoto com nome gitlab:
+git remote add gitlab git@gitlab.com:user/project.git
+
+## Adiciona local remoto com nome github:
+git remote add github git@github.com:user/project.git
+
+## Atualiza arquivos locais, baseado no local remoto:
+git pull gitlab ## gitlab.com:namespace/project.git
+git pull github ## github.com:namespace/project.git
+
+## -------------------------------------------
+## Adicionando local para enviar contribuições
+
+## Lista os locais de origem
+git remote show origin
+
+## Adiciona novo local de origem:
+## e.g. git@github.com:pet-estatistica/apostila-git.git
+git remote set-url origin --push --add endereço_remoto
+
+## Envia as contribuições para os locais remotos
+git push origin
+
 ```
diff --git a/cap08/cap08_er.pdf b/cap08/cap08_er.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1d6cf525d9acae514357a18174ed04fe4eaffd52
Binary files /dev/null and b/cap08/cap08_er.pdf differ