Nesse post vou mostrar pra você alguns comandos do Git que são essenciais no dia a dia dos programadores. Esses comando irão ajudar você a ter um workflow mais dinâmico e fluido.
Instalação
- Windows: http://msysgit.github.com
- Mac OS X: https://code.google.com/p/git-osx-installer/downloads
- Ubuntu: $ sudo apt-get install git
- Fedora: $ sudo yum install git
Configurar informações de nome e email são importantes para que possa haver a identificação dos commits.
$ git config --global user.name "Seu Nome"
$ git config --global user.email seu@email.com
<h2><span class="quote"><span style="font-weight: normal;">Se você utiliza serviços como o GitHub e/ou Bitbucket, é interessante que o email utilizado nesses serviços sejam iguais, assim você mantém uma única configuração, facilitando assim o processo de commit e deploy de aplicações".</span></span></h2>
<h2>Comandos</h2>
<strong>Inicializando um projeto versionado</strong>
$ git init
O comando acima deve ser executado dentro do diretório do projeto na qual você deseja versionar. Após executar o comando será retornada a seguinte mensagem:
Initialized empty Git repository in /diretorio/escolhido/.git/
<blockquote><strong>Rastreamento de arquivos</strong>
$ git status
Esse comando vai listar o status dos arquivos, mostrando os que ainda não foram adicionados para o controle de versão.</blockquote>
<strong>Adicionando arquivos para rastreamento</strong>
$ git add .
Adiciona todos os arquivos não rastreados retornados pelo comando $ git status.
$ git add arquivo.ext
Adiciona um arquivo específico para o rastreamento.
<blockquote><strong>Gravando um arquivo no repositório</strong>
$ git commit -m "Mensagem que identificará o commit"
Esse comando vai fazer com que os arquivos adicionados ao rastreamento através de $ git add sejam gravados no repositório.
O -m utilizado serve para indicar a mensagem do commit.</blockquote>
Após executar esse comando, uma mensagem similar à mostrada abaixo será exibida:
[master (root-commit) 8666888] Arquivo inicial
1 file changed, 2 insertions(+)
create mode 100111 arquivo.ext
<span class="quote">Sempre que fizer alterações em arquivos, você precisará executar um $ git add e depois um $ git commit.</span> <strong>Verificando as alterações (log)</strong>
$ git log
Após executado vai listar todas as alterações realizadas no repositório. O resultado será algo similar a:
commit 7878787000000000000000000000000000000000
Author: Seu Nome
Date: Fri Apr 11 21:25:17 2014 -0300
Inserindo conteudo
commit 8666888000000000000000000000000000000000
Author: Seu Nome
Date: Fri Apr 11 21:21:31 2014 -0300
Arquivo Inicial
<blockquote><strong>Ignorando arquivos</strong>
Pode ser que em algum projeto você não precise adicionar todos os arquivos e/ou diretórios para o repositório remoto, para isso você pode usar o arquivo .gitignore. Basta criar um arquivo chamado ".gitignore" na raiz do projeto e depois adicioná-lo ao rastreamento e ao repositório.
Nesse arquivo você define, em cada uma das linhas, os arquivos e diretórios que devem ser ignorados. Por exemplo:
<strong><em>*.log
imagens/.bmp</em></strong>
Na primeira linha ignoramos todos os arquivos com a extensão .log, e na segunda todas as imagens com extensão .bmp do subdiretório imagens.</blockquote>
<strong>Remover arquivos do repositório</strong>
$ git rm arquivo.ext
Esse comando remove um arquivo do repositório.
<blockquote><strong>Renomear arquivos do repositório</strong>
$ git mv arquivo.ext meu-arquivo.ext
O comando mv seguido do nome atual em seguida do novo nome fará essa mudança.</blockquote>
<strong>Mover arquivos dentro do repositório</strong>
$ git mv meu-arquivo.ext files/meu-arquivo.ext
O mesmo comando, mas agora o nome do novo arquivo ganhou a identificação de um diretório, e o nome permaneceu o mesmo.
>Ao mover um arquivo para um diretório, esse diretório já deve estar criado.
<strong> </strong>
<blockquote><strong>Apontando o projeto para o repositório remoto</strong>
$ git remote add origin https://domain.com/repositorio.git
Se você estivesse usando o GitHub, por exemplo, o endereço do repositório remoto seria https://github.com/seunome/repositorio.git</blockquote>
<strong>Enviando as alterações locais para o repositório remoto</strong>
$ git push
Esse comando faz o envio dos commits dados no repositório local, para o repositório remoto.
<strong> </strong>
<blockquote><strong>Copiando um repositório remoto para o ambiente local</strong>
$ git clone https://domain.com/repositorio.git
Esse comando cria um clone do repositório remoto no seu amebiente local, já com a origem configurada.</blockquote>
<strong>Listando os repositórios remotos</strong>
$ git remote
Exibe somente o nome do repositório remoto.
$ git remote -v
Exibe o nome e a url.
<strong></strong>
<blockquote><strong>Renomeando o repositório remoto</strong>
$ git remote rename nome-repositorio novo-nome
O comando rename renomeia o repositório remoto.</blockquote>
<strong>Alterando a url do repositório remoto</strong>
$ git remote set-url nome-repositorio http://domain.com/novo-repositorio.git
O comando acima faz com que a url do repositório seja alterada, passando o nome do repositorio e a nova url.
<strong></strong>
<blockquote><strong>Sincronizando o repositório local com o remoto</strong>
$ git pull
Faz com que o repositório local seja sincronizado com o remoto, de modo a receber o que foi feito de alteração e commitado por outro usuário do repositório remoto.</blockquote>
<strong>Criando um branch</strong>
$ git branch nome-branch
Esse comando cria um branch, que é como se fosse um novo diretório, contendo o mesmo conteúdo do branch master, mas que ao ser modificado, não reflete de forma automática no branch master ou em qualquer outro.
<strong></strong>
<blockquote><strong>Listando branches</strong>
$ git branch
Vai listar os branches do repositório local.</blockquote>
<strong>Trocando de branch</strong>
$ git checkout nome-branch
Faz a troca entre os branches, mantendo íntegros os conteúdos de cada um deles.
<strong></strong>
<blockquote><strong>Excluindo um branch</strong>
$ git branch -d nome-branch
Exclui o branch e o seu conteúdo.</blockquote>
<strong>Mesclando as alterações entre os branches</strong>
$ git merge nome-branch -m "Mensagem"
Nesse caso o nome-branch será o nome do branch que possui as alterações a serem adicionadas ao branch em que você está.<strong>
</strong>
<blockquote><strong>Verificando branches que não foram mescladas</strong>
$ git branch --no-merged
O resultado será o nome do branch que ainda possui alterações não mescladas com o branch em que você está.</blockquote>
<strong>Compartilhando branches</strong>
$ git push origin nome-branch
Fará com que o branch identificado por nome-branch seja criado no repositório remoto.
Seja feliz com esses comandos e bons códigos.