Já li muitas explicações sobre o que git diff
acontece entre dois commits e ainda estou completamente perplexo com o resultado que estou obtendo. Acredito que o que estou vendo seja o "formato combinado", considerado o formato "padrão", mas, se for esse o caso, não sei quais outros formatos estão disponíveis.
Exemplo:
>git diff af738ab0..bbbec26d > gitdiff_2025-04-09B.diff
Geralmente recebo esse tipo de coisa:
...
+diff --git a/src/core/history_table_view.py b/src/core/history_table_view.py
+index 5b18236..05b262a 100644
+--- a/src/core/history_table_view.py
++++ b/src/core/history_table_view.py
+@@ -14,188 +14,279 @@ class HistoryTableView(QtWidgets.QTableView):
+ @thread_check(True)
+ def __init__(self, *args):
+ super().__init__(*args)
+- self.setObjectName('history table')
+- self.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
+- self.horizontalHeader().setStretchLastSection(True)
+- self.horizontalHeader().hide()
+- self.verticalHeader().hide()
+- self.setModel(HistoryTableModel(self))
...
... nesta parte da saída, ele está comparando o arquivo history_table_view.py no primeiro commit com o mesmo arquivo no segundo commit.
Todas as linhas acima estão presentes em ambos os arquivos. Então, por que essa linha pode
+ def __init__(self, *args):
comece com um simples "+", enquanto esta linha
+- self.setObjectName('history table')
começa com "+-"? O que isso significa? Como eu disse, ambas as linhas estão presentes em ambas as versões deste arquivo. Eu esperaria, git diff
a princípio, que nenhuma dessas linhas fosse exibida (embora haja algumas diferenças em termos de linhas vazias entre as linhas com texto).
Em segundo lugar, quando assisto a uma introdução simples git diff
, como esta , o apresentador faz git diff
dois commits, aos 4:40 do vídeo vemos a saída... mas no caso dele ele NÃO está vendo símbolos duplos no início das linhas, mas sim simples "+" ou "-", ou seja, até onde eu entendo, o que se poderia esperar de um diff
comando BASH feito entre dois arquivos. ESSE FORMATO SIMPLES É TUDO O QUE EU QUERO.
Suspeito que possa haver uma alternativa ao git diff
"formato combinado" que de fato produza essa saída mais simples, mas não consegui encontrá-la. Em segundo lugar, o vídeo que mencionei acima foi feito há 7 meses: por que aquele YouTuber está obtendo, por padrão, ao comparar dois commits, uma saída simples do Git (que é perfeitamente compreensível para mim), enquanto eu obtenho (para mim) uma saída incompreensível? Minha versão do Git é:
git version 2.48.1.windows.1
Um link simples para uma página que explique genuinamente essa questão específica de git diff
comparar dois commits, em termos claros e, principalmente, mostrando como obter um .exe simples diff
, pode ser tudo o que preciso. Procurei muito e não encontrei.
Mais tarde .
O daoh-nvohter pode, por favor, dizer por que essa pergunta não vale a pena ser feita?
Há um arquivo de patch no seu segundo commit, você está lendo uma seção do diff que descreve "esse arquivo de patch foi adicionado".
Se você quiser localizar esses arquivos de patch em um commit, você pode, por exemplo, procurar o padrão
^diff --git
nos arquivos do referido commit:execute-o, por exemplo, no seu
bbbec26d
commit:git grep -l -e "^diff --git" bbbec26d
Se você vir linhas com
--
ou à esquerda-+
, isso significa que você também tem arquivo(s) de patch em seu primeiro commitaf738ab0
Se você quiser ter
git diff
apenas um conjunto de arquivos, use a sintaxe glob para[path...]
: