Curso de Versionamento com Git e GitHub
Iniciamos 2021 ministrando um curso de Versionamento com Git e GitHub em que as vagas se esgotaram rapidamente.
A ideia é disseminar conhecimento sobre o Git e com isso diminuir a prática de armazenar código no pendrive e usar aquele velho método de criar versões no nome do arquivo ( projeto.zip, projeto20210101.zip, projeto.bkp, projeto.old etc). Afee!!!
Vamos parar de compartilhar os códigos por email enviando zip para lá e para cá. Depois do segundo email, ninguém mais sabe qual a última versão.
Preparei um material bem legal, desde a introdução ao uso do controle de versão. Como sou ‘dinodev’ contei a história do CVS e da tartaruguinha (tortoise), do SVN (Subversion), que são controles de versão centralizados, e da revolução que foi o Git, um controle de versão distribuído.
Vale a pena assistir o lendário Tech Talk: Linus Torvalds on git, onde Linus conta que levou 2 semanas para desenvolver o Git por conta de um insatisfação com o BitKeeper:
“The end result was I decided I can write something better than anything out there in two weeks, and I was right.” Tech Talk: Linus Torvalds on git
Moral da história:
Nunca desafie um programador motivado!
Depois de apresentar de forma conceitual o git por dentro, partimos para prática, com uso do console (Linux ou Mac) ou gitbash (Windows), desde a instalação.
Alinhamos o vocabulário:
- Sistema de Controle de Versão (SCM)
- Commit
- Repositório (repo)
- Working Directory (Diretório de trabalho)
- Checkout
- Staging Area / Staging Index / Index
- SHA (Secure Hash Algorithm)
- Branch
Criamos a pasta, inicializamos o repositório local (git init), examinamos a pasta oculta .git, clonamos (git clone) um repositório remoto e comparamos utilizando git status, git show, git diff e o git log e suas variações.
Trabalhamos com os principais comandos básicos para versionar como: git add e git commit. Criamos branchs (git branch), tags (git tag) e alternamos entre os branchs e tags (git checkout). Criamos cenários para combinar branchs (git merge):
- Fast-forward merge
- Regular merge
- Fail Merge
Podemos também desfazer ou corrigir problemas com os commits usando:
- git commit –amend
- git revert
- git reset.
Trabalhamos com o github e seus repositórios remotos sincronizando nosso repositório local com o github usando o git remote, git push e o git pull.
Sabemos que foram muitas informaões em um curto espaço de tempo, mas fiquei muito feliz com resultado e com todos os feedbacks.
Agradeço a todos que participaram.
Espero vocês nos próximos eventos.