# Trabalhando com Git ## Diretório de trabalho, índice, status Ao trabalhar com Git, os arquivos estarão em um diretório de trabalho. O Git é capaz de identificar os arquivos que estão sob seu controle, suas mudanças, arquivos novos e removidos. Um dos comandos para obter essas informações é git status. Ao remover um arquivo, adicionar um segundo arquivo, e modificar um terceiro, a saída de git status é a seguinte: ~/project$ git status On branch master Changes not staged for commit: (use "git add/rm ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) deleted: INSTALL modified: README Untracked files: (use "git add ..." to include in what will be committed) AUTHORS no changes added to commit (use "git add" and/or "git commit -a") ~/project$ Note que há uma lista de alterações que não estão prontas para o commit, e uma lista de arquivos não rastreados. O comando git commit apenas grava as alterações que foram adicionadas para o commit. No caso da remoção de um arquivo, o comando git rm deve ser utilizado. ~/project$ git rm INSTALL rm 'INSTALL' ~/project$ git status On branch master Changes to be committed: (use "git reset HEAD ..." to unstage) deleted: INSTALL ~/project$ Com a utilização de git rm, a remoção do arquivo não só é refletida no diretório de trabalho, como também se reflete no índice, também chamado de index. O índice é uma área em que são registradas as mudanças a serem realizadas em um próximo commit. A distinção da área de trabalho e do índice permite que modificações sejam postergadas, como novos arquivos criados antes de estarem prontos para um commit. Para adicionar alterações ou novos arquivos ao índice, o comando git add deve ser utilizado. ~/project$ git add AUTHORS ~/project$ git status On branch master Changes to be committed: (use "git reset HEAD ..." to unstage) new file: AUTHORS ~/project$ A opção -a do comando git commit adiciona as alterações e remoções ao índice para o commit, mas não adiciona novos arquivos, que devem ser adicionados com o comando git add. ## Diferenças entre diretório de trabalho, índice e HEAD Para exibir a diferença entre o diretório de trabalho e o índice, pode ser utilizado o comando git diff. ~/project$ git diff diff --git a/INSTALL b/INSTALL index e69de29..3924362 100644 --- a/INSTALL +++ b/INSTALL @@ -0,0 +1 @@ +# Instruções de instalação ~/project$ Ao adicionar as alterações ao índice, git diff não mostrará nenhuma diferença. ~/project$ git add INSTALL ~/project$ git diff ~/project$ Note que as alterações ainda não foram gravadas com um commit. Para verificar as diferenças entre o índice e o último commit, também chamado HEAD, use a opção --cached de git diff. ~/project$ git diff --cached diff --git a/INSTALL b/INSTALL index e69de29..3924362 100644 --- a/INSTALL +++ b/INSTALL @@ -0,0 +1 @@ +# Instruções de instalação ~/project$ Algumas vezes, a intenção ao utilizar git diff é comparar o diretório de trabalho com o último commit, independente das alterações presentes no índice. Para tanto, deve ser especificado o parâmetro HEAD para o comando git diff. ~/project$ git diff HEAD diff --git a/INSTALL b/INSTALL index e69de29..3924362 100644 --- a/INSTALL +++ b/INSTALL @@ -0,0 +1 @@ +# Instruções de instalação ~/project$