состояние мерзавца показывает модификации, контроль мерзавца — <файл> не удаляет их

Я хотел бы удалить все изменения в своей рабочей копии.
Выполнение git status выставочные файлы изменяются.
Ничто, что я делаю, кажется, не удаляет эти модификации.
Например:

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
#       modified:   Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs
#       modified:   Rhino.Etl.Tests/Rhino.Etl.Tests.csproj
#       modified:   Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs
#
no changes added to commit (use "git add" and/or "git commit -a")

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git checkout -- Rhino.Etl.Core/Enumerables/CachingEnumerable.cs

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
#       modified:   Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs
#       modified:   Rhino.Etl.Tests/Rhino.Etl.Tests.csproj
#       modified:   Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs
#
no changes added to commit (use "git add" and/or "git commit -a")

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git checkout `git ls-files -m`

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
#       modified:   Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs
#       modified:   Rhino.Etl.Tests/Rhino.Etl.Tests.csproj
#       modified:   Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs
#
no changes added to commit (use "git add" and/or "git commit -a")

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git reset --hard HEAD
HEAD is now at 6c857e7 boo libraries updated to 2.0.9.2 and rhino.dsl.dll updated.

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
#       modified:   Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs
#       modified:   Rhino.Etl.Tests/Rhino.Etl.Tests.csproj
#       modified:   Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs
#
no changes added to commit (use "git add" and/or "git commit -a")
213
задан Vadim Kotov 23 October 2017 в 03:37
поделиться

1 ответ

Существует несколько проблем, которые могут привести к этому поведению:

линия нормализации линии

У меня тоже были такие проблемы. Это сводится к Git автоматически преобразовывать CRLF в LF. Это обычно вызвано смешанными линиями концовками в одном файле. Файл нормализован в индексе, но когда Git тогда денормализует его снова, чтобы развернуть его от файла в рабочем дереве, результат отличается.

Но если вы хотите исправить это, вы должны отключить CORE.AUTOCRLF , измените все линейные окончания в LF, а затем снова включите его. Или вы можете отключить его вообще, делая:

git config --global core.autocrlf false

вместо Core.autocrlf , вы также можете рассмотреть возможность использования файлов .gitattribute . Таким образом, вы можете убедиться, что все, что используют REPO, использует те же правила нормализации, предотвращая заканчивающие концовки смешанной линии в репозиторий.

также рассмотрите возможность установки CORE.SAFECRLF , чтобы предупредить, если вы хотите, чтобы Git предупредить вас, когда будет выполнена неисправная нормализация.

Гит Манштамы Сказать, что это:

Конверсия CRLF несет небольшой шанс испорчения данных. Autocrlf = True Will Преобразуйте CRLF в LF во время совершения и LF к CRLF во время оформления заказа. Файл который содержит смесь LF и CRLF до того, как совершение не может быть воссоздано Гит. Для текстовых файлов это правильно сделать: это исправляет строку окончания такого, что у нас есть только LF Line окончания в репозитории. Но для Двоичные файлы случайно классифицируется как текст преобразования может поврежденные данные.

Файловые системы, нечувствительны к регистру

на файловых системах, нечувствительными к регистру, когда одно и то же имя файла с различным корпусом находится в репозитории, Git пытается заказать оба, но только один заканчивается на файловой системе. Когда Git пытается сравнить второй, он сравнил его с неправильным файлом.

Решение либо переключается на нечувствительную нечувствительную файловую систему, но в большинстве случаев это не выполнимо или переименование и передает один из файлов на другой файловой системе.

125
ответ дан 23 November 2019 в 04:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: