Я случайно добавил каталог в список элементов, которые должен 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
(Очевидно, вы не хотите этого делать, если содержимое этого каталога огромно.)