Skip to content
Snippets Groups Projects
Commit f43d067d authored by Paula Alessandra Zeizer Dimas's avatar Paula Alessandra Zeizer Dimas
Browse files

Correção do capítulo 4 - projetos remotos

parent f75d54ca
Branches
Tags
1 merge request!26Issue#39
--- ---
title: "Projetos remotos" title: "4. Projetos remotos"
author: "PET Estatística" author: "PET Estatística"
date: "29/10/2015" date: "29/10/2015"
output: output:
...@@ -10,12 +10,33 @@ output: ...@@ -10,12 +10,33 @@ output:
keep_md: true keep_md: true
--- ---
## 1. Configuração de conexão ssh com servidor ## 4.1. Criando um repositório Git
Primeiramente é necessário ter acesso a um servidor linux com servidor 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 o usuário cria um repositório remoto chamado `TesteRep`e o armazena em um diretório criado `~/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:
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.
## 4.2. 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. O git possibilita ao usuário realizar uma chave ssh que fará uma conexão segura da sua máquina com o servidor.
Para obter uma conexão entre a máquina e o servidor, o usuário deve obter uma chave ssh. Para isso começamos com o seguinte comando no terminal: Para obter uma conexão entre a máquina e o servidor, o usuário deve obter uma chave ssh. Para isso começamos com o seguinte comando no terminal:
**Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="sh", 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"
...@@ -23,98 +44,86 @@ ssh-keygen -t rsa -C "usuario@email.com" ...@@ -23,98 +44,86 @@ ssh-keygen -t rsa -C "usuario@email.com"
``` ```
A partir deste comando, o usuário poderá alterar o diretório onde será salva a chave ssh. O usuário pode permanecer com o diretório padrão, basta apertar Enter. A partir deste comando, o usuário poderá alterar o diretório onde será salva a chave ssh. O usuário pode permanecer com o diretório padrão, basta apertar Enter.
Agora foram criados dois arquivos no diretório, **id_rsa** e **id_rsa.pub** Agora foram criados dois arquivos no diretório, `id_rsa` e `id_rsa.pub`.
Depois de escolher o diretório onde serão salvos os arquivos, o usuário terá a opção de digitar uma senha ou deixar o espaço em branco. Depois de escolher o diretório onde serão salvos os arquivos, o usuário terá a opção de digitar uma senha ou deixar o espaço em branco.
Para visualizar a chave basta o usuário digitar o seguinte comando: Para visualizar a chave basta o usuário digitar o seguinte comando:
**Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="sh", eval=FALSE}
cat ~/.ssh/id_rsa.pub cat ~/.ssh/id_rsa.pub
``` ```
No arquivo **id_rsa.pub** está a chave. O usuário deve copiar o texto deste arquivo na íntegra. No arquivo `id_rsa.pub` está a chave. O usuário deve copiar o texto deste arquivo na íntegra.
Para gerar a conexão ssh com o servidor o usuário deve abrir 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). O usuário deve 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 gerar a conexão ssh com o servidor o usuário deve abrir 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). O usuário deve 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:**
```{r, engine="sh", eval=FALSE} ```{r, engine="sh", eval=FALSE}
ssh -T git@gitlab.c3sl.ufpr.br ssh -T git@gitlab.c3sl.ufpr.br
``` ```
## 2. Criando um repositório Git
Criar um repositório no Git e clonar na sua máquina:
No link [New project](https://gitlab.c3sl.ufpr.br/projects/new) do gitlab o usuário deve nomear seu novo projeto (como exemplo nomeamos de **Teste**), escrever uma breve descrição e selecionar a visibilidade dele (private, internal ou public).
Após criar o projeto, uma nova página apresentará instruções com linhas de comando para criar um novo repositório.
## 4.3. Os 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 deste.
No exemplo abaixo temos uma bibliotaca Git, chamada "TesteClone", que será clonado da seguinte forma:
**Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="sh", eval=FALSE}
git clone git@gitlab.c3sl.ufpr.br:usuario/Teste.git git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git
cd Teste
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
``` ```
Acima foi clonado o repositório git na máquina e criado um arquivo **README.md**, esse arquivo aparece na capa do seu no repositório. Desta forma o usuário terá um diretório `TesteClone` em seu computador, onde estarão todos os arquivos do projeto nele.
Agora o usuário já pode criar e alterar arquivos e transferir estes para seu repositório remoto. Basta utilizar os comandos **git add**, **git commit** e **git push**. 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`:
**Exemplo:**
```{r, engine="sh", eval=FALSE}
git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git DirTeste
```
## 3. Os comandos clone, push, pull e fetch
### Git Push ### Git Push
Como apresentado no capítulo anterior (Projetos locais) os comandos **git add** e **git commit** adicionam os arquivos no repositório. A próxima etapa é enviar o arquivo para o repositório remoto. 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.
Para enviar é necessário o comando **push**: No exemplo abaixo enviaremos a ramificação, `Branch Master`, para o servidor chamado `origin`:
**Exemplo:**
```{r, engine="sh", eval=FALSE} ```{r, engine="sh", 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 enviar 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
Assim como o ** git push **, o ** git pull ** também faz transferência de arquivos, porém são transferidos do repositório remoto para a máquina, este comando faz o merge automaticamente. 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="sh", eval=FALSE}
git pull origin master git pull origin master
``` ```
### Git fetch ### Git fetch
O ** git fetch ** baixa arquivos do diretório remoto, porém as modificações devem ser atualizadas por um merge. 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="sh", 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:**
```{r, engine="sh", eval=FALSE} ```{r, engine="sh", eval=FALSE}
git diff master origin/master git diff master origin/master
``` ```
### Git clone
O comando **git clone**, mostrado na seção anterior, tem a finalidade de clonar repositórios existentes na máquina do usuário.
```{r, engine="sh", eval=FALSE}
git clone git@gitlab.c3sl.ufpr.br:usuario/Teste.git
```
## 4. Projetos remotos ##
### 4.1 - Configuração de conexão ssh com servidor ###
* Chaves públicas: introdução e breve descrição, facilidade da criação de um repositório devido a disponibilidade do servidor c3sl;
* Criando chave pública ssh: como gerar uma chave pública ssh que realizará uma conexão segura entre a máquina e o servidor;
### 4.2 - Clone, push, pull, fetch ###
* Introdução: colaborando em trabalhos coletivos;
* Clone: como copiar uma um repositório já existente para a sua máquina;
* Push: como transferir committs de um repositório local para um repositório remoto;
* Pull: como importar e mesclar arquivos do repositório remoto para a máquina;
* Fetch: como importar arquivos do repositório remoto para o repositório local, é possível verificar o arquivo antes de integrá-lo ao projeto com o git merge;
* Pull request: como facilitar a colaboração dos desenvolvedores.
# Projetos remotos # 4. Projetos remotos
PET Estatística PET Estatística
29/10/2015 29/10/2015
## 1. Configuração de conexão ssh com servidor ## 4.1. Criando um repositório Git
Primeiramente é necessário ter acesso a um servidor linux com servidor 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 o usuário cria um repositório remoto chamado `TesteRep`e o armazena em um diretório criado `~/git`:
**Exemplo:**
```sh
# 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:
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.
## 4.2. 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. O git possibilita ao usuário realizar uma chave ssh que fará uma conexão segura da sua máquina com o servidor.
Para obter uma conexão entre a máquina e o servidor, o usuário deve obter uma chave ssh. Para isso começamos com o seguinte comando no terminal: Para obter uma conexão entre a máquina e o servidor, o usuário deve obter uma chave ssh. Para isso começamos com o seguinte comando no terminal:
**Exemplo:**
```sh ```sh
## Gerando uma chave ssh ## Gerando uma chave ssh
...@@ -16,63 +38,73 @@ ssh-keygen -t rsa -C "usuario@email.com" ...@@ -16,63 +38,73 @@ ssh-keygen -t rsa -C "usuario@email.com"
``` ```
A partir deste comando, o usuário poderá alterar o diretório onde será salva a chave ssh. O usuário pode permanecer com o diretório padrão, basta apertar Enter. A partir deste comando, o usuário poderá alterar o diretório onde será salva a chave ssh. O usuário pode permanecer com o diretório padrão, basta apertar Enter.
Agora foram criados dois arquivos no diretório, **id_rsa** e **id_rsa.pub** Agora foram criados dois arquivos no diretório, `id_rsa` e `id_rsa.pub`.
Depois de escolher o diretório onde serão salvos os arquivos, o usuário terá a opção de digitar uma senha ou deixar o espaço em branco. Depois de escolher o diretório onde serão salvos os arquivos, o usuário terá a opção de digitar uma senha ou deixar o espaço em branco.
Para visualizar a chave basta o usuário digitar o seguinte comando: Para visualizar a chave basta o usuário digitar o seguinte comando:
**Exemplo:**
```sh ```sh
cat ~/.ssh/id_rsa.pub cat ~/.ssh/id_rsa.pub
``` ```
No arquivo **id_rsa.pub** está a chave. O usuário deve copiar o texto deste arquivo na íntegra. No arquivo `id_rsa.pub` está a chave. O usuário deve copiar o texto deste arquivo na íntegra.
Para gerar a conexão ssh com o servidor o usuário deve abrir 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). O usuário deve 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 gerar a conexão ssh com o servidor o usuário deve abrir 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). O usuário deve 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:**
```sh ```sh
ssh -T git@gitlab.c3sl.ufpr.br ssh -T git@gitlab.c3sl.ufpr.br
``` ```
## 2. Criando um repositório Git
Criar um repositório no Git e clonar na sua máquina:
No link [New project](https://gitlab.c3sl.ufpr.br/projects/new) do gitlab o usuário deve nomear seu novo projeto (como exemplo nomeamos de **Teste**), escrever uma breve descrição e selecionar a visibilidade dele (private, internal ou public).
Após criar o projeto, uma nova página apresentará instruções com linhas de comando para criar um novo repositório.
## 4.3. Os 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 deste.
No exemplo abaixo temos uma bibliotaca Git, chamada "TesteClone", que será clonado da seguinte forma:
**Exemplo:**
```sh ```sh
git clone git@gitlab.c3sl.ufpr.br:usuario/Teste.git git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git
cd Teste
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
``` ```
Acima foi clonado o repositório git na máquina e criado um arquivo **README.md**, esse arquivo aparece na capa do seu no repositório. Desta forma o usuário terá um diretório `TesteClone` em seu computador, onde estarão todos os arquivos do projeto nele.
Agora o usuário já pode criar e alterar arquivos e transferir estes para seu repositório remoto. Basta utilizar os comandos **git add**, **git commit** e **git push**. 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`:
**Exemplo:**
```sh
git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git DirTeste
```
## 3. Os comandos clone, push, pull e fetch
### Git Push ### Git Push
Como apresentado no capítulo anterior (Projetos locais) os comandos **git add** e **git commit** adicionam os arquivos no repositório. A próxima etapa é enviar o arquivo para o repositório remoto. 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.
Para enviar é necessário o comando **push**: No exemplo abaixo enviaremos a ramificação, `Branch Master`, para o servidor chamado `origin`:
**Exemplo:**
```sh ```sh
git push origin master git push origin master
``` ```
É importante ressaltar que se dois usuários clonarem ao mesmo tempo, realizarem modificações e enviar 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
Assim como o ** git push **, o ** git pull ** também faz transferência de arquivos, porém são transferidos do repositório remoto para a máquina, este comando faz o merge automaticamente. 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:**
```sh ```sh
git pull origin master git pull origin master
...@@ -80,42 +112,20 @@ git pull origin master ...@@ -80,42 +112,20 @@ git pull origin master
### Git fetch ### Git fetch
O ** git fetch ** baixa arquivos do diretório remoto, porém as modificações devem ser atualizadas por um merge. 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:**
```sh ```sh
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:**
```sh ```sh
git diff master origin/master git diff master origin/master
``` ```
### Git clone
O comando **git clone**, mostrado na seção anterior, tem a finalidade de clonar repositórios existentes na máquina do usuário.
```sh
git clone git@gitlab.c3sl.ufpr.br:usuario/Teste.git
```
## 4. Projetos remotos ##
### 4.1 - Configuração de conexão ssh com servidor ###
* Chaves públicas: introdução e breve descrição, facilidade da criação de um repositório devido a disponibilidade do servidor c3sl;
* Criando chave pública ssh: como gerar uma chave pública ssh que realizará uma conexão segura entre a máquina e o servidor;
### 4.2 - Clone, push, pull, fetch ###
* Introdução: colaborando em trabalhos coletivos;
* Clone: como copiar uma um repositório já existente para a sua máquina;
* Push: como transferir committs de um repositório local para um repositório remoto;
* Pull: como importar e mesclar arquivos do repositório remoto para a máquina;
* Fetch: como importar arquivos do repositório remoto para o repositório local, é possível verificar o arquivo antes de integrá-lo ao projeto com o git merge;
* Pull request: como facilitar a colaboração dos desenvolvedores.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment