8. Modificações, não arquivos

Metas

  • Entender que o Git trabalha com as modificações, não com os arquivos.

A maioria dos sistemas de controle de versão trabalham com arquivos. Você adiciona o arquivo no controle de código e o sistema acompanha as mudanças a partir daquele momento..

O Git se concentra nas mudanças de um arquivo, não no arquivo em si. Um comando git add file não fala para o Git adicionar o arquivo no repositório, mas para perceber o atual estado do arquivo para que ele seja parte de um commit depois.

Nós vamos tentar investigar essa diferença nesta lição.

01 Primeira mudança: Adicionando tags padrão de páginas

Mude a página "Hello, World" de maneira que ela passe a ter as tags padrão <html> e <body>.

Arquivo: hello.html

<html>
  <body>
    <h1>Hello, World!</h1>
  </body>
</html>

02 Adicione essa modificação

Agora adicione essa modificação para o stage do Git.

Execute

git add hello.html

03 Segunda mudança: Adicione os headers do HTML

Agora adicione os headers (<head> section) na página "Hello, World".

Arquivo: hello.html

<html>
  <head>
  </head>
  <body>
    <h1>Hello, World!</h1>
  </body>
</html>

04 Confira o status atual

Execute

git status

Você verá:

Resultado

$ git status
On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   hello.html

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   hello.html

Note que o arquivo hello.html está listado duas vezes no status. A primeira mudança (a adição das tags padrão) está no stage e pronta para um commit. A segunda mudança (adição dos headers) não está no stage. Se você fizesse um commit agora, os headers não teriam sido salvos no repositório.

Vamos conferir.

05 Commit

Faça um commit das mudanças que estão no stage (as tags padrão) e então confira novamente o status.

Execute

git commit -m "Added standard HTML page tags"
git status

Você verá:

Resultado

$ git commit -m "Added standard HTML page tags"
[main 46afaff] Added standard HTML page tags
 1 file changed, 5 insertions(+), 1 deletion(-)
$ git status
On branch main
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   hello.html

no changes added to commit (use "git add" and/or "git commit -a")

O comando status sugere que o hello.html ainda tem alterações não registradas, mas a área de preparação está vazia.

06 Adicionando a segunda modificação

Adicione a segunda modificação ao stage, depois execute o comando git status.

Execute

git add .
git status

O diretório atual (.) vai ser nosso arquivo a adicionar. Essa é a maneira mais conveniente de adicionar todas as mudanças dos arquivos do diretório atual e suas pastas. Mas como ele adiciona tudo, é uma boa ideia conferir o status antes de fazer um add ., para ter certeza que você não adicione nenhum arquivo que não deveria ser adicionado.

Eu queria que você visse o truque do add ., mas nós vamos continuar adicionando os arquivos explicitamente no futuro, por via das dúvidas.

Você verá:

Resultado

$ git add .
$ git status
On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   hello.html

A segunda modificação está no stage e pronta para um commit.

07 Faça um commit da segunda mudança

Execute

git commit -m "Added HTML header"

Resultado

$ git commit -m "Added HTML header"
[main b7614c1] Added HTML header
 1 file changed, 2 insertions(+)