O Git é um sistema de controle de versão livre e gratuito para gerenciar o código fonte dos seus projetos. Assim como outros sistemas deste tipo, o Git permite que você mantenha um histórico das alterações realizadas no seu aplicativo, permite que você separe a implementação de novas funcionalidades e a correção de bugs na sua versão em produção, além de auxiliar na gestão do seu projeto. Neste post vou explicar como instalar e como utilizar as funções principais do Git. Apenas para complementar vou falar um pouco do GitHub também.
Uma diferença importante em relação a maioria dos sistemas de controle de versão é que cada usuário de um repositório Git possui todo o histórico de alterações. Muitos sistemas possuem um servidor central, de onde você busca e confirma suas alterações – para verificar o histórico você necessita de acesso a este servidor. No caso do Git você tem tudo o que precisa no seu repositório local. Você acessa outros repositórios apenas para sincronizar as alterações de outras pessoas com as suas.
Instalação
A instalação do Git é bem simples. Visite o site http://git-scm.com/ para downloads e instruções adicionais.
Linux
No Linux não existe a necessidade de baixar nada do site, você pode utilizar a linha de comando diretamente.
Debian/Ubuntu
Em distribuições derivadas do Debian, utilize o apt-get. Pode ser necessário utilizar sudo antes do comando.
1 |
apt-get install git |
Fedora
1 |
yum install git |
Windows
No Windows a instalação é bem simples também. Basta fazer o download do instalador e executá-lo. Será iniciado o assistente de instalação. Não altere nenhuma das opções padrão, a não ser que você saiba o que está fazendo. O instalado vai criar dois aplicativos, Git GUI e Git Bash. O Git GUI é uma pequena interface para alguns comandos, enquanto o Git Bash é um utilitário de linha de comando que permite que você trabalhe da mesma maneira que no Linux sem necessidade de alterar o PATH do Windows (você pode alterar no momento da instalação se quiser).
Mac
Para fazer a instalação no Mac, basta fazer o download e executar o arquivo. Execute o assistente e você está pronto.
Comandos
Agora vamos ao que interessa. O Git tem diversos comandos, mas as principais funcionalidades são criar/clonar repositórios, adicionar/confirmar nossas alterações, buscar/enviar (sincronizar) alterações para outros repositórios e criar/mesclar ramificações.
Criar / Clonar
Para que o código fonte possa ser controlado é necessário criar um repositório do Git. Esse repositório deve ser criado dentro do diretório onde está o seu código – será criado um sub-diretório .git com as informações das versões.
Criar um novo repositório:
1 |
git init |
Clonar um repositório local:
1 |
git clone /caminho/do/repositorio |
Clonar um repositório remoto:
1 |
git clone usuario@servidor:/caminho/do/repositorio |
Você pode clonar repositórios do Github usando “git clone https://github.com/usuario/repositorio.git” ou “git clone git@github.com:usuario/repositorio.git”.
Adicionar / Confirmar
Quando você cria um novo arquivo ou modifica um arquivo que seja controlado pelo Git, você precisa adicionar essas mudanças para que elas sejam confirmadas no próximo commit. Se você iniciar um novo repositório com arquivos já existentes, significa que todos os arquivos são novos, então precisa adicionar todos eles antes do commit.
Adicionar modificações de um arquivo:
1 |
git add <arquivo> |
Adicionar todos os arquivos (muito usado após o git init):
1 |
git add . |
Realizar o commit (confirmação) das alterações:
1 |
git commit -m "Mensagem de commit" |
Sincronizar
Quando fazemos o commit estamos confirmado essa alteração apenas localmente – no nosso repositório. Para trabalharmos com outras pessoas precisamos sincronizar nossas alterações com outros repositórios. Isso implica enviar nossas alterações e também buscar os commits de outras pessoas.
Conectar nosso repositório a um repositório remoto (origin é o nome que vamos dar para o repositório remoto):
1 |
git remote add origin <servidor> |
Enviar alterações para o servidor remoto (origin é o repositório remoto e master é a ramificação):
1 |
git push origin master |
Buscar alterações do servidor remoto:
1 |
git pull origin master |
O git pull faz um git fetch (busca o código) e um git merge (mescla a ramificação) de uma vez só. É mais prático, mas você deve tomar cuidado para não fazer o pull da ramificação errada, ou o Git vai atualizar seu código com o código errado.
Ramificações
Para finalizar os comandos básicos, um grande benefício de um sistema de controle de versão é o uso de ramos (branches). Você pode manter seu código principal no branch master e fazer novos desenvolvimentos no branch dev. Isso permite que você corrija eventuais bugs direto no branch master e atualize seu servidor de produção com este branch, sem se preocupar com os novos desenvolvimentos que existem em dev.
Criando uma ramificação (branch):
1 |
git checkout -b <ramo> |
Trocar para o ramo master (você sempre estará trabalhando com um ramo de cada vez, podendo trocar qual o ramo está sendo modificado):
1 |
git checkout master |
Remover um branch:
1 |
git branch -d <ramo> |
Mesclar as alterações de um ramo em outro ramo (se estamos em dev e queremos copiar as alterações feitas em master):
1 |
git merge master |
Ver diferenças entre dois ramos:
1 |
git diff <ramo_origem> <ramo_destino> |
GitHub
Um dos grandes atrativos do Git é a existência do GitHub. Se você não conhece ainda, tem alguma coisa errada. O GitHub é um repositório de código fonte onde você pode compartilhar seu código abertamente (existem muitos projetos open source no GitHub) ou não, utilizando repositórios privados para a sua empresa. Desta maneira diversas pessoas podem trabalhar no mesmo código mesmo estando em locais completamente diferentes.
Você pode criar seu próprio servidor de repositórios Git, mas o GitHub oferece alguns serviços adicionais como controle de atividades (issues – podem ser erros, funcionalidades novas, etc). Cada atividade recebe um número único. No momento em que um desenvolvedor fizer um commit do seu código, ele pode associar o número desta atividade para que você possa verificar exatamente o que foi feito. Ele ainda oferece uma série de funcionalidades “sociais” para você que deseja compartilhar seu código abertamente.
Interfaces Gráficas
Existem vários aplicativos que permitem trabalhar com o Git através de interfaces gráficas, sem a necessidade de digitar todos os comandos manualmente. Esses aplicativos implementam as funcionalidades em uma interface gráfica, facilitando a sua vida. Aliás, qualquer bom editor de código já é integrado ao Git (NetBeans, KomodoIDE, etc). Uma lista de GUIs esá em http://git-scm.com/downloads/guis.
Conclusão
Se você ainda não utiliza um sistema de controle de versão, o Git é uma boa alternativa para mudar isso. Para quem trabalha em equipe e precisa controlar o que é feito no seu aplicativo (quem não precisa?), o Git é uma ótima alternativa. Mesmo que você trabalhe sozinho ter esse controle é muito importante. É uma garantia de que você vai conseguir voltar atrás caso necessário.
Links
Alguns links interessantes para você que quer aprender a utilizar o Git:
- Site oficial: http://git-scm.com/
- Ferramenta para testar o Git: http://try.github.com/
- Guia prático: http://rogerdudler.github.io/git-guide/index.pt_BR.html
- Cheat sheet: http://rogerdudler.github.io/git-guide/files/git_cheat_sheet.pdf