diff --git a/cap08/cap08_er.Rmd b/cap08/cap08_er.Rmd
index 0d396d33331c13bfc736918890b061e50d7d5487..56af10b13439b96f5e297d6955ebfdae95e674ee 100644
--- a/cap08/cap08_er.Rmd
+++ b/cap08/cap08_er.Rmd
@@ -1,102 +1,424 @@
+---
+title: "Exemplos de Rotina"
+author: "PET Estatística UFPR"
+graphics: yes
+header-includes:
+    \usepackage{multicol}
+    \usepackage{cleveref}
+output:
+  pdf_document:
+    template: ../template.tex
+    highlight: default
+    toc: true
+    toc_depth: 2
+    keep_tex: true
+    number_sections: true
+---
 
+\appendix
 
-Exemplos de Rotinas
-===================
+\chapter{Exemplos de Rotinas}
+
+Neste apêndice são descritas brevemente algumas das rotinas mais usuais
+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
+
+<!-- ------------------------------------------- -->
+\hlabel{routine1}
+\routine{Configure usuário e e-mail}
 
-## 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.
+## 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.
 
 ```
 
-## Resolver conflito de merge
-```{r, engine='bash', eval=FALSE, echo=TRUE}
-# Requisitar merge:
-git merge ramo_teste
+<!-- ------------------------------------------- -->
+\hlabel{routine2}
+\routine{Inicie um projeto Git local}
+
+```{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
 
-## 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
 ```
 
-## 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
+
+## Registra as alterações
+git commit -m "Altera delimitadores da função"
 
-git commit -a -m "Bug corrigido"
+## 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
 
 ```
 
-## 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 pelo SHA1 ID
+git diff 7204daa be1a9cc
+
+## -------------------------------------------
+## 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 cap. 06
+
 ```
 
-## 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
 
 ```
 
-## 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 resolvidos 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
 
 ```
 
-## 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}
+
+## Cria 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 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, locais e remotos
+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 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 ao repositório remoto
+git push origin master
+
+## Deleta o ramo 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
+
+```
\ No newline at end of file
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
diff --git a/template.tex b/template.tex
index fcfc62bb751128e19d7d2ef77dba4560cc173427..b058ecf10f20612a7030d722564020debb58be98 100644
--- a/template.tex
+++ b/template.tex
@@ -216,6 +216,33 @@ $else$
   \predate{}\postdate{}
 $endif$
 
+%-------------------------------------------
+% Para o apêndice de exemplo de rotinas
+\usepackage{tabularx}
+\usepackage{float}
+\newcommand{\routine}[1]{
+  % \rule{1\textwidth}{.4pt} \\ [0.1cm]
+  % \hspace*{1cm}\texttt{#1} \\ [0cm]
+  % \rule{1\textwidth}{.4pt}
+  %% Não funcionou, pois as linhas não ficavam vinculadas ao texto,
+  %% podendo ficar a linha em uma pagina e o texto na outra.
+  \begin{table}[H]
+    \centering
+    \begin{tabularx}{1\textwidth}{l}
+      \hline
+      \\ [-0.05cm]
+      \large{\texttt{#1}} \\ 
+      \\ [-0.05cm]
+      \hline
+    \end{tabularx}
+  \end{table}
+
+}
+% para referenciação correta dos links
+% http://tex.stackexchange.com/questions/193380/hyperref-pageref-links-point-to-first-page
+\newcommand{\hlabel}{\phantomsection\label}
+%-------------------------------------------
+
 $for(header-includes)$
 $header-includes$
 $endfor$