В HEAD(последней фиксации) у меня есть файл с именем foo. В моем текущем рабочем дереве я переименовал его в bar, а также отредактировал.
Я хочу , чтобы git diff fooв HEADи barв моем текущем рабочем дереве.
Ответы:
Укажите пути явно:
git diff HEAD:full/path/to/foo full/path/to/bar
Ознакомьтесь с --find-renamesопцией в git-diff документации .
Кредит: twaggs .
git diff <path> <path>даже если они не находятся в репозитории git.
git diff --helpто увидите, что для двух файлов поддерживаются только шаблоны git diff [<options>] --no-index [--] <path> <path>. git diff a bсоответствует только шаблонам фиксации, а не файлам.
--no-indexопцию при запуске команды в рабочем дереве, управляемом Git, и хотя бы один из путей указывает за пределами рабочего дерева, или при запуске команды вне рабочего дерева, управляемого Git .
Я считаю, что использование --no-index- это то, что вы ищете:
git diff [<options>] --no-index [--] <path> <path>
как указано в руководстве git:
Эта форма предназначена для сравнения двух указанных путей в файловой системе. Вы можете опустить этот
--no-indexпараметр при запуске команды в рабочем дереве, управляемом Git, и хотя бы один из путей указывает за пределами рабочего дерева, или при выполнении команды за пределами рабочего дерева, управляемого Git.
Если вы используете tortoise git, вы можете щелкнуть правой кнопкой мыши по файлу и git diff: щелкнув правой кнопкой мыши по первому файлу и через подменю tortoisegit выберите «Diff Later». Затем вы можете щелкнуть правой кнопкой мыши второй файл. , перейдите в подменю tortoisegit и выберите "Различить с вашим именем файлаhere.txt"
Используя PhpStorm, я просто копирую код предыдущей фиксации и сравниваю его с текущей версией, используя встроенный инструмент «сравнить с буфером обмена».
git diff --no-index --word-diff old_file.txt new_file.txt(--word-diff выделяет изменения по слову, а не только по строке, что очень полезно для длинного текста).