¿Por qué `git diff` informa que no hay cambio de file después de` git add`

¿Por qué ese git diff piensa que no hay cambios?

..incluso si el git status les informa como modificado ?

 $ git status On branch master Your branch is ahead of 'origin/master' by 2 commits. (use "git push" to publish your local commits) Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: file-added modified: file-with-changes << it knows there are changes 

pero para ver la diferencia, necesito agregar explícitamente el último hash de reversión.

 $ git diff (nothing) $ git diff rev-hash diff --git a/file-with-changes b/file-with-changes index d251979..a5fff1c 100644 --- a/file-with-changes +++ b/file-with-changes . .. 

Por favor, intente con el command git diff --staged .

Más opciones que puedes usar

git diff

muestra los cambios entre index / staging y files de trabajo. En tu caso, git add pone el file-with-changes en el área de preparación. Por lo tanto, no hay diferencia entre los files de ensayo y funcionamiento.

git diff --staged

muestra cambios entre HEAD e index / staging. git diff --cached también hace lo mismo. staged y en cached se puede usar indistintamente.

git diff HEAD

muestra cambios entre HEAD y files de trabajo

git diff $commit $commit

muestra cambios entre 2 confirmaciones

git diff origin

muestra diff entre HEAD y remote / origin

git diff diffs contra el índice, no en contra de su revisión HEAD . Al ejecutar git add , has puesto los cambios en tu índice, ¡así que por supuesto no hay diferencias! Utilizar

  • git diff HEAD para ver las diferencias entre el estado de tu tree y la revisión HEAD , o
  • git diff --cached para ver las diferencias entre su índice y la revisión HEAD .

Debido a que git diff por defecto verifica las diferencias entre el área de preparación y su copy de trabajo. Cuando git add , su área de preparación coincide con su copy de trabajo y, por lo tanto, diff informa que no hay cambios.

Agregar el --cached dice diff a diff contra HEAD .