Introdução a sistemas modernos de controlo de revisões
--
Pela prática, divulgação, promoção, desenvolvimento, investigação e estudo das tecnologias, técnicas, ciências e artes por
** hackers, makers e artistas. **
--
- Director da be.ubi
- Software / Continuous Delivery / DevOps
- https://github.com/luisfaceira
- [email protected]
--
- Controlo de revisões?
- Histórico linear
- Trabalhar em equipa
- Trabalhar em comunidade
- Que mais?
--
- Conta em github.com
- Git/GitHub instalado no computador
--
--
git
- é o sistema distribuído de controlo de revisões mais utilizado
github
- é a empresa/plataforma de alojamento de repositorios git mais utilizada
--
Revision control, also known as version control or source control, is the management of changes to documents, computer programs, large web sites, and other collections of information
--
Um sistema de controlo de revisões permite gerir a evolução de um conjunto de documentos/ficheiros
--
Ajuda a resolver, entre outras, as seguintes necessidades:
- Armazenamento seguro dos items de trabalho
- Coordenação de equipa
- Gestão de trabalho em paralelo
- Acesso a múltiplas versões
- Análise de causa raíz
- Reversão de erros cometidos
- Análise de diferenças
--
- Repositório central único
- Apenas trabalho actual existe localmente
- Requer uma ligação de rede
- Exige mais largura de banda
- Operações são lentas
- Workflows simplificados
--
- Usa pelo menos dois repositórios
- Todas as versões existem localmente
- Funciona offline
- Exige mais espaço
- Operações são rápidas
- Múltiplos workflows possíveis
--
- Aceder a https://github.com/new
- Preencher com nome "hello-world"
- Descrição surge nas listagens no site do projeto
- Escolher opção para inicializar com README
- Navegar pelo repositório
git init
--
Ficheiros comuns:
README.md
- Descrição do projeto, como o usar/instalar, etc.LICENSE
- declara em que condições outros podem usar o conteúdo do projetoCONTRIBUTING.md
- explica a terceiros como podem contribuir para o projeto.gitignore
e.gitattributes
- opções avançadas de git
--
- Clicar em '+'
- Clone
- hello-world
- Clone hello-world
- Escolher pasta
git clone [email protected]:HackAveiro/hello-world.git
--
Abrir o ficheiro nu editor de texto e colocar:
# hello-world
Este é um pequeno projeto de aprendizagem
das opções básicas de utilização do git.
Sequência de operações que
serão experimentadas:
* add - selecção de alterações a registar
* commit - registar um conjunto de alterações
* push - remeter as alterações para um servidor central
--
Linha de comandos | Aplicação |
---|---|
git add README.md |
Seleccionar ficheiros |
git commit |
Escrever mensage e clicar em Clone |
git push |
Clicar em "Sync" |
--
- Primeira linha é obrigatória, deve ser inferior a 50 carateres
- Após linha de intervalo pode-se descrever em maior detalhe
- Repetir 3 vezes com outras edições
- Analisar resultado online
--
clone/pull -> add -> commit -> push
--
Cada commit contém:
- Os commits que lhe dão origem
- Um autor, um commiter, uma mensagem
- Um conjunto de alterações
- Um conjunto de dados resultantes
- Um identificador único (SHA):
f643986c985998abd74076afe0247c81e0399512
--
As referências são apontadores para determinados commits.
- tags - apontam para commits fixos, normalmente usadas para marcar uma versão estável (e.g. v3.4)
- branches - apontam para o extremo de uma ramificação, normalmente usadas para marcar uma iniciativa de evolução em curso
--
Linha de comandos | Aplicação |
---|---|
git branch english |
Clicar no ícone no topo junto a 'master' e dar o nome à branch como english |
git checkout english |
Branch seleccionada por omissão |
--
- Normalmente a branch principal chama-se 'master' ou 'develop'
- Em CLI a branch é criada a partir da branch em que estamos
- Em CLI podemos usar o atalho
git checkout -b english
--
Editar a primeira frase para inglês e fazer commit e push para o servidor.
--
- Mudar de volta para a branch principal
- Adicionar conteúdo no FINAL do ficheiro descrevendo os novos passos aprendidos
- Fazer commit e publicar online
- Navegar online
--
Linha de comandos | Aplicação |
---|---|
git checkout english |
Escolher 'english' na lista de selecção no topo |
git diff master |
Clicar em 'Compare', escolher 'master' e analisar grafo no topo |
git merge master |
Clicar em 'Update from master' |
git push |
Clicar em Publish ou Sync |
--
branch A -> checkout A -> commit -> checkout B -> merge A
--
Fork
- Permite criar, numa plataforma de alojamento, uma cópia integral de um projeto e evoluir o mesmo livrementePull Request
- Pedido de autorização, discussão e melhoria colaborativa da integração de uma ramificação de um projeto
Estas funções foram popularizadas pelo GitHub mas já se encontram disponíveis em qualquer plataforma de alojamento de git.
--
- https://github.com/HackAveiro/hackaveiro.github.io
- Clicar em 'Fork'
--
- Fazer git clone do VOSSO fork
- Fazer 1 ou mais commits
- Sincronizar para o servidor
--
- Navegar para a própria branch, online
- Clicar em 'Create Pull Request'
- Escolher como destino o 'master' da conta 'HackAveiro'
- Submeter
--
--
- Issues, Wiki, Permissions
- Alojamento de páginas - https://pages.github.com
- Pequenos scripts - https://gist.github.com
--
Comando | Descrição |
---|---|
git status |
Apresenta em que branch/commit estamos, ficheiros alterados, etc. |
git commit -a |
Adiciona todos os ficheiros antes de fazer commit |
git checkout -- <file> |
Descarta alterações não commited de um certo ficheiro ou pasta |
git log |
Apresenta o histórico de evolução que levou até ao ponto actual |
`git reset --HARD | Resolve muitos problemas, ignora tudo e coloca-nos numa certa referência |
--
--
Beijinhos