1.1. Acesse a interface Web e crie alguns usuários, grupos e um projeto.
Por exemplo:
- Grupo: streetfighter
- Usuários: Ryu, Chun-Li, Sagat
- Projeto: Newgame1
1.2. Gerar uma chave ssh
A comunicação do Git com o Gitlab utiliza o protocolo SSH, portando gere uma chave ssh e copie na interface do Gitlab.
# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ryu/.ssh/id_rsa):
Created directory '/home/ryu/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ryu/.ssh/id_rsa.
Your public key has been saved in /home/ryu/.ssh/id_rsa.pub.
Copie o conteúdo da chave id_rsa.pub para o Gitlab.
Logado no Gitlab vá para "Home -> Profile Setting -> SSH Keys", e copie a chave.
Faça isto para todos os usuários.
1.3. Configurações iniciais do Git
Logue com um dos usuários criados, por exemplo "ryu" e faça as configurações iniciais do Git, para a correta conexão com o repositório e definição do editor de texto e merge.
git config --global user.name "ryu"
$ git config --global user.email "ryu@devopslab.com.br"
$ git config --global core.editor vim
$ git config --global merge.tool vimdiff
$ git config --global color.ui true
Verificação:
git config --global --list
user.name=ryu
user.email=ryu@devopslab.com.br
core.editor=vim
merge.tool=vimdiff
1.4. Primeiro Commit
O comando "git clone" vai copiar o projeto do Gitlab para sua máquina.
git clone git@gitlab.devopslab.com.br:StreetFighter/Newgame.git
$ cd Newgame
Dentro da pasta Newgame tem uma pasta oculta ".git", dentro desta pasta está toda a estrutura de funcionamento do Git.
1.5. Primeiro arquivo
Crie o arquivo de README.md.
touch README.md
$ vi README.md
$ cat README.md
Meu primeiro projeto.
Commit 1.
Teste Git
1.6. Indexando o README.md
git add README.md
1.7. Commit
O comando "git commit" vai gravar as alterações no repositório local.
git commit -m "comentário"
$ git commit -m "criei o arquivo README com o primeiro conteúdo"
[master (root-commit) 7862fe2] comentário criei o arquivo README com o primeiro conteúdo
1 file changed, 3 insertions(+)
create mode 100644 README.md
1.8. Push
O commando "git push", sincroniza o repositório local com o Gitlab.
git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 281 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gitlab.devopslab.com.br:StreetFighter/Newgame.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
Explicação:
- Origin -> É o seu repositório atual, "Newgame", é o projeto que você está trabalhando.
- Master -> É o branch master principal deste projeto.
Poderia ser outro branch, cada projeto tem um branch master, e neste branch master podem ser anexados vários branchs paralelos. Mais para frente vamos criar um branch adicional para melhor entendimento.
Por fim, logue na interface web do gitlab, vá para o projeto "Newgame", e estará registrado quem fez o commit, comentário, horário, nome do arquivo e outros metadados.
1.9. Verifique o status da sua fila:
git status
$ git log
$ git show
2.1. Criando e sincronizando um novo código.
Quem vai trabalhar agora é a Chun-Li, ela vai criar um novo recurso no projeto. Execute os passos descritos no capítulo "6.1.3 - Configurações iniciais do Git".
git clone git@gitlab.devopslab.com.br:StreetFighter/Newgame.git
$ cd Newgame.git
$ vi index.html
<html>
<header><title>projeto Newgame</title></header>
<body>
Hello world
Viva o
Linux
</body>
</html>
git add index.html
$ git commit -m "Acabei de criar a home page index.html"
$ git push -u origin master
2.2. Criar um novo branch.
Branch de feature.
Acima trabalhamos no branch master no projeto "newgame", porém na reunião de Scrum surgiu uma nova necessidade, e foi adicionado uma nova feature ao sprint, então criaremos um branch de feature paralelo ao master.
Vamos criar o branch de feature com o usuário "sagat". Execute os passos descritos no capítulo "1.3. Configurações iniciais do Git".
git clone git@gitlab.devopslab.com.br:StreetFighter/Newgame.git
$ cd Newgame
$ git branch novafeature1
$ git checkout novafeature1
$ git status
2.3. Criando a nova feature
vi apiBD.py
print "Hello World!"
print "Api de busca com o Banco de dados"
Indexar e commitar.
git add apiBD.py
$ git commit -a -m 'Criei a API de integracao com o BD'
[novafeature1 9615f56] Crie a API de integracao com o BD
1 file changed, 2 insertions(+)
create mode 100644 apiBD.py
Sincronização com o branch "novafeature1":
git push -u origin novafeature1
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 382 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gitlab.devopslab.com.br:StreetFighter/Newgame.git
90f41fb..9615f56 novafeature1 -> novafeature1
Branch novafeature1 set up to track remote branch novafeature1 from origin.
Veja os 2 branchs:
2.4. Merge
Após criado o Branch de Feature, falta sincronizar o branch de feature com o branch master.
git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
git merge novafeature1
Updating 90f41fb..9615f56
Fast-forward
apiBD.py | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 apiBD.py
git push origin master
Total 0 (delta 0), reused 0 (delta 0)
To git@gitlab.devopslab.com.br:StreetFighter/Newgame.git
90f41fb..9615f56 master -> master