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

Conclusão do capítulo 4

parent cb9dd46b
No related branches found
No related tags found
1 merge request!53Issue#64
...@@ -34,7 +34,7 @@ colaboradores tenham acesso. Isso inclusive vai permitir que você acesse ...@@ -34,7 +34,7 @@ colaboradores tenham acesso. Isso inclusive vai permitir que você acesse
o projeto de várias outras máquinas, como o *notebook* de casa e o o projeto de várias outras máquinas, como o *notebook* de casa e o
desktop do *escritório*. desktop do *escritório*.
## Repositório remoto pessoal # Repositório remoto pessoal
O repositório remoto serve de centro do seu repositório Git. Como ele O repositório remoto serve de centro do seu repositório Git. Como ele
está em um servidor que você tem acesso, você pode compartilhar o está em um servidor que você tem acesso, você pode compartilhar o
...@@ -178,7 +178,7 @@ ssh eu@111.22.333.44\ ...@@ -178,7 +178,7 @@ ssh eu@111.22.333.44\
"cat >> ~/.ssh/authorized_keys2" < ~/.ssh/id_rsa.pub "cat >> ~/.ssh/authorized_keys2" < ~/.ssh/id_rsa.pub
``` ```
## Repositório remoto coletivo # Repositório remoto coletivo
A única diferença é recomendamos você criar um novo usuário e adicionar A única diferença é recomendamos você criar um novo usuário e adicionar
as chaves públicas de todos os membros. Evite adicionar chaves públicas as chaves públicas de todos os membros. Evite adicionar chaves públicas
...@@ -221,24 +221,90 @@ ssh gitusers@111.22.333.44\ ...@@ -221,24 +221,90 @@ ssh gitusers@111.22.333.44\
"cat >> ~/.ssh/authorized_keys2" < todos.pub "cat >> ~/.ssh/authorized_keys2" < todos.pub
``` ```
A fazer:
1. Fluxo de trabalho com repositório remoto, do *clone* ao *push*;
2. Listar branches locais/remotos;
3. Adicionar *remote*, renomear, deletar;
4. Adicionar mais de uma url para o mesmo *origin*;
5. Deletar ramos no servidor;
6. Clonar apenas um *branch*, *commit* ou *tag*.
<!---------------------------------------------------------------------- --> # Fluxo de trabalho com repositório remoto, do clone ao push
# Introdução # ## Git clone
Para colaborar em projetos coletivos no Git é preciso ter um repositório Este comando é usado para clonar um repositório do servidor remoto para
remoto. Este repositório conterá todo o histórico das versões dos um servidor local, caso você queira copiar um repositório que já existe
arquivos editados. A seguir serão abordados como adicionar, remover e para realizar colaborações em um projeto que queira participar. Você
gerenciar repositórios remotos. terá acesso a todos os arquivos e poderá verificar as diferentes versões
destes. Supondo que sua equipe de trabalho possue uma biblioteca Git **Teste Clone**, onde são armazenados todos os arquivos. Você pode clonar estes arquivos para o seu diretório de trabalho e assim modificá-los conforme deseja.
**Exemplo:**
```{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.
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="bash", eval=FALSE}
git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git DirTeste
```
## Git Push
Após clonar e realizar contribuições ao projeto, você pode enviá-los para o repositório remoto. Estes arquivos, após o `Git push`, estarão prontos para serem integrados ao projeto com o `merge`.
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="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.
Primeiramente será apresentado o comando `git remote`, este é usado para ## Git Pull
Para obter todos os arquivos presentes no projeto, você pode importar os arquivos do branch `master`.
Toda vez que você utilizar o `Git pull` a última versão de todos os arquivos estarão no seu diretório.
Este comando é 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="bash", eval=FALSE}
git pull origin master
```
## 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.
**Exemplo:**
```{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`:
**Exemplo:**
```{r, engine="bash", eval=FALSE}
git diff master origin/master
```
# Listar branches locais/remotos
O comando `git remote`, este é usado para
verificar quais repositórios estão configurados. verificar quais repositórios estão configurados.
**Exemplo:** para retornar a lista de repositórios: **Exemplo:** para retornar a lista de repositórios:
...@@ -257,7 +323,10 @@ armazanados: ...@@ -257,7 +323,10 @@ armazanados:
git remote -v git remote -v
``` ```
## Adicionando repositórios remotos ##
# Adicionar, renomear, deletar remote
## Adicionando repositórios remotos
O comando `git remote add` adiciona um repositório remoto. No exemplo a O comando `git remote add` adiciona um repositório remoto. No exemplo a
seguir será adicionado um repositório chamado **MeuRepo** ao qual será seguir será adicionado um repositório chamado **MeuRepo** ao qual será
...@@ -275,7 +344,7 @@ git remote -v ...@@ -275,7 +344,7 @@ git remote -v
Pare acessar localmente o branch master do projeto **Apostila-git** será Pare acessar localmente o branch master do projeto **Apostila-git** será
usado `MeuRepo/master`. 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 Você pode acessar as informações de qualquer repositório remoto com o
comando `git remote show`, que retornará a URL e os `branches`. comando `git remote show`, que retornará a URL e os `branches`.
...@@ -285,7 +354,7 @@ comando `git remote show`, que retornará a URL e os `branches`. ...@@ -285,7 +354,7 @@ comando `git remote show`, que retornará a URL e os `branches`.
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 O comando `git remote rename` pode modificar o nome de um repositório
remoto. A seguir o repositório `MeuRepo`será renomeado para remoto. A seguir o repositório `MeuRepo`será renomeado para
...@@ -296,7 +365,7 @@ remoto. A seguir o repositório `MeuRepo`será renomeado para ...@@ -296,7 +365,7 @@ remoto. A seguir o repositório `MeuRepo`será renomeado para
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á Para remover remotos é utilizado o comando `git remote rm`, agora será
removido o repositório renomeado anteriormente `RenameRepo`. removido o repositório renomeado anteriormente `RenameRepo`.
...@@ -306,13 +375,36 @@ removido o repositório renomeado anteriormente `RenameRepo`. ...@@ -306,13 +375,36 @@ removido o repositório renomeado anteriormente `RenameRepo`.
git remote rm RenameRepo git remote rm RenameRepo
``` ```
**Protocolos Git** ## Deletar ramos no servidor
Há quatro tipos diferentes de protocolos Git (Local, Git, HTTP e SSH). Quando houver um branch que não está sendo utilizado ou está concluído, há a opção de excluí-lo do servidor.
Se for necessário apagar branches remotos, podemos utilizar o comando a seguir:
**Exemplo:**
```{r, engine="bash", eval=FALSE}
git push origin --delete <branch>
```
## Clonar apenas um *branch*, *commit* ou *tag*.
É possível clonar apenas um branch e não o repositório Git completo. Supondo que no repositório há um branch chamado `MeuBranch` dentro do repositório `MeuRepo`, clonaremos o branch.
**Exemplo:**
```{r, engine="bash", eval=FALSE}
git clone -b MeuBranch --single-branch git://sub.domain.com/MeuRepo.git
```
O Git ainda permite clonar um commit ou tag.
**Exemplo:**
```{r, engine="bash", eval=FALSE}
# Para uma tag:
git -e: //git.myproject.org/MyProject.git@v1.0#egg=MyProject
# Para um commit:
git -e: //git.myproject.org/MyProject.git@da39a3ee5e6b4b0d3255bfef95601890afd80709#egg=MyProject
```
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 #
...@@ -323,7 +415,7 @@ criar um repositório remoto chamado `MeuRepo` e o armazenar em um ...@@ -323,7 +415,7 @@ criar um repositório remoto chamado `MeuRepo` e o armazenar em um
diretório `~/git`: 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:
...@@ -357,7 +449,7 @@ qual você quer armazenar seus repositórios. Ao copiar o seu repositório ...@@ -357,7 +449,7 @@ qual você quer armazenar seus repositórios. Ao copiar o seu repositório
limpo, você pode configurar seu novo 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
``` ```
...@@ -375,7 +467,7 @@ segura da sua máquina com o servidor. Para isso começamos com o seguinte ...@@ -375,7 +467,7 @@ 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"
``` ```
...@@ -425,9 +517,11 @@ de alguns usuários, você pode salvá-las no arquivo `authorized_keys`, ...@@ -425,9 +517,11 @@ de alguns usuários, você pode salvá-las no arquivo `authorized_keys`,
como no exemplo a seguir. 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
... ...
``` ```
...@@ -436,7 +530,7 @@ limpo (sem um diretório de trabalho) para eles. Como visto ...@@ -436,7 +530,7 @@ limpo (sem um diretório de trabalho) para eles. Como visto
anteriormente: 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
...@@ -448,80 +542,3 @@ Agora os usuários, cujas chaves foram salvas no arquivo ...@@ -448,80 +542,3 @@ Agora os usuários, cujas chaves foram salvas no arquivo
comando `git init`, `git add`, `git commit`, `git remote add` e `git comando `git init`, `git add`, `git commit`, `git remote add` e `git
push origin master`. 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 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.
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="bash", eval=FALSE}
git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git DirTeste
```
## 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`:
**Exemplo:**
```{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.
## 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.
**Exemplo:**
```{r, engine="bash", eval=FALSE}
git pull origin master
```
## 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.
**Exemplo:**
```{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`:
**Exemplo:**
```{r, engine="bash", eval=FALSE}
git diff master origin/master
```
cap04.pdf 0 → 100644
File added
cap04.tex 0 → 100644
This diff is collapsed.
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