diff --git a/cap04.Rmd b/cap04.Rmd
index 4e21aa12d4be82854c6684056a4e8b22db91764d..8961a2d63a67f25092ac7554d10041859049e7af 100644
--- a/cap04.Rmd
+++ b/cap04.Rmd
@@ -1,7 +1,7 @@
 ---
 title: "4. Projetos remotos"
 author: "PET Estatística"
-date: "29/10/2015"
+date: "29/11/2015"
 output:
     html_document:
         highlight: pygments
@@ -9,28 +9,122 @@ output:
         theme: flatly
         keep_md: true
 ---
+
+
+
+## Introdução
+
+Para colaborar em projetos coletivos no Git é preciso ter um repositório remoto. Este repositório conterá todo o histórico das versões dos arquivos editados. A seguir serão abordados como adicionar, remover e gerenciar repositórios remotos.
+
+Primeiramente será apresentado o comando `git remote`, este é usado para verificar quais repositórios estão configurados.
+
+**Exemplo:** para retornar a lista de repositórios:
+
+```{r, engine="bash", echo=TRUE}
+git remote
+```
+
+No comando acima é possível visualizar o remoto padrão **origin** (URL SSH para onde será possível enviar os seus arquivos).
+
+**Exemplo:** para retornar o nome dos repositórios com a URL onde foram armazanados:
+
+```{r, engine="bash", echo=TRUE}
+git remote -v
+```
+
+
+### Adicionando repositórios remotos
+
+O comando `git remote add` adiciona um repositório remoto. No exemplo a seguir será adicionado um repositório chamado **MeuRepo** ao qual será vinculado a URL  `git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git`. Usaremos como exemplo o projeto Git **Apostila-git**.
+
+**Exemplo:**
+```{r, engine="bash", echo=TRUE}
+git remote add MeuRepo git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git
+# Quando executamos novamente o comando para obter a lista de repositórios:
+git remote -v
+```
+
+Pare acessar localmente o branch master do projeto **Apostila-git** será usado `MeuRepo/master`.
+
+### Obtendo informações de um Remoto
+
+Você pode acessar as informações de qualquer repositório remoto com o comando `git remote show`, que retornará a URL e os `branches`. 
+
+**Exemplo:**
+```{r, engine="bash", echo=TRUE}
+git remote show origin
+```
+
+### Renomeado Remotos
+
+O comando `git remote rename` pode modificar o nome de um repositório remoto. A seguir o repositório `MeuRepo`será renomeado para `RenameRepo`. 
+
+**Exemplo:**
+```{r, engine="sh", eval=FALSE}
+git remote rename MeuRepo RenameRepo
+```
+
+### Removendo Remotos
+
+Para remover remotos é utilizado o comando `git remote rm`, agora será removido o repositório renomeado anteriormente `RenameRepo`.
+
+**Exemplo:**
+```{r, engine="sh", eval=FALSE}
+ git remote rm RenameRepo
+```
+
+**Protocolos Git**
+
+Há quatro tipos diferentes de protocolos Git (Local, Git, HTTP e SSH).
+
+Nesta apostila será abordado apenas o Secure Shell (SSH). Por ser fácil de fazer a configuração do acesso deste protocolo aos servidores, este é o mais usual.
+
+## Criando um Repositório Git
     
-## 4.1. Criando um Repositório Git
-    
-Primeiramente é necessário ter acesso a um servidor Linux com chave SSH, no qual o usuário poderá ter seus repositórios. Será utilizado um diretório no qual será armazenado o repositório, que será definido como remoto.
-No exemplo a seguir é preciso criar um repositório remoto chamado `TesteRep` e o armazenar em um diretório `~/git`:
+Primeiramente é necessário ter acesso a um servidor Linux com chave SSH, no qual você poderá ter seus repositórios. É definido um diretório no qual será armazenado o repositório remoto.
+No próximo exemplo é preciso criar um repositório remoto chamado `MeuRepo` e o armazenar em um diretório `~/git`:
     
 **Exemplo:**
     ```{r, engine="sh", eval=FALSE}
 # Para criar um diretório git na sua home:
 mkdir ~/git
 # Para criar um repositório git:
-mkdir TesteRep.git
-# Para definir TesteRep como um repositório remoto:
+mkdir MeuRepo.git
+# Para definir MeuRepo como um repositório remoto:
 git --bare init
 ```
 
-As configurações do servidor estão completas. A partir de agora serão dados os primeiros comandos para iniciar o repositório criado.
+As configurações do servidor estão completas. A partir você pode realizar os primeiros comandos para iniciar o repositório criado.
+
+
+## Git no servidor
+
+Primeiramente, para configurar o Git no Servidor e configurar os protocolos, clonaremos o repositório existente em um repositório limpo. 
+**Observação:** você poderá colocar um repositório no Servidor se este não contém um diretório de trabalho. 
+
+**Exemplo:**
+```{r, engine="sh", eval=FALSE}
+ git clone --bare MeuRepo MeuRepo.git
+```
+
+Acima foi criado um repositório limpo `MeuRepo.git`, no qual está armazenada a cópia de todos os arquivos do diretorio Git.
+
+Após este primeiro passo o repositório limpo será colocado no Servidor e configurado os protolocos. 
+No exemplo abaixo, supondo que você tem configurado um servidor `git.servidor.com`, e um diretório `/dir/git`no qual você quer armazenar seus repositórios. Ao copiar o seu repositório limpo, você pode configurar seu novo repositório. 
+
+**Exemplo:**
+    ```{r, engine="sh", eval=FALSE}
+scp -r MeuRepo.git usuario@git.example.com:/dir/git
+```
 
+Agora o repositório pode ser clonado por outros usuários, que podem ter acesso de escrita e de envio de arquivos `push` no diretório. 
 
+    ```{r, engine="sh", eval=FALSE}
+git clone usuario@git.example.com:/dir/git/MeuRepo.git
+```
 
 
-## 4.2. Configuração de Conexão SSH com Servidor
+## Configuração de Conexão SSH com Servidor
 
 O Git possibilita ao usuário realizar uma chave SSH que fará uma conexão segura da sua máquina com o servidor. Para isso começamos com o seguinte comando no terminal:
     
@@ -42,7 +136,7 @@ ssh-keygen -t rsa -C "usuario@email.com"
 
 A partir deste comando, será possível alterar o diretório onde será salva a chave SSH. O usuário tem a opção de permanecer com o diretório padrão, para isso basta apertar Enter.
 A partir disso, são criados dois arquivos no diretório, o `id_rsa` e o `id_rsa.pub`.
-Depois de escolher o diretório onde serão salvos os arquivos, terá a opção de digitar uma senha ou deixar o espaço em branco.
+Após escolher o diretório onde serão salvos os arquivos, você terá a opção de digitar uma senha ou deixar o espaço em branco.
 
 Para visualizar a chave basta digitar o seguinte comando:
     
@@ -60,26 +154,59 @@ Para checar a configuração da sua máquina com o sevidor basta realizar o segu
     ```{r, engine="sh", eval=FALSE}
 ssh -T git@gitlab.c3sl.ufpr.br
 ```
+ 
+ 
+**Configurando o servidor** 
+ 
+Agora será abordado como configurar o acesso SSH do ponto de vista do servidor.
+Você precisa criar um usuário Git e um diretório `.ssh` para este usuário.
+
+**Exemplo:** criar usuário e diretório.
+    ```{r, engine="sh", eval=FALSE}
+sudo adduser git
+su git
+cd
+mkdir .ssh
+```
+
+Agora, você terá um arquivo chamado `authorized_keys` onde será adicionado uma chave pública de algum desenvolvedor. Após obter chaves de alguns usuários, você pode salvá-las no arquivo `authorized_keys`, como no exemplo a seguir.
+
+**Exemplo:**
+```{r, engine="sh", eval=FALSE}
+cat /tmp/id_rsa1.pub >> ~/.ssh/authorized_keys # chave do primeiro usuário 
+cat /tmp/id_rsa2.pub >> ~/.ssh/authorized_keys # chave do segundo usuário
+...
+```
 
+Depois de armazenar as chaves dos usuários, basta criar um repositório limpo (sem um diretório de trabalho) para eles. Como visto anteriormente:
+
+**Exemplo:**
+```{r, engine="sh", eval=FALSE}
+cd/dir/git
+mkdir NovoProjeto.git
+cd NovoProjeto.git
+git –bare init
+```
 
+Agora os usuários, cujas chaves foram salvas no arquivo `authorized_keys` podem compartilhar arquivos no repositório com os comando `git init`, `git add`, `git commit`, `git remote add` e `git push origin master`.
 
 
-## 4.3. Comandos clone, push, pull e fetch
+## Comandos clone, push, pull e fetch
 
 ### Git clone
-Este comando é usado para clonar um repositório do servidor remoto para um servidor local, caso o usuário queira copiar um repositório que já existe para realizar colaborações em um projeto que queira participar. 
-O usuário terá acesso a todos os arquivos e poderá verificar as diferentes versões destes.
-No exemplo abaixo temos uma bibliotaca Git, chamada "TesteClone", que será clonado da seguinte forma:
+
+Este comando é usado para clonar um repositório do servidor remoto para um servidor local, caso você queira copiar um repositório que já existe para realizar colaborações em um projeto que queira participar. 
+Você terá acesso a todos os arquivos e poderá verificar as diferentes versões destes.
+No exemplo abaixo temos uma bibliotaca Git, chamada **TesteClone**, que será clonado da seguinte forma:
     
 **Exemplo:**
     ```{r, engine="sh", eval=FALSE}
 git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git
 ```
 
+Desta forma você terá um diretório `TesteClone` em seu computador, onde estarão todos os arquivos do projeto nele.
 
-Desta forma terá um diretório `TesteClone` em seu computador, onde estarão todos os arquivos do projeto nele.
-
-O usuário também terá a opção de clonar o repositório `TesteClone` em um diretório diferente do padrão Git, que no próximo exemplo denominaremos de `DirTeste`:
+Você também terá a opção de clonar o repositório `TesteClone` em um diretório diferente do padrão Git, que no próximo exemplo denominaremos de `DirTeste`:
     
 **Exemplo:**
     ```{r, engine="sh", eval=FALSE}
@@ -120,7 +247,7 @@ git fetch origin master
 Para verificar as modificações realizadas entre versões de um arquivo basta utilizar o comando `git diff`:
     
 **Exemplo:**
-    ```{r, engine="sh", eval=FALSE}
+```{r, engine="sh", eval=FALSE}
 git diff master origin/master
 ```
 
diff --git a/cap04.md b/cap04.md
index b31d374aea21e4225db3a07b1d15c9949dd0a5c4..ffec6bbf3b1fff90a93a431044d25623b375eaba 100644
--- a/cap04.md
+++ b/cap04.md
@@ -1,11 +1,153 @@
 # 4. Projetos remotos
 PET Estatística  
-29/10/2015  
-    
-## 4.1. Criando um Repositório Git
+29/11/2015  
+
+
+
+## Introdução
+
+Para colaborar em projetos coletivos no Git é preciso ter um repositório remoto. Este repositório conterá todo o histórico das versões dos arquivos editados. A seguir serão abordados como adicionar, remover e gerenciar repositórios remotos.
+
+Primeiramente será apresentado o comando `git remote`, este é usado para verificar quais repositórios estão configurados.
+
+**Exemplo:** para retornar a lista de repositórios:
+
+
+```bash
+git remote
+```
+
+```
+## MeuRepo
+## RenameRepo
+## origin
+```
+
+No comando acima é possível visualizar o remoto padrão **origin** (URL SSH para onde será possível enviar os seus arquivos).
+
+**Exemplo:** para retornar o nome dos repositórios com a URL onde foram armazanados:
+
+
+```bash
+git remote -v
+```
+
+```
+## MeuRepo	git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git (fetch)
+## MeuRepo	git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git (push)
+## RenameRepo	git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git (fetch)
+## RenameRepo	git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git (push)
+## origin	git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git (fetch)
+## origin	git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git (push)
+```
+
+
+### Adicionando repositórios remotos
+
+O comando `git remote add` adiciona um repositório remoto. No exemplo a seguir será adicionado um repositório chamado **MeuRepo** ao qual será vinculado a URL  `git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git`. Usaremos como exemplo o projeto Git **Apostila-git**.
+
+**Exemplo:**
+
+```bash
+git remote add MeuRepo git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git
+# Quando executamos novamente o comando para obter a lista de repositórios:
+git remote -v
+```
+
+```
+## fatal: remote MeuRepo already exists.
+## MeuRepo	git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git (fetch)
+## MeuRepo	git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git (push)
+## RenameRepo	git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git (fetch)
+## RenameRepo	git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git (push)
+## origin	git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git (fetch)
+## origin	git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git (push)
+```
+
+Pare acessar localmente o branch master do projeto **Apostila-git** será usado `MeuRepo/master`.
+
+### Obtendo informações de um Remoto
+
+Você pode acessar as informações de qualquer repositório remoto com o comando `git remote show`, que retornará a URL e os `branches`. 
+
+**Exemplo:**
+
+```bash
+git remote show origin
+```
+
+```
+## * remote origin
+##   Fetch URL: git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git
+##   Push  URL: git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git
+##   HEAD branch: devel
+##   Remote branches:
+##     Issue#49                     tracked
+##     devel                        tracked
+##     issue#15                     new (next fetch will store in remotes/origin)
+##     issue#23                     tracked
+##     issue#36                     tracked
+##     issue#48                     tracked
+##     issue#50                     tracked
+##     issue#51                     tracked
+##     issue#53                     new (next fetch will store in remotes/origin)
+##     issue#54                     new (next fetch will store in remotes/origin)
+##     issue#56                     new (next fetch will store in remotes/origin)
+##     issue#57                     new (next fetch will store in remotes/origin)
+##     master                       tracked
+##     refs/remotes/origin/Issue#39 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#10 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#11 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#12 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#13 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#17 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#21 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#27 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#37 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#38 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#40 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#43 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#44 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#45 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#47 stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#7  stale (use 'git remote prune' to remove)
+##     refs/remotes/origin/issue#9  stale (use 'git remote prune' to remove)
+##   Local branch configured for 'git pull':
+##     devel merges with remote devel
+##   Local ref configured for 'git push':
+##     devel pushes to devel (up to date)
+```
+
+### Renomeado Remotos
+
+O comando `git remote rename` pode modificar o nome de um repositório remoto. A seguir o repositório `MeuRepo`será renomeado para `RenameRepo`. 
+
+**Exemplo:**
+
+```sh
+git remote rename MeuRepo RenameRepo
+```
+
+### Removendo Remotos
+
+Para remover remotos é utilizado o comando `git remote rm`, agora será removido o repositório renomeado anteriormente `RenameRepo`.
+
+**Exemplo:**
+
+```sh
+ git remote rm RenameRepo
+```
+
+**Protocolos Git**
+
+Há quatro tipos diferentes de protocolos Git (Local, Git, HTTP e SSH).
+
+Nesta apostila será abordado apenas o Secure Shell (SSH). Por ser fácil de fazer a configuração do acesso deste protocolo aos servidores, este é o mais usual.
+
+## Criando um Repositório Git
     
-Primeiramente é necessário ter acesso a um servidor Linux com chave SSH, no qual o usuário poderá ter seus repositórios. Será utilizado um diretório no qual será armazenado o repositório, que será definido como remoto.
-No exemplo a seguir é preciso criar um repositório remoto chamado `TesteRep` e o armazenar em um diretório `~/git`:
+Primeiramente é necessário ter acesso a um servidor Linux com chave SSH, no qual você poderá ter seus repositórios. É definido um diretório no qual será armazenado o repositório remoto.
+No próximo exemplo é preciso criar um repositório remoto chamado `MeuRepo` e o armazenar em um diretório `~/git`:
     
 **Exemplo:**
     
@@ -13,17 +155,45 @@ No exemplo a seguir é preciso criar um repositório remoto chamado `TesteRep` e
     # Para criar um diretório git na sua home:
     mkdir ~/git
     # Para criar um repositório git:
-    mkdir TesteRep.git
-    # Para definir TesteRep como um repositório remoto:
+    mkdir MeuRepo.git
+    # Para definir MeuRepo como um repositório remoto:
     git --bare init
     ```
 
-As configurações do servidor estão completas. A partir de agora serão dados os primeiros comandos para iniciar o repositório criado.
+As configurações do servidor estão completas. A partir você pode realizar os primeiros comandos para iniciar o repositório criado.
+
+
+## Git no servidor
+
+Primeiramente, para configurar o Git no Servidor e configurar os protocolos, clonaremos o repositório existente em um repositório limpo. 
+**Observação:** você poderá colocar um repositório no Servidor se este não contém um diretório de trabalho. 
+
+**Exemplo:**
 
+```sh
+ git clone --bare MeuRepo MeuRepo.git
+```
 
+Acima foi criado um repositório limpo `MeuRepo.git`, no qual está armazenada a cópia de todos os arquivos do diretorio Git.
+
+Após este primeiro passo o repositório limpo será colocado no Servidor e configurado os protolocos. 
+No exemplo abaixo, supondo que você tem configurado um servidor `git.servidor.com`, e um diretório `/dir/git`no qual você quer armazenar seus repositórios. Ao copiar o seu repositório limpo, você pode configurar seu novo repositório. 
+
+**Exemplo:**
+    
+    ```sh
+    scp -r MeuRepo.git usuario@git.example.com:/dir/git
+    ```
+
+Agora o repositório pode ser clonado por outros usuários, que podem ter acesso de escrita e de envio de arquivos `push` no diretório. 
+
+    
+    ```sh
+    git clone usuario@git.example.com:/dir/git/MeuRepo.git
+    ```
 
 
-## 4.2. Configuração de Conexão SSH com Servidor
+## Configuração de Conexão SSH com Servidor
 
 O Git possibilita ao usuário realizar uma chave SSH que fará uma conexão segura da sua máquina com o servidor. Para isso começamos com o seguinte comando no terminal:
     
@@ -36,7 +206,7 @@ O Git possibilita ao usuário realizar uma chave SSH que fará uma conexão segu
 
 A partir deste comando, será possível alterar o diretório onde será salva a chave SSH. O usuário tem a opção de permanecer com o diretório padrão, para isso basta apertar Enter.
 A partir disso, são criados dois arquivos no diretório, o `id_rsa` e o `id_rsa.pub`.
-Depois de escolher o diretório onde serão salvos os arquivos, terá a opção de digitar uma senha ou deixar o espaço em branco.
+Após escolher o diretório onde serão salvos os arquivos, você terá a opção de digitar uma senha ou deixar o espaço em branco.
 
 Para visualizar a chave basta digitar o seguinte comando:
     
@@ -56,16 +226,53 @@ Para checar a configuração da sua máquina com o sevidor basta realizar o segu
     ```sh
     ssh -T git@gitlab.c3sl.ufpr.br
     ```
+ 
+ 
+**Configurando o servidor** 
+ 
+Agora será abordado como configurar o acesso SSH do ponto de vista do servidor.
+Você precisa criar um usuário Git e um diretório `.ssh` para este usuário.
+
+**Exemplo:** criar usuário e diretório.
+    
+    ```sh
+    sudo adduser git
+    su git
+    cd
+    mkdir .ssh
+    ```
+
+Agora, você terá um arquivo chamado `authorized_keys` onde será adicionado uma chave pública de algum desenvolvedor. Após obter chaves de alguns usuários, você pode salvá-las no arquivo `authorized_keys`, como no exemplo a seguir.
 
+**Exemplo:**
 
+```sh
+cat /tmp/id_rsa1.pub >> ~/.ssh/authorized_keys # chave do primeiro usuário 
+cat /tmp/id_rsa2.pub >> ~/.ssh/authorized_keys # chave do segundo usuário
+...
+```
 
+Depois de armazenar as chaves dos usuários, basta criar um repositório limpo (sem um diretório de trabalho) para eles. Como visto anteriormente:
+
+**Exemplo:**
 
-## 4.3. Comandos clone, push, pull e fetch
+```sh
+cd/dir/git
+mkdir NovoProjeto.git
+cd NovoProjeto.git
+git –bare init
+```
+
+Agora os usuários, cujas chaves foram salvas no arquivo `authorized_keys` podem compartilhar arquivos no repositório com os comando `git init`, `git add`, `git commit`, `git remote add` e `git push origin master`.
+
+
+## Comandos clone, push, pull e fetch
 
 ### Git clone
-Este comando é usado para clonar um repositório do servidor remoto para um servidor local, caso o usuário queira copiar um repositório que já existe para realizar colaborações em um projeto que queira participar. 
-O usuário terá acesso a todos os arquivos e poderá verificar as diferentes versões destes.
-No exemplo abaixo temos uma bibliotaca Git, chamada "TesteClone", que será clonado da seguinte forma:
+
+Este comando é usado para clonar um repositório do servidor remoto para um servidor local, caso você queira copiar um repositório que já existe para realizar colaborações em um projeto que queira participar. 
+Você terá acesso a todos os arquivos e poderá verificar as diferentes versões destes.
+No exemplo abaixo temos uma bibliotaca Git, chamada **TesteClone**, que será clonado da seguinte forma:
     
 **Exemplo:**
     
@@ -73,8 +280,7 @@ No exemplo abaixo temos uma bibliotaca Git, chamada "TesteClone", que será clon
     git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git
     ```
 
-
-Desta forma terá um diretório `TesteClone` em seu computador, onde estarão todos os arquivos do projeto nele.
+Desta forma você terá um diretório `TesteClone` em seu computador, onde estarão todos os arquivos do projeto nele.
 
 O usuário também terá a opção de clonar o repositório `TesteClone` em um diretório diferente do padrão Git, que no próximo exemplo denominaremos de `DirTeste`:
     
@@ -121,9 +327,9 @@ Assim como o comando `Git pull`, o `Git fetch` transfere arquivos do repositóri
 Para verificar as modificações realizadas entre versões de um arquivo basta utilizar o comando `git diff`:
     
 **Exemplo:**
-    
-    ```sh
-    git diff master origin/master
-    ```
+
+```sh
+git diff master origin/master
+```