Git log e commit IDs.
[cursogit.git] / Trabalhando_com_Git.mdwn
1 # Trabalhando com Git
2
3 ## Diretório de trabalho, índice, status
4
5 Ao trabalhar com Git, os arquivos estarão em um diretório de trabalho. O
6 Git é capaz de identificar os arquivos que estão sob seu controle, suas
7 mudanças, arquivos novos e removidos. Um dos comandos para obter essas
8 informações é git status.
9
10 Ao remover um arquivo, adicionar um segundo arquivo, e modificar um
11 terceiro, a saída de git status é a seguinte:
12
13         ~/project$ git status
14         On branch master
15         Changes not staged for commit:
16           (use "git add/rm <file>..." to update what will be committed)
17           (use "git checkout -- <file>..." to discard changes in working directory)
18
19                 deleted:    INSTALL
20                 modified:   README
21
22         Untracked files:
23           (use "git add <file>..." to include in what will be committed)
24
25                 AUTHORS
26
27         no changes added to commit (use "git add" and/or "git commit -a")
28         ~/project$ 
29
30 Note que há uma lista de alterações que não estão prontas para o commit,
31 e uma lista de arquivos não rastreados.
32
33 O comando git commit apenas grava as alterações que foram adicionadas
34 para o commit. No caso da remoção de um arquivo, o comando git rm deve
35 ser utilizado.
36
37         ~/project$ git rm INSTALL
38         rm 'INSTALL'
39         ~/project$ git status
40         On branch master
41         Changes to be committed:
42           (use "git reset HEAD <file>..." to unstage)
43
44                 deleted:    INSTALL
45         ~/project$ 
46
47 Com a utilização de git rm, a remoção do arquivo não só é refletida no
48 diretório de trabalho, como também se reflete no índice, também chamado
49 de index. O índice é uma área em que são registradas as mudanças a serem
50 realizadas em um próximo commit. A distinção da área de trabalho e do
51 índice permite que modificações sejam postergadas, como novos arquivos
52 criados antes de estarem prontos para um commit.
53
54 Para adicionar alterações ou novos arquivos ao índice, o comando git add
55 deve ser utilizado.
56
57         ~/project$ git add AUTHORS
58         ~/project$ git status
59         On branch master
60         Changes to be committed:
61           (use "git reset HEAD <file>..." to unstage)
62
63                 new file:   AUTHORS
64
65         ~/project$ 
66
67 A opção -a do comando git commit adiciona as alterações e remoções ao
68 índice para o commit, mas não adiciona novos arquivos, que devem ser
69 adicionados com o comando git add.
70
71 ## Diferenças entre diretório de trabalho, índice e HEAD
72
73 Para exibir a diferença entre o diretório de trabalho e o índice, pode
74 ser utilizado o comando git diff.
75
76         ~/project$ git diff
77         diff --git a/INSTALL b/INSTALL
78         index e69de29..3924362 100644
79         --- a/INSTALL
80         +++ b/INSTALL
81         @@ -0,0 +1 @@
82         +# Instruções de instalação
83         ~/project$ 
84
85 Ao adicionar as alterações ao índice, git diff não mostrará nenhuma
86 diferença.
87
88         ~/project$ git add INSTALL
89         ~/project$ git diff
90         ~/project$
91
92 Note que as alterações ainda não foram gravadas com um commit. Para
93 verificar as diferenças entre o índice e o último commit, também chamado
94 HEAD, use a opção --cached de git diff.
95
96         ~/project$ git diff --cached
97         diff --git a/INSTALL b/INSTALL
98         index e69de29..3924362 100644
99         --- a/INSTALL
100         +++ b/INSTALL
101         @@ -0,0 +1 @@
102         +# Instruções de instalação
103         ~/project$ 
104
105 Algumas vezes, a intenção ao utilizar git diff é comparar o diretório de
106 trabalho com o último commit, independente das alterações presentes no
107 índice. Para tanto, deve ser especificado o parâmetro HEAD para o
108 comando git diff.
109
110         ~/project$ git diff HEAD
111         diff --git a/INSTALL b/INSTALL
112         index e69de29..3924362 100644
113         --- a/INSTALL
114         +++ b/INSTALL
115         @@ -0,0 +1 @@
116         +# Instruções de instalação
117         ~/project$ 
118
119