Невозможно переписать ветки: у вас есть неотмеченные изменения - PullRequest
3 голосов
/ 04 апреля 2020

Я хочу удалить некоторые файлы / папки из истории git в соответствии с git документацией , но это не удается из-за unstaged changes. Мне не ясно, какие неустановленные изменения могут быть, как я сделал git add --all, совершил & pu sh раньше. обратите внимание, что подлежащая удалению папка somefolder/ больше не существует в HEAD. Он был перенесен при более ранних фиксациях, но его старые версии необходимо удалить из репозитория.

~$ git add --all
~$ git commit -m "trying to fix 'Cannot rewrite branches: You have unstaged changes'"
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
~$ git push
Everything up-to-date
~$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
~$ git filter-branch --force --index-filter   "git rm --cached --ignore-unmatch somefolder/"   --prune-empty --tag-name-filter cat -- --all
Cannot rewrite branches: You have unstaged changes.
~$ 

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

1 Ответ

1 голос
/ 04 апреля 2020

Во-первых, убедитесь, что вы используете последнюю версию Git (2.26), так как в более старых Git версиях была ошибка, связанная с git filter-branch .

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

Но, с другой стороны, не используйте для этого устаревшую BFG или git filter-branch.
Используйте новый инструмент git filter-repo (непосредственно в вашем обычном локальном репозитории, хотя перед фильтрацией такого типа всегда рекомендуется создавать резервную копию)

Использовать фильтрацию пути :

git filter-repo --path somefolder/ --invert-paths

Это удалит somefolder/ из Git истории хранилища.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...