ОБНОВЛЕНИЕ для последующего вопроса в комментариях
- Что ж, вы, вероятно, раздражены не тем инструментом.
git
считает, что файл был изменен, если информация о файле stat
изменилась - то есть обычно его размер или отметка времени "последнего изменения" сейчас отличаются от того, что было при извлечении.Почему эти данные изменились, нам будет сложно сказать.Я могу сказать, что некоторые (если не все) версии Excel довольно агрессивны в определении «изменения».Я видел перемещение активной ячейки, рассматриваемое как изменение, и если такая вещь была сохранена, то файл будет другим, даже если его полезное содержимое не будет.
Использованиеstat
информация о том, как git проверяет изменения рабочего дерева, потому что (1) она надежна для хорошо работающих программ (поскольку, в частности, дата изменения должна совпадать тогда и только тогда, когда файл не был изменен в любой разумной ситуации);и (2) попытка изучить содержимое будет ужасно медленной.(git
имеет некоторые хитрости, которые позволяют быстро сравнивать контент, если обе сравниваемые версии находятся в индексе или зафиксированы; но это уже другая история.) Даже сравнение контента было бы побайтной проверкой самого файла- не по ячейкам сравнение данных электронной таблицы, поскольку git
ничего не знает конкретно об Excel;так что, если Excel фактически изменил файл каким-либо образом, git
пометит его как измененный, несмотря ни на что, по замыслу.
По умолчанию
git diff
не пытается рассказать вам много об изменениях в двоичных файлах, потому что не предполагает, что это может быть сделано таким образом, который будет иметь смысл.В выводе, который вы показали, первая строка подтверждает сравниваемое имя файла;вторая строка дает некоторую служебную информацию о том, как git идентифицирует версии файла;а третья строка говорит о том, что этот файл является двоичным, и поэтому инструмент по умолчанию не может дать вам подробности, кроме того, что они на самом деле различаются.(Возвращение к пункту (1) выше подтверждает, что что-то - возможно, Excel - записало изменение в файл, поэтому
git
говорит, что оно изменено.)
Если вы можете найтиинструмент, который более полно сравнивает файлы Excel, вы можете указать git использовать его при сравнении версий этого файла (через gitattributes
);У меня нет рекомендации по такому инструменту.
Есть ли способ поднести пистолет к Git и сказать: "Эй, я знаю, что есть разница, но откажитесь от неепотому что мне все равно, и я пойду в новую ветку "?
Если изменение не было add
ed (т. Е. status
показывает его как непостановленное изменение), вы можете
git checkout -- path/to/the/file.xslx
Если изменение было add
ed (т. е. status
показывает его как измененную стадию для фиксации), вы можете
git reset -- path/to/the/file.xslx
, и тогда он будет неустановленным и может обрабатываться, как указано выше.
Для дальнейшего использования,вывод status
говорит вам, какие команды использовать для отмены изменений.