К сожалению, и --name-only
, и --name-status
используют ярлыки: они сравнивают сохраненные деревья (имя и га sh ID), не просматривая содержимое файла . 1
Вам нужно будет использовать git diff
(или git show
) с параметрами пробела, а затем удалить все, кроме имен файлов. Например:
$ git show | grep '^diff '
diff --git a/file1 b/file1
diff --git a/file2 b/file2
$ git show --ignore-blank-lines | grep '^diff '
diff --git a/file2 b/file2
Немного больше массажа (и / или использование --no-prefix
) даст вам только имена файлов без префиксов a/
и b/
:
$ git show --ignore-blank-lines --no-prefix | grep '^diff '
diff --git file2 file2
1 Если обнаружение переименования включено, детектор проверяет содержимое каждого файла. Однако он не использует параметры пробелов, поэтому это никак не влияет на результаты. Остальная часть алгоритма --name-status
по-прежнему использует только сохраненный ха sh.