Metodologia de uso do GitHub em projetos

De GEATI - Grupo de Estudos Avançados em TI
Ir para: navegação, pesquisa

Neste tutorial é apresentado uma Metodologia de uso do GitHub para gerenciar projetos (TC, Pesquisa etc.)

Cenário de uso

Este tutorial apresenta uma metodologia de trabalho simples para ser adotada no gerenciamento de código de um projeto. A ideia central é separar o código EM PRODUÇÃO (master) do código EM DESENVOLVIMENTO (branch). O aluno trabalha em um branch e o professor é responsável por atualizar o master. Assim, podem coexistir um único master e vários branches. O tutorial também considera que é um projeto PRIVADO. Para projetos públicos pode mudar alguns passos.

Atores

Professor
Responsável pelo projeto e por gerenciar o código (Gerente de Projeto)
Aluno
Responsável pelo desenvolvimento do código

Glossário

Aqui você encontra a explicação de alguns termos usados no decorrer deste tutorial

Dono_do_projeto
É o usuário do professor responsável pelo projeto no GitHub, também caracterizado como Gerente de Projeto
P.ex.:
GEATI-IFC
Link_producao
É o link (endereço) do repositório principal do projeto
P.ex.:
https://github.com/GEATI-IFC/teste 
Branch_de_trabalho
É o branch atualmente em uso (versão em desenvolvimento do projeto)
P.ex.:
versao-0.0.1
Link_clone
É o link (endereço) do clone do projeto criado no GitHub, com o login do aluno
P.ex.:
https://github.com/ALUNO_GH/teste

PRIMEIRA ETAPA: Ações do Gerente de Projeto

P01. Criar um novo repositório no GitHub
Atenção para definir o repositório como Público ou Privado
Após a criação, anotar o link do repositório (Link_producao).
P. ex.:
https://github.com/GEATI-IFC/teste
Adicionar a licença e inicializar o repositório com um README
Na dúvida, pode usar GNU General Public Licence v3.0
P02. Criar um branch para a nova versão do código a ser desenvolvido
Sugestão para numerar versões: versão a.b.c.d - sendo
'a': 1o. nível - versão principal
'b': 2o. nível - geralmente usado quando novas funcionalidades são adicionadas na versão principal
'c': 3o. nível - usado para indicar correções de bugs
'd': 4o. nível - usado para indicar compilações.
Para nomear um branch use até o 3o. nível da versão
P.ex.:
versao-0.0.1
P03. No caso de repositório Privado, colocar o aluno como Colaborador nas configurações do repositório (???)
O aluno deve ter um cadastro no GitHub e passar o código do seu usuário para o professor
P. ex.:
ALUNO_GH
P04. Passar o Link_produção e o Branch_de_trabalho para o aluno
P. ex.:
Link_producao = https://github.com/GEATI-IFC/teste 
Branch_de_trabalho = versao-0.0.1

SEGUNDA ETAPA: Ações do Aluno

Neste passo, o aluno vai preparar o ambiente de desenvolvimento e sincronizar sua pasta de trabalho com o Projeto principal no GitHub.

P05. Criar uma pasta de desenvolvimento na estação de trabalho do aluno
A ideia é deixar organizado o ambiente de desenvolvimento no computador usado pelo aluno
P.ex.:
 D:\Documentos\ProjetosProgramacao

No site do GitHub

P06. Criar uma conta do aluno no GitHub (se ainda não tiver sido feito)
P07. O aluno deve fazer login no GitHub e acessar o link principal do projeto, ou seja, o Link_producao
P08. Fazer um Fork do projeto principal
P09. Na aba <>CODE, botão Clone or download, copiar o endereço do clone no repositório do aluno (Link_clone), para depois criar um clone do projeto via linha de comando
P.ex.:
https://github.com/ALUNO_GH/teste.git

No TERMINAL (ou Prompt de comando)

P10. Na pasta de desenvolvimento, executar o comando
git clone Link_clone
Este comando vai criar uma pasta do projeto na pasta de desenvolvimento no computador do aluno
P.ex.:
 git clone https://github.com/ALUNO_GH/teste.git
