Nós já falamos aqui mesmo no 100loop de algumas ferramentas (Descobrindo o Team Foundation Service Preview, Crie sua conta para o Team Foundation Service gratuitamente) para versionar arquivos, mas existem muitas outras. Dentre estas outras alternativas, a tecnologia que mais cresce é o GIT. E não é a toa que tem sido abraçado pela grande maioria da comunidade open source, além de ser usado por profissionais autônomos, agências digitais e até mesmo por grandes fábricas de software.

Mas afinal o que é o GIT?

GIT é um serviço para versionar arquivos. Por ser baseado em tecnologias “open source” e inicialmente desenvolvimento por Linus Torvalds, o GIT pode ser instalado e distribuído livremente como serviço por vários websites. Alguns destes sites podem redistribuir o serviço do GIT gratuitamente como o Bitbucket ou de forma paga como o GitHub (apenas repositórios públicos são free). Mas engana-se quem acredita que o GIT só é útil para desenvolvedores, pois a maioria das pessoas que trabalham criando qualquer tipo de arquivos (designers, webstandards e até jornalistas) poderiam se beneficiar das vantagens de usá-lo.

A exemplo de outras ferramentas de versionamento, o GIT também oferece muito mais do que o simples armazenamento de arquivos. Podemos gerenciar o desenvolvimento de um projeto, lidando com a gestão controlada de bugs e tasks, controlando responsabilidades e muito mais.

Principais benefícios

  • Trabalho em equipe:
    Imagine ter que gerenciar várias pessoas desenvolvendo o mesmo sistema e muitas vezes trabalhando nos mesmos arquivos. Para notar esta vantagem, não precisamos nem mesmo exagerar no exemplo… conheço pessoas que trabalham juntas desenvolvendo websites, um deles é programador PHP e outro é designer e lida mais com a estrutura HTML e CSS dos sites. Um não dá nenhum pitaco no código do outro, mas mesmo assim eles entram em conflitos constantes, pois ambos trabalham trocando arquivos por FTP (dá para imaginar quantas vezes já perderam código um do outro?). Com o GIT cada profissional poussui uma espécie de servidor próprio, onde armazena os código que alterou em pequenos pacotinhos (commits). E a qualquer momento o desenvolvedor pode enviar estes pacotes locais para um servidor principal (online). E este mesmo servidor é quem se responsabiliza por juntar (fazer o merge) destes arquivos.
  • Simplicidade na criação de “Branches”:
    Suponha que vocês está prestes a fazer uma grande modificação no seu projeto, até aí nenhum problema, né? Mas e se você não tivesse certeza de que essa modificação vai ser bem sucedida… quer dizer… você vai mudar 80% dos arquivos do seu projeto, mas pode acabar tendo que voltar ao ponto exato antes de começar a fazer essa grande implementação. Em situações como esta, você pode criar um “branch”, que nada mais é que uma ramificação do seu projeto. Você pode trabalhar nesta ramificação e quando acabar, você decide se deseja que todas estas alterações serão aplicadas ao projeto principal ou simplesmente joga fora. O mais legal é que você pode trabalhar nas duas versões ao mesmo tempo. O GIT permite que você alterne entre os arquivos de cada uma das versões com um simples comando.

O principal desafio

Sem dúvida a maior barreira para a adesão de um número maior de usuários do GIT é a temida tela preta do promp de comando (o GIT BASH). É claro que usuários de windows acostumados à interfaces gráficas, podem achar um pouco estranho de início. Eu mesmo tive certas dificuldades na adoção desta tecnologia como minha principal ferramenta de versionamento. Por outro lado, uma vez que você adquire certa desenvoltura com os comandos. Em algum tempo o ponto fraco acaba virando um ponto forte, pois fazendo tudo nas linhas de comando você ganha muita agilidade e controle.

Para minha sorte, quando estava aprendendo os macetes das linhas de comando do GIT eu pude contar com alguns colegas de trabalho já bastante maduros nesta tecnologia. Mas se você não tem essa oportunidade, já existem soluções muito elegantes para auxiliar neste aprendizado. Uma das mais legais é o “TryGIT” (Clique aqui e conheça), um curso gratuito da Code School.

O tryGit – Curso de introdução rápida à Git

Quando você iniciar o curso, verá uma tela como esta. Ali no topo você pode ver uma barra de progresso estilizada com carinhas do Octocat (mascote do Github) e, à medida que você avança no curso elas vão acendendo.  Logo abaixo uma descrição do tópico que está sendo abordado no curso, e o comando correspondente ao tópico.

O mais legal, é que você pratica os comandos num simulador do prompt de comando (Git Bash). O simulador é um pouco limitado e possui alguns bugs, mas cumpre bem o objetivo.

git-curso-prompt-simulacao-menor

Comandos que você precisa saber

Antes de mais nada, por favor faça o curso. Dedique pelo menos uma hora para conhecer o GIT com ele, não é necessário muito mais que isso para concluir o programa do curso que é bastante introdutório. Mas existem comandos que você precisa saber para começar a usar o GIT, são o famoso “arroz com feijão”.

Criar um repositório local: Basta abrir uma pasta qualquer no seu computador através do ‘Git Bash’. Lembre-se de usar os caminhos de pasta como no DOS usando ‘cd /d/pasta/subpasta’. Uma vez que você esteja na pasta que usará para o seu projeto é só executar o comando:

git init

Criar uma cópia local de um repositório ‘online’: Se você estiver usando um repositório na nuvem, então você vai precisar vincular o repositório virtual com o seu repositório local usando git clone:

git clone <usuário@servidor:/caminho/para/o/repositório>

Exemplo:

git clone git@bitbucket.org:paulovich/meuprojeto.git

Visualizar alterações: A  qualquer momento você pode digitar ‘git status’ para verificar alterações no seu repositório. Esse comando vai lhe mostrar arquivos foram adicionados, modificados, deletados, etc.

git status

Adicionar arquivos ao repositório: Sempre que você criar arquivos no seu repositório, eles não serão gerenciados automaticamente, por isso é necessário que você os adicione ao repositório.

git add <caminho>

Exemplo: Se você quiser adicionar todas as alterações você pode usar simplesmente um ponto (.)

git add .

Criar um pacote de alterações: Sempre que você precisar enviar alterações para o servidor, você deverá adicioná-las em pequenas  porções de código (commits). É uma boa (e quase obrigatória) prática, passar o parâmetro -m ‘comentário’ para identificar estas modificações.

git commit

Exemplo usando o parâmetro de comentário:

git commit -m 'modificacoes e alteracoes sem caracteres especiais sempre'

Submeter alterações locais (commits) para o repositório online: Depois de montar os commits, você pode submetê-los para o repositório online usando o comando git push.

git push origin <branch>

Você não precisa saber nada sobre ‘branch’ agora, basta trabalhar no master:

git push origin master

Baixar alterações online para o repositório local: Da mesma forma que você pode enviar commits para a nuvem, você pode baixá-los para o seu computador e sincronizar com alterações feitas por outras pessoas que trabalham no mesmo projeto.

git pull

Sabendo estes comandos, você já pode ir para a “guerra”, mas sempre existem muitos workarrounds que vocês precisam conhecer para resolver “problemas” comuns de conflitos entre versões, remover arquivos submetidos por engano e outras situações que estão fora do workflow padrão de trabalho. Uma boa leitura é este guia rápido muito bem explicado.

Um abraço e não deixe de comentar.