Submódulo 3: Git e colaboração para projetos em Python

Site: Lumina
Curso: Python para Iniciantes: Lógica e Programação
Livro: Submódulo 3: Git e colaboração para projetos em Python
Impresso por: Usuário visitante
Data: quarta-feira, 17 set. 2025, 21:09

Descrição

Este submódulo aborda Git e colaboração para projetos em Python, com foco em fluxo de trabalho, ramificações, commit history, versionamento simples e práticas de documentação. Vamos construir hábitos que ajudam a manter o código do portfólio organizado, reprodutível e pronto para demonstração em entrevistas. Ao longo dos slides, conectaremos teoria à prática, incluindo exercícios e referências a fontes oficiais para fundamentar as escolhas de versionamento, organização e colaboração.

Configuração do Repositório e Fluxo de Trabalho Básico

🎯 Configuração do Repositório e Fluxo de Trabalho Básico

Vamos começar do zero: você está construindo o seu portfólio em Python e quer um histórico de mudanças claro e rastreável. A narrativa que vamos seguir é simples, mas poderosa: você cria um repositório local, define a estrutura do projeto, evita versionar arquivos desnecessários e registra as mudanças com mensagens que expliquem o porquê de cada alteração. Conforme a documentação oficial do Git, para iniciar um repositório local basta executar git init para criar um repositório vazio (1). Em seguida, você pode checar o estado dos arquivos com git status e preparar os seus primeiros commits (1).

Git
Imagem ilustrativa

Uma prática essencial é ignorar arquivos que não devem entrar no versionamento. Em projetos Python, há templates específicos de .gitignore, como o Python.gitignore, que listam diretórios comuns a serem ignorados, por exemplo virtualenvs, caches e artefatos de empacotamento (3). Além disso, a GitHub Docs reforça a ideia de ignorar arquivos inadequados para evitar que dados sensíveis ou temporários sejam compartilhados publicamente (4). Esses guias ajudam a manter o repositório limpo e focado no código do portfólio (3)(4).

Ao organizar o fluxo de trabalho, recomendamos criar um repositório remoto quando possível e empurrar as alterações para o repositório remoto. A prática de manter o histórico bem organizado facilita revisões futuras e a demonstração de progresso em entrevistas. A documentação oficial do Git mostra como adicionar um remoto e enviar alterações com git push para o repositório remoto (1); além disso, o livro Getting Started com Git discute como começar de forma estável (2).

Resumo da prática: você terá um repositório local com uma estrutura simples de Python, um README explicando o objetivo do portfólio, um arquivo .gitignore adequado e um conjunto inicial de commits que documenta a evolução do seu projeto. Agora vamos para a próxima etapa: como manter o código organizado com ramificações e revisões de código.

Desafio prático: Crie um repositório local, adicione um README simples com o objetivo do projeto e configure um .gitignore para Python usando o template Python.gitignore. Em seguida, faça um commit inicial com uma mensagem clara (por exemplo: “início do portfólio”). Crie um remoto chamado origin e empurre o branch main para ele. Tente também extrair o conteúdo de uma pasta de exemplo para um novo commit, mantendo o histórico limpo.

Fluxo de ramificações (branches) e pull requests

🌿 Fluxo de ramificações (branches) e pull requests

Agora vamos trabalhar com ramificações para organizar o portfólio. O uso de branches permite isolar mudanças grandes (novas features) ou correções de bugs sem bagunçar a linha do tempo da branch principal. A prática de criar uma branch específica para cada melhoria é amplamente discutida na documentação oficial do Git (1) e é apresentada no guia Getting Started (2). Ao terminar uma feature, abrimos um pull request para revisão de código e integração. Essa etapa facilita a colaboração, permite que outras pessoas revisem as mudanças e ajuda a manter a qualidade do código (observação: este fluxo é comum no GitHub). A gestão de conflitos é uma parte natural desse processo; para resolvê-los, utilize ferramentas de mesclagem locais e escolher uma estratégia de merge adequada (3).

Para um portfólio público, mantenha a branch main ou master sempre estável. O fluxo sugerido é: crie uma branch de feature com nomes descritivos (por exemplo, feature/relatorio-python), termine as alterações, faça commit com mensagens claras, depois publique a branch no remoto e crie o pull request. Em termos de organização de código, a prática de revisão ajuda a detectar inconsistências e a manter o histórico legível (4).

Resumo: ramificações permitem acostumar-se com ambientes de produção, onde várias pessoas trabalham no mesmo projeto simultaneamente. O próximo passo é consolidar tudo com checagens e testes simples, antes de incorporar tudo ao código principal.

Desafio prático: Crie uma branch chamada feature/extrato-relatorio, implemente uma pequena melhoria (ex.: adição de uma função de relatório em Python), execute um commit com uma mensagem descritiva e abra um pull request (mesmo que seja apenas você revendo). Em seguida, tente mesclar a branch de volta para main localmente e resolva um conflito simples simulando uma alteração conflitante.

Versionamento, documentação e portfólio

🧭 Versionamento, documentação e portfólio

Chegamos ao coração da gestão de versões do seu portfólio. Em termos de versionamento, o Git permite marcar pontos importantes do histórico com tags, que funcionam como releases. Use git tag para criar uma etiqueta associada ao último commit ou a um commit específico, facilitando o rastreamento de versões públicas (1). As tags simples costumam seguir uma convenção leve, como v0.1.0, sem grandes complicações. Em paralelo, mantenha o código bem documentado com um README central que sirva como índice para os seus diferentes projetos. A documentação oficial do Git descreve o uso de tags e seu papel no versionamento (1).

Para garantir reprodutibilidade, inclua um arquivo de dependências, como requirements.txt, para congelar as bibliotecas necessárias. Considere também a prática de manter o repositório limpo com um template de .gitignore adequado ao Python (3) e a orientação de Ignorar arquivos sensíveis com as melhores práticas da GitHub (4). A combinação de tags, documentação clara e repositórios bem organizados facilita a demonstração do seu portfólio a recrutadores e equipes técnicas (1)(3)(4).

Além disso, adote abordagens simples de testes de integração para verificar se as mudanças não quebram o funcionamento existente. A integração com pipelines simples de CI pode ser explorada no próximo módulo. Por fim, a consistência entre dependências, documentação e histórico de commits é o que transforma um portfólio em uma vitrine profissional. A visão prática é: versionar com tags, documentar com README e manter o ambiente reproduzível via requirements.txt (1).

Desafio prático: Crie a tag v0.1.0 para o último commit do seu portfólio; adicione ou atualize o README com uma seção de índice de projetos; adicione um arquivo requirements.txt com as dependências usadas no seu projeto de exemplo. Em seguida, inclua também um teste de integração simples para validar que a execução principal continua estável após as alterações.

🎯 Exercícios

🎯 Exercícios: Git e colaboração para projetos em Python

Teste seus conhecimentos com estas questões de múltipla escolha. Cada questão tem apenas uma resposta correta.

Questão 1

Qual comando inicia um repositório Git local, criando a base de versionamento?

Questão 2

Ao definir o escopo de um projeto Python para o portfólio, qual prática favorece a organização da estrutura de diretórios antes de começar a codificar?

Questão 3

Qual entrada típica em .gitignore para Python impede versionar artefatos gerados pela execução do código?

Questão 4

Qual é a prática recomendada para o primeiro commit ao iniciar o repositório?

Questão 5

Qual sequência de comandos é tipicamente usada para conectar o repositório local a um remoto com o nome origin e enviar o estado inicial?