O Git é um sistema de controle de versão. Com o Git você não perderá seu trabalho, vai poder voltar para a versões anteriores, recuperando a versão do seu código de antes de ter cometido o erro e poderá criar e trabalhar diversas versões em paralelo.
Uma ótima leitura que indico é o livro Pro Git, escrito por Scott Chacon. Ele descreve corretamente sobre o controle de versão. Olhe só:
O que é controle de versão, e por que você deve se importar?
“O controle de versão é um sistema que registra as mudanças feitas em um arquivo ou um conjunto de arquivos ao longo do tempo, de forma que você possa recuperar versões específicas.
Se quer manter todas as versões de uma imagem ou layout, usar um Sistema de Controle de Versão (Version Control System ou VCS) é uma decisão sábia. Ele permite reverter arquivos e projetos inteiros para um estado anterior, compara mudanças feitas ao decorrer do tempo, vê quem foi o último a modificar algo que pode estar causando problemas, quem introduziu um bug e quando, e muito mais. Usar um VCS normalmente significa que caso tenha estragado ou perdido algum arquivo, poderá facilmente reavê-los. Além disso, você pode controlar tudo sem maiores esforços.”
Vamos lá!
Bom, depois dessa aula com Scott Chacon, vamos ver alguns códigos!
Lembrando que todos os comandos aqui devem ser feitos pelo Terminal, Console, GitBash, entre outros e o não recomendado Prompt de Comando do Windows, incluindo entradas e saídas de pastas, tudo por comandos!
Iniciando o Git
Entre no diretório que deseja controlar a versão e inicie o Git assim:
Feito isso, seus arquivos ainda não estão sendo versionados, mas eles estão esperando para serem adicionados no estágio de controle. Para fazer isso digite o comando
Se você precisa adicionar todos os arquivos do diretório, basta digitar:
Saber o status do projeto é importante. Com o comando abaixo você consegue ver quais arquivos estão fora do controle, quais foram modificados e estão esperando por uma descrição de modificação etc:
Voltando ao estágio anterior do adicionamento:
Commit – Comitando:
Adicionando e comitando ao mesmo tempo:
Voltando commits a versões anteriores
Voltar um commit:
Voltar dois commits:
Voltando um commit e deixando o arquivo no estagio anterior:
Voltando um commit e excluindo o arquivo, deixando no estágio anterior:
Verificando o histórico de commits:
Verificando o que foi mudado, diferença entre um arquivo e outro:
Verificando os 2 últimos commits:
Mostrando as estatísticas de todos os commits:
Mostrando todos os commits, cada um em uma linha:
Mostrando todos os commits dos últimos 2 dias até o momento atual
Criando um branch – uma ramificação
Verificando em que branch você está
Voltando para o branch master
Jogando o branch criado no branch master
Entre como branch master:
Grudando o branch criado no branch master sem o commit
Somente localmente – localhost, entre como branch master:
Removendo um branch:
Vendo branchs remotos:
Mostrando o início do hash, quem comitou, quanto tempo atrás, mensagem: descrição do commit:
Deletando arquivos:
Deletando todos os aquivos removidos ao mesmo tempo:
Ignorando arquivos
Existem alguns arquivos que muito provavelmente você não vai precisar versionar, como por exemplo os arquivos de cache do SASS, arquivos de configuração e etc. Nesse caso você precisa fazer com que o controle de versão ignore estes arquivos. Para tanto, crie um arquivo chamado .gitignore. Feito isso, dentro deste arquivo, digite o nome ou o endereço das pastas que você quer ignorar. Um exemplo:
O arquivo .gitignore fica na raiz do projeto.
Clonando e puxando alterações de projetos
Clonando um projeto remoto:
Fazendo um clone de outros branchs:
Trazendo, puxando as alterações feitas por outros usuários:
Sincronizando tudo que está no repositório remoto:
Enviando o(s) projeto(s), arquivo(s) para o repositório:
Enviando um branch para o repositório:
Tags
As tags servem para marcar uma etapa. Imagine que você vai lançar uma versão, que resolve uma série de problemas. Você pode marcar aquela etapa criando uma tag. Assim fica simples de fazer qualquer rollback do projeto para uma tag específica em vez de voltar para um commit. Você sabe que tudo o que foi feito até aquela tag está funcionando.
Criando tags:
Listando tags:
Enviando a tag para o repositório
Removendo as tags criadas localmente:
Removendo tag no repositório remoto:
Concluindo
Se você quer continuar ou iniciar seus estudos com Git, indico o link do livro citado acima, é um ótimo começo, se tiver problemas com o inglês, encontrará várias versões em português.
O Akita fez um screencast para quem está começando com Git. Vale a pena ver.
O pessoal da CodeSchool juntamente com o GitHub fizeram uma página exclusivamente para ensinar Git na prática. Visite aqui.
Há também a documentação do Git que é bastante completa.