git diff

Como Funciona

O comando git diff é usado para mostrar as diferenças entre o estado atual do seu repositório e o último commit. Ele é útil para visualizar as alterações feitas nos arquivos antes de criar um novo commit.

No terminal, o output do git diff apresentará as diferenças de forma clara. Cada alteração será mostrada com um prefixo indicando se é uma adição +, uma remoção -, ou uma modificação *.

Estrutura

Esta é a estrutura base do comando git diff que iremos utilizar neste momento

git diff [arquivo]

Em que:

  • git diff: Este é o comando principal que invoca a ferramenta de diferenciação do Git.

  • [arquivo] (opcional): Este é um argumento opcional que especifica o arquivo específico para o qual você deseja ver as diferenças. Se nenhum arquivo for especificado, o git diff mostrará as diferenças de todos os arquivos modificados em relação ao último commit.

Exemplo de Uso

Exemplo 1: git diff arquivo

Suponha que o arquivo index.html originalmente tinha o seguinte conteúdo:

<!DOCTYPE html>
<html>
<head>
    <title>Meu Site</title>
</head>
<body>
    <!-- Conteúdo do site -->
</body>
</html>

Agora, você fez algumas alterações nesse arquivo. Por exemplo, você modificou o título do site. O arquivo index.html modificado ficou assim:

<!DOCTYPE html>
<html>
<head>
    <title>Meu Novo Site</title>
</head>
<body>
    <!-- Conteúdo do site -->
</body>
</html>

Ao executar o comando git diff index.html, o output no terminal mostrará as diferenças entre o estado atual do arquivo index.html e o último commit. Ele indicará que o título do site foi alterado de "Meu Site" para "Meu Novo Site", destacando essa mudança no código:

diff --git a/index.html b/index.html
index abcdef1..1234567 100644
--- a/index.html
+++ b/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
 <html>
 <head>
-    <title>Meu Site</title>
+    <title>Meu Novo Site</title>
 </head>
 <body>

Em que:

  1. Diff do arquivo index.html:

    diff --git a/index.html b/index.html

    Esta linha indica que está sendo mostrada a diferença entre dois arquivos: a/index.html (o arquivo original) e b/index.html (o arquivo modificado).

  2. Cabeçalho de Mudança::

    index abcdef1..1234567 100644
    --- a/index.html
    +++ b/index.html

    Este cabeçalho técnico fornece informações detalhadas sobre as mudanças nos arquivos e pode ser ignorado por enquanto, focando apenas nas alterações visíveis no conteúdo.

  3. Linha de Mudança:

    @@ -1,5 +1,5 @@

    Esta linha mostra a linha inicial e o número de linhas afetadas pela mudança em cada arquivo. No exemplo, -1,5 indica que a mudança começa na linha 1 do arquivo original (a/index.html) e afeta 5 linhas. +1,5 indica que a mudança começa na linha 1 do arquivo modificado (b/index.html) e também afeta 5 linhas.

  4. Alterações Específicas:

    -    <title>Meu Site</title>
    +    <title>Meu Novo Site</title>

    Essas linhas mostram as alterações específicas que ocorreram em cada versão do arquivo. A linha original <title>Meu Site</title> foi removida (indicada pelo sinal -). Em seu lugar, foi adicionada a linha <title>Meu Novo Site</title> (indicada pelo sinal +).

Exemplo 2: git diff

Para visualizar as diferenças em todos os arquivos modificados, basta utilizar o comando git diff sem nenhum argumento. Dessa forma, o Git apresentará todas as alterações realizadas em todos os arquivos do repositório, oferecendo uma visão abrangente das mudanças efetuadas, sem focar em um arquivo específico, ao contrário do comando git diff arquivo.

Conteúdo Original dos Arquivos:

index.html:

<!DOCTYPE html>
<html>
<head>
    <title>Meu Site</title>
</head>
<body>
    <!-- Conteúdo do site -->
</body>
</html>

style.css:

body {
    font-family: Arial, sans-serif;
    background-color: #f0f0f0;
}

Conteúdo Modificado dos Arquivos:

index.html:

<!DOCTYPE html>
<html>
<head>
    <title>Meu Novo Site</title>
</head>
<body>
    <!-- Conteúdo do site -->
</body>
</html>

style.css:

body {
    font-family: Arial, sans-serif;
    background-color: #ffffff; /* Alteração de cor de fundo */
}

Ao executar o comando git diff, o output no terminal mostrará as diferenças entre o estado atual dos arquivos e o último commit. Ele indicará as alterações feitas em ambos os arquivos:

diff --git a/index.html b/index.html
index abcdef1..1234567 100644
--- a/index.html
+++ b/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
 <html>
 <head>
-    <title>Meu Site</title>
+    <title>Meu Novo Site</title>
 </head>
 <body>

diff --git a/style.css b/style.css
index abcdef1..1234567 100644
--- a/style.css
+++ b/style.css
@@ -2,4 +2,4 @@
     font-family: Arial, sans-serif;
     background-color: #f0f0f0;
 }

+body {
+    background-color: #ffffff; /* Alteração de cor de fundo */
+}

Em que:

  1. Diff do arquivo index.html:

    diff --git a/index.html b/index.html

    Esta linha indica que está sendo mostrada a diferença entre dois arquivos: a/index.html (o arquivo original) e b/index.html (o arquivo modificado).

  2. Cabeçalho de Mudança:

    index abcdef1..1234567 100644
    --- a/index.html
    +++ b/index.html

    Este cabeçalho técnico fornece informações detalhadas sobre as mudanças nos arquivos e pode ser ignorado por enquanto, focando apenas nas alterações visíveis no conteúdo.

  3. Linha de Mudança:

    @@ -1,5 +1,5 @@

    Esta linha mostra a linha inicial e o número de linhas afetadas pela mudança em cada arquivo. No exemplo, -1,5 indica que a mudança começa na linha 1 do arquivo original (a/index.html) e afeta 5 linhas. +1,5 indica que a mudança começa na linha 1 do arquivo modificado (b/index.html) e também afeta 5 linhas.

  4. Alterações Específicas:

    -    <title>Meu Site</title>
    +    <title>Meu Novo Site</title>

    Essas linhas mostram as alterações específicas que ocorreram em cada versão do arquivo. A linha original <title>Meu Site</title> foi removida (indicada pelo sinal -). Em seu lugar, foi adicionada a linha <title>Meu Novo Site</title> (indicada pelo sinal +).

  5. Diff do arquivo style.css:

    diff --git a/style.css b/style.css

    Esta linha indica que está sendo mostrada a diferença entre dois arquivos: a/style.css (o arquivo original) e b/style.css (o arquivo modificado).

  6. Cabeçalho de Mudança:

    index abcdef1..1234567 100644
    --- a/style.css
    +++ b/style.css

    Assim como no arquivo index.html, este cabeçalho técnico fornece informações detalhadas sobre as mudanças nos arquivos e pode ser ignorado por enquanto, focando apenas nas alterações visíveis no conteúdo.

  7. Linha de Mudança:

    @@ -2,4 +2,4 @@

    Esta linha mostra a linha inicial e o número de linhas afetadas pela mudança em cada arquivo. No exemplo, -2,4 indica que a mudança começa na linha 2 do arquivo original (a/style.css) e afeta 4 linhas. +2,4 indica que a mudança começa na linha 2 do arquivo modificado (b/style.css) e também afeta 4 linhas.

  8. Alterações Específicas:

    +body {
    +    background-color: #ffffff; /* Alteração de cor de fundo */
    +}

    Essas linhas mostram as alterações específicas que ocorreram em cada versão do arquivo. Linhas com + indicam adições ou modificações no arquivo modificado (b/style.css). Neste caso, houve uma adição de estilo para alterar a cor de fundo do corpo da página para #ffffff.

Esta é uma explicação simplificada para fins didáticos. Para explorar todas as possibilidades do comando gitdiff, consulte a documentação oficial.

Last updated