В 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 выделяет изменения по слову, а не только по строке, что очень полезно для длинного текста).