Я хотел бы удалить все изменения в своей рабочей копии.
Выполнение 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")
Существует несколько проблем, которые могут привести к этому поведению:
линия нормализации линии
У меня тоже были такие проблемы. Это сводится к 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 пытается сравнить второй, он сравнил его с неправильным файлом.
Решение либо переключается на нечувствительную нечувствительную файловую систему, но в большинстве случаев это не выполнимо или переименование и передает один из файлов на другой файловой системе.