Назад | Перейти на главную страницу

не могу git rm каталог

Я случайно добавил каталог в список элементов, которые должен git commit. Теперь, когда я пытаюсь запустить git rm dirname, я получаю сообщение об ошибке

rm 'dirname'
fatal: git rm: 'dirname': Is a directory

Я пробовал следующие команды git rm -rf dirname и git rm dirname --force, но ничего из этого не сработало. Все они выдали одно и то же сообщение об ошибке.

Как мне предотвратить фиксацию dirname?

Я использую git версии 1.7.0.4

Спасибо

Дополнительные замечания

Хорошо, похоже git rm -rf dirname работает только при определенных условиях. Я провел несколько тестов, и нормально работает. Однако это не удастся, если dirname сам по себе является отдельно управляемым репозиторием git с каталогом .git в нем. Я установил это, потому что dirname это фреймворк, управляемый git, который используется во многих моих проектах.

Запрет любых проблем с разрешениями ...

git rm --cached -r dirname

Это должно удалить каталог из поэтапных коммитов.

На этом этапе его не следует отслеживать, и может быть хорошей идеей настроить его игнорирование через gitignore.

Никогда не было этой проблемы (поэтому никаких обещаний, что это сработает и / или не уничтожит ваши данные - лучше всего будет работать с резервной копией вашего репозитория!), Но некоторые варианты:


Вариант 1 (если вы еще не зафиксировали локально):

  • git stash любые ценные изменения, которые вы сделали.
  • git reset ваше дерево (наверное нужно сделать git reset --hard HEAD)
  • git unstash ваши сохраненные изменения и аккуратно добавьте / зафиксируйте их.

Вариант 2 (если вы не зафиксировали локально, или если у вас есть, но есть удаленный, на который вы еще не нажали):

  • git clone чистая версия репозитория
  • Тщательно скопируйте туда свои изменения
  • осторожно добавьте / зафиксируйте свои изменения.

Вариант 3 (который портит ваше репо):

  • Зафиксируйте свою ошибку в репозитории.
  • Очистить с помощью git rm -r

(Очевидно, вы не хотите этого делать, если содержимое этого каталога огромно.)