Este guia tem o intuito de demonstrar a instalação e utilização básica do sistema de controle de versão de códigos Git.
Tudo o que for demonstrado aqui pode ser utilizado em qualquer sistema operacional com Git instalado, mas mantendo o foco para utilização interna do Git, portanto não será abordada a utilização em sites como GitHub e BitBucket.
Vale lembrar que esse guia apenas demonstra funcionalidades básicas, ou seja, estão incluídos e explicados comandos com foco para o dia-a-dia.
OBS: No Git não existem papeis fixos, ou seja, não existem clientes e servidores definidos, pois o Git acaba dependendo muito mais do protocolo que será utilizado para a transferência de dados (Exs. HTTP, SSH) que uma hierarquia.
Mas para entendermos melhor serão utilizados os termos cliente e servidor, sendo o cliente uma máquina que consome repositórios e servidor uma máquina que disponibiliza repositórios.
Para aproveitar melhor e evitar problemas opte por centralizar os repositórios em uma única máquina.
Primeiro, baixe o Git do site oficial.
Considerando que o Git foi baixado, faça uma cópia do seu 'find.exe' e 'sort.exe' que estão localizados, provavelmente, em 'C:\system32'.
Feito isso, inicie o instalador e siga os passos abaixo:
-> Welcome to the Git Setup
Next >
-> Information
Next >
-> Select Components
Next >
-> Adjusting your PATH environment
Selecione a opção 'Run Git and included UNIX tools from the Windows Command Prompt'
Next >
-> Choosing the SSH executable
Selecione a opção 'Use OpenSSH'
Next >
-> Configuring the line ending conversions
Selecione a opção 'Checkout Windows-style, commit Unix-style line endings'
Next >
Entre no terminal como um usuário normal e digite:
$ sudo apt-get install git git-core
Com o Git instalado precisamos definir algumas coisas para a sua utilização, como nome e email que aparecerão nos commits, e caso seja feita a utilização de transferência de arquivos via SSH, uma chave RSA.
OBS: Esses passos devem ser feitos independente do sistema operacional utilizado.
Configure o nome e o email com o comando 'git config', eles aparecerão publicamente em commits, que servem para indicar quem fez as alterações, falaremos mais sobre o commit adiante.
$ git config --global user.name "Seu nome"
$ git config --global user.email "seunome@email.com"
Para conferir se está tudo configurado corretamente.
$ git config --global user.name
$ git config --global user.email
Caso queira apagar as configurações.
$ git config --global --unset user.email
$ git config --global --unset user.name
OBS: Todas as configurações feitas ficam salvas em um arquivo chamado '.gitconfig' no diretório home de seu usuário.
Um dos modos mais comuns de utilizar Git é via SSH, para facilitar a utilização, ou seja, não ter que digitar a senha a todo o momento, gere uma chave SSH.
$ ssh-keygen -t rsa -C "Local Server"
A chave pode ser gerada com uma senha simples ou até em branco, de a preferência da utilização com senha.
O parâmetro '-C "Local Server"' é um comentário, utilize para indicar onde será utilizada essa chave.
Depois de gerada a chave pegue a chave pública, provavelmente o arquivo 'id_rsa.pub' dentro do diretório '.ssh' localizado no seu diretório home, e envie para o administrador do servidor onde está o Git.
Com o ambiente já preparado, podemos (finalmente) começar a utilizar o Git.
Apesar de existirem diversos clientes gráficos somente abordaremos a utilização via linha de comando.
OBS: Todos os comandos devem ser feitos dentro do diretório do repositório desejado.
Existem duas maneiras de lidar com repositórios, no lado do cliente e no lado do servidor.
Para que toda a equipe possa utilizar o mesmo repositório, precisamos iniciar o repositório no servidor.
$ mkdir repositorio
$ cd repositorio
$ git init --bare
O comando 'git init --bare' criará a estrutura de diretórios e arquivos responsáveis por abrigar os arquivos.
No cliente o processo de inicialização é bem similar:
$ mkdir repositorio
$ cd repositorio
$ git init
OBS: Os comandos 'mkdir' e 'cd' não pertencem ao Git.
Após todas as alterações feitas precisamos envia-las.
O fluxo de envio é basicamente o seguinte:
Após cada alteração (add/rm), precisamos detalhar o que foi feito/porque foi feito, e isso é feito com um commit, após isso podemos enviar as alterações com um push.
Para um arquivo ser incluído utilize o comando 'git add' e nome do arquivo.
$ git add README
Para um arquivo ser removido utilize o comando 'git rm' e nome do arquivo.
$ git rm README
A cada inclusão/alteração/exclusão de arquivos, existe a necessidade de especificar o que foi feito, para isso utilizamos o comando 'git commit'.
$ git commit -m "Mensagem"
O parâmetro -m é utilizado para quando queremos descrever um commit na própria linha de comando.
Caso necessite de um maior detalhamento apenas utilize o comando 'git commit' e o editor de textos padrão de seu usuário será aberto.
OBS: O comando 'git commit' só funciona após alguma alteração no repositório (add/rm).
Depois de feitas às alterações e comentadas, pode ser feito o envio para o servidor com o comando 'git push' seguida da rota.
$ git push origin master
Aprendemos anteriormente como enviar alterações para o servidor, mas podemos ter diferentes rotas de envio.
Com o exemplo do comando 'git init', no lado do cliente, precisamos definir para onde irão os arquivos com o comando 'git remote add'.
$ git remote add origin git@192.168.0.100:/home/webmaster/repositorio
Como não existe nenhuma rota no exemplo, ela será criada como master.
Caso seja necessário renomear uma rota utilize o comando 'git remote rename' rota_antiga rota_nova.
$ git remote rename origin destination
OBS: Esse comando somente renomeia a rota.
Caso seja necessário trocar a URL de destino utilize o comando 'git remote set-url' rota nova_url.
$ git remote set-url origin git@192.168.0.100:/home/webmaster/nova_url
Caso não seja mais necessária à rota utilize o comando 'git remote rm' rota.
$ git remote rm origin
Para verificar todas as rotas do repositório utilize o parâmetro -v no comando 'git remote'.
$ git remote -v
Para obter um repositório basta utilizar o comando 'git clone' seguido da URL.
$ git clone git@192.168.0.100:/home/webmaster/repositorio
Um branch auxilia no momento de criar, testar ou corrigir funcionalidades.
Pensando no repositório como uma árvore, um branch seria um ramo dessa árvore, mas funcionando de forma independente, o que é ideal para coisas mais experimentais.
Para criar um branch utilize o comando 'git branch' e informe o nome do branch.
$ git branch testes
Para mudar de branch, utilize o comando 'git checkout' e o branch desejado.
$ git checkout master
Para criar e automaticamente mudar de branch.
$ git checkout -b testes
O parâmetro '-b' no comando 'git checkout', verifica a existência do branch 'testes' e muda para ele, caso não exista ele o cria.
Após baixarmos um repositório para a máquina, ele provavelmente receberá modificações, ou seja, ele não é atualizado automaticamente.
Para atualizar o repositório precisamos de dois comandos 'git fetch' e 'git merge' O comando 'git fetch' baixa as alterações, mas não as mescla no repositório, para mesclarmos as alterações precisamos do comando 'git merge'.
$ git fetch
$ git merge origin/master
Para não ter que ficar digitando dois comandos todas as vezes, basta utilizar o comando 'git pull'.
O comando 'git pull' executa sozinho, e de uma vez, os comandos 'git fetch' e 'git merge', atualizando o repositório.
$ git pull
OBS: Cuidado com conflitos com alterações que não foram enviadas.
Você pode visualizar as alterações dos repositórios com o comando 'git log'.
$ git log
OBS: Essa forma exibe todos os commits de forma detalhada, incluindo autor e email do commit.
Para uma exibição mais simples, ou seja somente com a mensagem do commit utilize o parâmetro '--oneline'.
$ git log --oneline
Quando nos esquecemos de algum comando ou parâmetro o git possui manuais próprios, basta utilizar o comando 'git help'.
$ git help
Quando a dúvida é relacionada a um comando em específico, basta informar o comando.
$ git help commit
OBS: Quando o comando é executado em uma máquina com Windows o manual irá aparecer no navegador padrão da máquina, se executado em Linux/Mac OS X ele abrirá uma man-page normalmente.
O resumo demonstra como operar um repositório, adicionar um arquivo, adicionar um commit, e enviar as alterações em dois cenários um sem existir o repositório e o outro existindo o repositório.
Faça esses comandos no servidor:
$ mkdir repositorio
$ cd repositorio
$ git init --bare
Faça esses comandos no cliente:
$ mkdir repositorio
$ cd repositorio
$ touch README
$ git init
$ git add README
$ git commit -m "Inclusão do README"
$ git remote add origin git@192.168.0.100:/home/webmaster/repositorio
$ git push -u origin master
Comandos apenas para o cliente:
$ git clone git@192.168.0.100:/home/webmaster/repositorio
$ git add README
$ git commit -m 'Comentário sobre inclusão/atualização/modificação feita'
$ git push -u origin master
Os links abaixo são guias mais detalhados para utilização do Git:
Além dos links de ajuda, esses links ajudam a compreender mais sobre o assunto e ajudaram a escrever esse guia.
Para continuar os estudos, cadastre-se nesses sites e suba os seus repositórios:
Para aprender passo a passo:
Sem dúvida nenhuma o Git é uma ferramenta poderosa, todos os comandos demonstrados nesse guia são para auxiliar no dia-a-dia da utilização do Git.
Obviamente existem diversos comandos e parâmetros que não foram citados aqui, mas esse não é o intuito deste guia.
O intuito é dar uma noção um pouco além da básica para a operação desse sistema de controle de versão.