P11. Acessar a pasta do projeto
P.ex:
cd  D:\Documentos\ProjetosProgramacao\teste
P12. Adicionar o repositório remoto do projeto
alias_dono_projeto é um apelido atribuido para a conexão
git remote add alias_dono_projeto Link_do_producao
P.ex.:
git remote add GEATI  https://github.com/GEATI-IFC/teste
P13. Atualiza o código na pasta local com a versão do branch no repositório remoto do aluno
git checkout -b Branch_trabalho

P.ex.:

git checkout -b versao-0.0.1
P14. Sincroniza os repositorios local e remoto
git fetch alias_dono_projeto Branch_trabalho
P.ex.:
git fetch GEATI versao-0.0.1

Ações do dia a dia

Pronto, a partir de agora o aluno pode iniciar o desenvolvimento de seu projeto localmente e periodicamente fazer a sincronização do código com o GitHub. No dia-a-dia, o aluno terá apenas 4 (quatro) sequências de comandos para executar. Sugere-se que os passos P16 a P18 sejam executados regularmente.

P15. Atualiza a pasta local conforme o repositorio remoto do aluno
origin é um atalho padrão para o repositório do aluno
git pull origin Branch_de_trabalho

P.ex.:

git pull origin versao-0.0.1  
P16. Adiciona os arquivos para commit
git add *
git add nome_de_arquivos

P.ex.:

git add *
P17. Faz o commit
É importante deixar uma mensagem do que foi feito a cada commit
git commit -m "mensagem"
P.ex.:
git commit -m "Atualização do arquivo config.js"
P18. Envia os commits locais para repositório remoto do aluno
git push origin Branch_de_trabalho

P.ex.:

git push origin versao-0.0.1

Comandos adicionais

P19. Obtém informações gerais e verifica se tem modificações pendentes no repositório local
git status
P20. Mostra todos os branchs locais
git branch -a
P21. Cria um novo branch (IMPORTANTE. Este novo branch não poderá ser sincronizado no Projeto principal).
git checkout -b versao-0.0.1.test

TERCEIRA ETAPA: Sincronizar o repositório do aluno com o repositório principal do projeto

Sincronizar o branch de trabalho do aluno

Faça isso semanalmente ou quando estiver pronto para liberar alterações, avisando ao professor que a sincronização foi feita.

P22. Acessar o repositório do aluno
P.ex.:
https://github.com/ALUNO_GH/teste.git
P23. Selecionar o botão Compare & pull request ou o menu New pull request
Botão Compare & pull request
(CUIDADO: Essa operação (P23-P26) é realizada no repositório original do projeto, por isso, o aluno deve-se ter ATENÇÃO de fazer o merge apenas no seu branch de trabalho)
Configurar os parâmetros branch fork: e base: - relacionados ao projeto principal e branch de trabalho
Configurar os parâmetros head fork: e compare: - relacionados ao branch em desenvolvimento (aluno)
Parâmetros na tela Compare & pull request
Colocar um título
Escrever a descrição das alterações que estão sendo sincronizadas
Conferir as alterações realizadas
P24. Selecionar o botão Create pull request
P25. Selecionar o botão Merge pull request
Se desejar, pode adicionar um comentário sobre as alterações
P26. Selecionar o botão Confirm merge
Agora tanto o Fork do aluno, quanto o repositório original estão sincronizados.

QUARTA ETAPA: Atualizar o master

ATENÇÃO: ESSA É UMA TAREFA DO PROFESSOR, PORTANTO, O ALUNO DEVE EVITAR FAZÊ-LA.

P27. Acessar o repositório principal do projeto
P.ex.:
https://github.com/GEATI-IFC/teste
P28. Selecionar o botão New pull request
Configurar o parâmetro base para master'
Configurar o parâmetro compare com o nome do branch de trabalho atual
Parâmetros na tela Compare & pull request
Informar o título e a mensagem detalhando as alterações
Conferir as alterações de código a serem realizadas
P29. Selecionar o botão Create pull request
P30. Selecionar o botão Merge pull request
P31. Selecionar o botão Confirm pull request