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 umadd .
, 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(+)