Невозможно сбросить файл для определенного коммита с помощью Git - PullRequest
12 голосов
/ 14 декабря 2010

У меня есть измененный файл, который я хочу вернуть к тому, что есть в последнем коммите, но он «застрял» там всегда помечается как измененный.

$ 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:   index.php
#
no changes added to commit (use "git add" and/or "git commit -a")

Я тогда попробую:

$git checkout -- index.php

Но вывод статуса git остается прежним. Я тогда попробую:

$git reset --hard master
HEAD is now at 02c9613 test commit message

И вывод состояния git ВСЕ ЕЩЕ одинаковый.

Есть идеи, как мне избавиться от предполагаемых изменений в этом файле?

Ответы [ 6 ]

3 голосов
/ 16 декабря 2010

Возможно, вы столкнулись с проблемой пробелов , попробуйте git config --global apply.whitespace nowarn для этого.

Если это не сработает, я бы сказал, что вы столкнулись с ошибкой.Сохраните локальный клон для дальнейшего использования (надеюсь, он не слишком большой) и создайте отчет об ошибке.Особенно факты о том, что:

  • вы сами не изменяли файл
  • другие файлы не показывают эту проблему

- признаки того, чтотолько не ты, который допустил ошибку здесь.Если вы можете воспроизвести проблему на чистом репо, тоже будет интересная информация.

3 голосов
/ 14 декабря 2010

Вы должны удалить index.php из «индекса». Тогда вы можете оформить заказ другой версии.

git rm --cached index.php

Должен сделать свое дело. См:

http://www.kernel.org/pub/software/scm/git/docs/git-rm.html

1 голос
/ 24 января 2014

попробуй git ls-files -m | xargs -i git update-index --assume-unchanged "{}"

1 голос
/ 15 декабря 2010

Вы пробовали:

$ git checkout master -f -- index.php

или

$ git checkout master -f

Я не понимаю, почему это сработало бы, если бы reset не сработало, но стоит попробовать.

0 голосов
/ 23 июля 2014

Я застрял в том же беспорядке.У меня были файлы, от которых я просто не смог избавиться в git status.После попытки сброса или извлечения файлов любым способом, я решил добавить проблемные файлы и зафиксировать их.Гит, казалось, был доволен этим.Затем я вернулся к предыдущему коммиту, и проблема была решена, проблемные файлы действительно исчезли.

Это не объясняет ошибку, но если это решение может решить ее, это уже хорошо.

0 голосов
/ 30 апреля 2013

FWIW, я смог решить проблему, удалив подкаталоги .git в каталогах, которые показывали измененные.После того, как подкаталоги .git (так как подкаталоги были самими проектами .git) исчезли, родительские папки больше не показывали измененные.Если указанные файлы находятся в той же папке, что и несвязанная папка .git, это также может оказать влияние.

...