Skip to content
Snippets Groups Projects
Commit a6449580 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"
author: "PET Estatística"
date: "29/11/2015"
title: "Projetos Remotos"
author: "PET Estatística UFPR"
graphics: yes
output:
html_document:
highlight: pygments
toc: true
theme: flatly
keep_md: true
pdf_document:
template: template.tex
highlight: default
toc: true
toc_depth: 2
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:
......@@ -24,18 +30,23 @@ Primeiramente será apresentado o comando `git remote`, este é usado para verif
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}
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á vinculado a URL `git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git`. Usaremos como exemplo o projeto Git **Apostila-git**.
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}
......@@ -44,32 +55,37 @@ git remote add MeuRepo git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git
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:**
```{r, engine="bash", echo=TRUE}
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:**
```{r, engine="sh", eval=FALSE}
```{r, engine="bash", eval=FALSE}
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:**
```{r, engine="sh", eval=FALSE}
```{r, engine="bash", eval=FALSE}
git remote rm RenameRepo
```
......@@ -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).
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.
No próximo exemplo é preciso criar um repositório remoto chamado `MeuRepo` 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}
```{r, engine="bash", eval=FALSE}
# Para criar um diretório git na sua home:
mkdir ~/git
# Para criar um repositório git:
......@@ -94,160 +115,202 @@ mkdir MeuRepo.git
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.
**Observação:** você poderá colocar um repositório no Servidor se este não contém um diretório de trabalho.
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}
```{r, engine="bash", 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.
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.
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}
```{r, engine="bash", 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.
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
```
# 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:
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:
**Exemplo:**
```{r, engine="sh", eval=FALSE}
```{r, engine="bash", eval=FALSE}
## Gerando uma chave ssh
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`.
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.
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`. 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:
**Exemplo:**
```{r, engine="sh", eval=FALSE}
```{r, engine="bash", eval=FALSE}
cat ~/.ssh/id_rsa.pub
```
A chave está no arquivo `id_rsa.pub`. O usuário deve copiar o texto deste arquivo na íntegra.
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.
Para checar a configuração da sua máquina com o sevidor basta realizar o seguinte comando:
A chave está no arquivo `id_rsa.pub`. O usuário deve copiar o texto
deste arquivo na íntegra. 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.
Para checar a configuração da sua máquina com o sevidor basta realizar o
seguinte comando:
**Exemplo:**
```{r, engine="sh", eval=FALSE}
```{r, engine="bash", 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.
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}
```{r, engine="bash", 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.
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}
```{r, engine="bash", 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:
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}
```{r, engine="bash", 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`.
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.
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:
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}
```{r, engine="bash", 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 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:**
```{r, engine="sh", eval=FALSE}
```{r, engine="bash", eval=FALSE}
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 o servidor remoto.
No exemplo abaixo enviaremos a ramificação `Branch Master` para o servidor chamado `origin`:
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. No exemplo abaixo enviaremos a ramificação `Branch
Master` para o servidor chamado `origin`:
**Exemplo:**
```{r, engine="sh", eval=FALSE}
```{r, engine="bash", eval=FALSE}
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:**
```{r, engine="sh", eval=FALSE}
```{r, engine="bash", eval=FALSE}
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:**
```{r, engine="sh", eval=FALSE}
```{r, engine="bash", eval=FALSE}
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:**
```{r, engine="sh", eval=FALSE}
```{r, engine="bash", eval=FALSE}
git diff master origin/master
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment