Nos capítulos anteriores descrevemos como instalar o Git e ter projetos
Nos capítulos anteriores descrevemos como instalar o Git e ter projetos
versionados. No entanto, o uso do Git até então foi apenas local. Os
versionados. No entanto, o uso do Git até então foi apenas local. Os
arquivos eram mantidos na sua máquina de trabalho e disponíveis só para
arquivos eram mantidos na sua máquina de trabalho e disponíveis só para
...
@@ -180,20 +179,20 @@ ssh eu@111.22.333.44\
...
@@ -180,20 +179,20 @@ ssh eu@111.22.333.44\
# Repositório remoto coletivo
# Repositório remoto coletivo
A única diferença é recomendamos a você criar um novo usuário e adicionar
A única diferença é recomendamos a você criar um novo usuário e
as chaves públicas de todos os membros. Evite adicionar chaves públicas
adicionar as chaves públicas de todos os membros. Evite adicionar chaves
para usuários na sua conta porque isso expõe seus documentos, alguma
públicas para usuários na sua conta porque isso expõe seus documentos,
operação desastrosa por parte de alguém pode comprometê-los. Por isso,
alguma operação desastrosa por parte de alguém pode comprometê-los. Por
crie um usuário, por exemplo `gitusers`, para nesta conta manter o
isso, crie um usuário, por exemplo `gitusers`, para nesta conta manter o
repositório remoto.
repositório remoto.
Solicite que os colaboradores gerem as chaves públicas e te enviem o
Solicite que os colaboradores gerem as chaves públicas e te enviem o
arquivo `id_rsa.pub`. Depois você adiciona cada chave ao
arquivo `id_rsa.pub`. Depois você adiciona cada chave ao
`authorized_keys` de conta `gitusers`. Com chaves autorizadas, os
`authorized_keys` de conta `gitusers`. Com chaves autorizadas, os
colaboradores podem transferir arquivos, podem logar no servidor mas
colaboradores podem transferir arquivos, podem logar no servidor mas não
não podem instalar nada, a menos que você passe a senha do usuário
podem instalar nada, a menos que você passe a senha do usuário
`gitusers`. Para crias usuários no servidor, você precisa de
`gitusers`. Para crias usuários no servidor, você precisa de privilégios
privilégios de *admin*.
de *admin*.
```{r, engine="bash", eval=FALSE}
```{r, engine="bash", eval=FALSE}
## Logar na servidora.
## Logar na servidora.
...
@@ -221,7 +220,6 @@ ssh gitusers@111.22.333.44\
...
@@ -221,7 +220,6 @@ ssh gitusers@111.22.333.44\
"cat >> ~/.ssh/authorized_keys2" < todos.pub
"cat >> ~/.ssh/authorized_keys2" < todos.pub
```
```
# Fluxo de trabalho com repositório remoto, do clone ao push
# Fluxo de trabalho com repositório remoto, do clone ao push
## Git clone
## Git clone
...
@@ -230,8 +228,10 @@ Este comando é usado para clonar um repositório do servidor remoto para
...
@@ -230,8 +228,10 @@ 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
um servidor local, caso você queira copiar um repositório que já existe
para realizar colaborações em um projeto que queira participar. Você
para realizar colaborações em um projeto que queira participar. Você
terá acesso a todos os arquivos e poderá verificar as diferentes versões
terá acesso a todos os arquivos e poderá verificar as diferentes versões
destes. Supondo que sua equipe de trabalho possui 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.
destes. Supondo que sua equipe de trabalho possui 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
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`.
Após clonar e realizar contribuições ao projeto, você pode enviá-los
Usado para transferência de arquivos entre repositório local e o
para o repositório remoto. Estes arquivos, após o `Git push`, estarão
servidor remoto. Como o nome já diz, o comando empurra os arquivos para
prontos para serem integrados ao projeto com o `merge`. Usado para
o servidor remoto. No exemplo abaixo enviaremos a ramificação `Branch Master` para o servidor chamado `origin`:
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:**
**Exemplo:**
```{r, engine="bash", eval=FALSE}
```{r, engine="bash", eval=FALSE}
...
@@ -269,11 +272,12 @@ realizou o push por último serão desconsideradas.
...
@@ -269,11 +272,12 @@ realizou o push por último serão desconsideradas.
## Git Pull
## Git Pull
Para obter todos os arquivos presentes no projeto, você pode importar os arquivos do branch `master`.
Para obter todos os arquivos presentes no projeto, você pode importar os
Toda vez que você utilizar o `Git pull` a última versão de todos os arquivos estarão no seu diretório.
arquivos do branch `master`. Toda vez que você utilizar o `Git pull` a
Também usado para transferência de arquivos, o comando puxa os
última versão de todos os arquivos estarão no seu diretório. Também
arquivos do servidor remoto para o repositório local e faz o merge do
usado para transferência de arquivos, o comando puxa os arquivos do
mesmo, fundindo a última versão com a versão atualizada.
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="bash", eval=FALSE}
```{r, engine="bash", eval=FALSE}
...
@@ -300,11 +304,10 @@ basta utilizar o comando `git diff`:
...
@@ -300,11 +304,10 @@ basta utilizar o comando `git diff`:
git diff master origin/master
git diff master origin/master
```
```
# Listar branches locais/remotos
# Listar branches locais/remotos
O comando `git remote` é usado para
O comando `git remote` é usado para verificar quais repositórios estão
verificar quais repositórios estão configurados.
configurados.
**Exemplo:** para retornar a lista de repositórios:
**Exemplo:** para retornar a lista de repositórios:
...
@@ -322,7 +325,6 @@ armazanados:
...
@@ -322,7 +325,6 @@ armazanados:
git remote -v
git remote -v
```
```
# Adicionar, renomear, deletar remote
# Adicionar, renomear, deletar remote
## Adicionando repositórios remotos
## Adicionando repositórios remotos
...
@@ -335,8 +337,10 @@ como exemplo o projeto **Apostila-git**.
...
@@ -335,8 +337,10 @@ como exemplo o projeto **Apostila-git**.
@@ -376,18 +380,20 @@ removido o repositório renomeado anteriormente `RenameRepo`.
...
@@ -376,18 +380,20 @@ removido o repositório renomeado anteriormente `RenameRepo`.
## Deletar ramos no servidor
## Deletar ramos no servidor
Quando houver um branch que não está sendo utilizado ou está concluído, há a opção de excluí-lo do servidor.
Quando houver um branch que não está sendo utilizado ou está concluído,
Se for necessário apagar branches remotos, podemos utilizar o comando a seguir:
há a opção de excluí-lo do servidor. Se for necessário apagar branches
remotos, podemos utilizar o comando a seguir:
**Exemplo:**
**Exemplo:**
```{r, engine="bash", eval=FALSE}
```{r, engine="bash", eval=FALSE}
git push origin --delete <branch>
git push origin --delete <branch>
```
```
## Clonar apenas um *branch*, *commit* ou *tag*.
## 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.
É 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:**
**Exemplo:**
```{r, engine="bash", eval=FALSE}
```{r, engine="bash", eval=FALSE}
...
@@ -398,13 +404,13 @@ O Git ainda permite clonar um commit ou tag.
...
@@ -398,13 +404,13 @@ O Git ainda permite clonar um commit ou tag.
Primeiramente é necessário ter acesso a um servidor Linux com chave SSH,
Primeiramente é necessário ter acesso a um servidor Linux com chave SSH,
...
@@ -423,8 +429,8 @@ mkdir MeuRepo.git
...
@@ -423,8 +429,8 @@ mkdir MeuRepo.git
git --bare init
git --bare init
```
```
As configurações do servidor estão completas. A partir de agora você pode
As configurações do servidor estão completas. A partir de agora você
realizar os primeiros comandos para iniciar o repositório criado.
pode realizar os primeiros comandos para iniciar o repositório criado.
# Git no servidor #
# Git no servidor #
...
@@ -485,8 +491,15 @@ Para visualizar a chave basta digitar o seguinte comando:
...
@@ -485,8 +491,15 @@ Para visualizar a chave basta digitar o seguinte comando:
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