Skip to content
Snippets Groups Projects
Commit a7ddc2df authored by Walmes Marques Zeviani's avatar Walmes Marques Zeviani
Browse files

Adequações para Latex e edição:

  - Modifica YAML de acordo com o cap05;
  - Usa bash ao invés de sh como engine;
  - Acomoda o texto para 72 colunas;
  - Remove linhas vazias denecessárias;
parent 1c29ee74
No related branches found
No related tags found
1 merge request!48Issue#62
--- ---
title: "4. Projetos remotos" title: "Projetos Remotos"
author: "PET Estatística" author: "PET Estatística UFPR"
date: "29/11/2015" graphics: yes
output: output:
html_document: pdf_document:
highlight: pygments template: template.tex
highlight: default
toc: true toc: true
theme: flatly toc_depth: 2
keep_md: true keep_tex: true
number_sections: true
--- ---
\chapter{Projetos Remotos}
# Introdução #
## 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.
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.
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: **Exemplo:** para retornar a lista de repositórios:
...@@ -24,18 +30,23 @@ Primeiramente será apresentado o comando `git remote`, este é usado para verif ...@@ -24,18 +30,23 @@ Primeiramente será apresentado o comando `git remote`, este é usado para verif
git remote git remote
``` ```
No comando acima é possível visualizar o remoto padrão **origin** (URL SSH para onde será possível enviar os seus arquivos). 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: **Exemplo:** para retornar o nome dos repositórios com a URL onde foram
armazanados:
```{r, engine="bash", echo=TRUE} ```{r, engine="bash", echo=TRUE}
git remote -v git remote -v
``` ```
## Adicionando repositórios remotos ##
### 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á
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**. vinculado a URL
`git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git`. Usaremos
como exemplo o projeto Git **Apostila-git**.
**Exemplo:** **Exemplo:**
```{r, engine="bash", echo=TRUE} ```{r, engine="bash", echo=TRUE}
...@@ -44,32 +55,37 @@ git remote add MeuRepo git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git ...@@ -44,32 +55,37 @@ git remote add MeuRepo git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git
git remote -v git remote -v
``` ```
Pare acessar localmente o branch master do projeto **Apostila-git** será usado `MeuRepo/master`. Pare acessar localmente o branch master do projeto **Apostila-git** será
usado `MeuRepo/master`.
### Obtendo informações de um Remoto ## 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`. 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:** **Exemplo:**
```{r, engine="bash", echo=TRUE} ```{r, engine="bash", echo=TRUE}
git remote show origin git remote show origin
``` ```
### Renomeado Remotos ## 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`. 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:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
git remote rename MeuRepo RenameRepo git remote rename MeuRepo RenameRepo
``` ```
### Removendo Remotos ## Removendo Remotos ##
Para remover remotos é utilizado o comando `git remote rm`, agora será removido o repositório renomeado anteriormente `RenameRepo`. Para remover remotos é utilizado o comando `git remote rm`, agora será
removido o repositório renomeado anteriormente `RenameRepo`.
**Exemplo:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
git remote rm RenameRepo git remote rm RenameRepo
``` ```
...@@ -77,15 +93,20 @@ Para remover remotos é utilizado o comando `git remote rm`, agora será removid ...@@ -77,15 +93,20 @@ Para remover remotos é utilizado o comando `git remote rm`, agora será removid
Há quatro tipos diferentes de protocolos Git (Local, Git, HTTP e SSH). 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. 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 # Criando um Repositó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. Primeiramente é necessário ter acesso a um servidor Linux com chave SSH,
No próximo exemplo é preciso criar um repositório remoto chamado `MeuRepo` e o armazenar em um diretório `~/git`: 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:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
# Para criar um diretório git na sua home: # Para criar um diretório git na sua home:
mkdir ~/git mkdir ~/git
# Para criar um repositório git: # Para criar um repositório git:
...@@ -94,160 +115,201 @@ mkdir MeuRepo.git ...@@ -94,160 +115,201 @@ mkdir MeuRepo.git
git --bare init git --bare init
``` ```
As configurações do servidor estão completas. A partir você pode realizar 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 #
## Git no servidor Primeiramente, para configurar o Git no Servidor e configurar os
protocolos, clonaremos o repositório existente em um repositório limpo.
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
**Observação:** você poderá colocar um repositório no Servidor se este não contém um diretório de trabalho. não contém um diretório de trabalho.
**Exemplo:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
git clone --bare MeuRepo MeuRepo.git 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. 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. Após este primeiro passo o repositório limpo será colocado no Servidor e
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. 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:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
scp -r MeuRepo.git usuario@git.example.com:/dir/git 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. 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} ```{r, engine="bash", eval=FALSE}
git clone usuario@git.example.com:/dir/git/MeuRepo.git git clone usuario@git.example.com:/dir/git/MeuRepo.git
``` ```
# 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
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: comando no terminal:
**Exemplo:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
## Gerando uma chave ssh ## Gerando uma chave ssh
ssh-keygen -t rsa -C "usuario@email.com" 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 deste comando, será possível alterar o diretório onde será
A partir disso, são criados dois arquivos no diretório, o `id_rsa` e o `id_rsa.pub`. salva a chave SSH. O usuário tem a opção de permanecer com o diretório
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. 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`. 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: Para visualizar a chave basta digitar o seguinte comando:
**Exemplo:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
cat ~/.ssh/id_rsa.pub cat ~/.ssh/id_rsa.pub
``` ```
A chave está no arquivo `id_rsa.pub`. O usuário deve copiar o texto deste arquivo na íntegra. A chave está no arquivo `id_rsa.pub`. O usuário deve copiar o texto
Para gerar a conexão ssh com o servidor, deve visitar o site [https://gitlab.c3sl.ufpr.br/profile/keys](https://gitlab.c3sl.ufpr.br/profile/keys) e clicar em [Add SSH Key](https://gitlab.c3sl.ufpr.br/profile/keys/new). É necessário escrever um título para a sua nova chave, no campo `key` colar o texto copiado do arquivo `id_rsa.pub` e adicionar sua nova chave. deste arquivo na íntegra. Para gerar a conexão ssh com o servidor, deve
visitar o site <https://gitlab.c3sl.ufpr.br/profile/keys> e clicar em
\menu{Add SSH Key} (<https://gitlab.c3sl.ufpr.br/profile/keys/new>). É
necessário escrever um título para a sua nova chave, no campo `key`
colar o texto copiado do arquivo `id_rsa.pub` e adicionar sua nova
chave.
Para checar a configuração da sua máquina com o sevidor basta realizar o seguinte comando: Para checar a configuração da sua máquina com o sevidor basta realizar o
seguinte comando:
**Exemplo:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
ssh -T git@gitlab.c3sl.ufpr.br ssh -T git@gitlab.c3sl.ufpr.br
``` ```
**Configurando o servidor** **Configurando o servidor**
Agora será abordado como configurar o acesso SSH do ponto de vista do servidor. Agora será abordado como configurar o acesso SSH do ponto de vista do
Você precisa criar um usuário Git e um diretório `.ssh` para este usuário. servidor. Você precisa criar um usuário Git e um diretório `.ssh` para
este usuário.
**Exemplo:** criar usuário e diretório. **Exemplo:** criar usuário e diretório.
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
sudo adduser git sudo adduser git
su git su git
cd cd
mkdir .ssh 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. 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:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
cat /tmp/id_rsa1.pub >> ~/.ssh/authorized_keys # chave do primeiro usuário ## chave do primeiro usuário
cat /tmp/id_rsa2.pub >> ~/.ssh/authorized_keys # chave do segundo usuário cat /tmp/id_rsa1.pub >> ~/.ssh/authorized_keys
... ## chave do segundo usuário
cat /tmp/id_rsa2.pub >> ~/.ssh/authorized_keys
``` ```
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: 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:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
cd /dir/git cd /dir/git
mkdir NovoProjeto.git mkdir NovoProjeto.git
cd NovoProjeto.git cd NovoProjeto.git
git bare init 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`. 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 # Comandos clone, push, pull e fetch #
### Git clone ## Git clone ##
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. Este comando é usado para clonar um repositório do servidor remoto para
Você terá acesso a todos os arquivos e poderá verificar as diferentes versões destes. um servidor local, caso você queira copiar um repositório que já existe
No exemplo abaixo temos uma bibliotaca Git, chamada **TesteClone**, que será clonado da seguinte forma: 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:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git 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 você terá um diretório `TesteClone` em seu computador, onde
estarão todos os arquivos do projeto nele.
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`: 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:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git DirTeste git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git DirTeste
``` ```
## Git Push ##
### Git Push Usado para transferência de arquivos entre repositório local e o
servidor remoto. Como o nome já diz, o comando empurra os arquivos para
Usado para transferência de arquivos entre repositório local e o servidor remoto. Como o nome já diz, o comando empurra os arquivos para o servidor remoto. o servidor remoto. No exemplo abaixo enviaremos a ramificação `Branch
No exemplo abaixo enviaremos a ramificação `Branch Master` para o servidor chamado `origin`: Master` para o servidor chamado `origin`:
**Exemplo:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
git push origin master git push origin master
``` ```
É importante ressaltar que se dois usuários clonarem ao mesmo tempo, realizarem modificações e enviarem os arquivos atualizados ao repositório utilizando o `Git push`, as modificações do usuário que realizou o push por último serão desconsideradas. É importante ressaltar que se dois usuários clonarem ao mesmo tempo,
realizarem modificações e enviarem os arquivos atualizados ao
repositório utilizando o `Git push`, as modificações do usuário que
realizou o push por último serão desconsideradas.
### Git Pull ## Git Pull ##
Também utilizado para transferência de arquivos. O comando puxa os arquivos do servidor remoto para o repositório local e faz o merge do mesmo, fundindo a última versão com a versão atualizada. Também utilizado para transferência de arquivos. O comando puxa os
arquivos do servidor remoto para o repositório local e faz o merge do
mesmo, fundindo a última versão com a versão atualizada.
**Exemplo:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
git pull origin master git pull origin master
``` ```
### Git fetch ## Git fetch ##
Assim como o comando `Git pull`, o `Git fetch` transfere arquivos do repositório remoto para o local, porém ele não realiza automaticamente o merge dos arquivos transferidos, o usuário deve fazer o merge manualmente. Assim como o comando `Git pull`, o `Git fetch` transfere arquivos do
repositório remoto para o local, porém ele não realiza automaticamente o
merge dos arquivos transferidos, o usuário deve fazer o merge
manualmente.
**Exemplo:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
git fetch origin master git fetch origin master
``` ```
Para verificar as modificações realizadas entre versões de um arquivo basta utilizar o comando `git diff`: Para verificar as modificações realizadas entre versões de um arquivo
basta utilizar o comando `git diff`:
**Exemplo:** **Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="bash", eval=FALSE}
git diff master origin/master git diff master origin/master
``` ```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment