Проблема со сбросом git при откате к предыдущему коммиту - PullRequest
1 голос
/ 25 августа 2011

Я случайно зафиксировал огромную ненужную папку и отправил ее мастеру в git.И после этого у меня был еще один коммит.так вот как это

A - B - C - D

C - проблемный коммит

После осознания ошибки я использовал команду

git reset --hard <sha1-commit-id-of-B>

и

git push origin HEAD --force

для отката на B. Это было нормально, но размер репо все тот же.я был сбит с толку.Как я могу избавиться от ненужных файлов (навсегда), чтобы он не появлялся на Git?

Ответы [ 2 ]

3 голосов
/ 25 августа 2011

Даже если вы переместите указатель ветви обратно таким образом, git не будет сразу же собирать мусор для объектов, на которые больше нет ссылок. Это хорошо - это означает, например, что если вы по ошибке сделаете git reset --hard, то вы можете легко восстановить старые коммиты, обычно используя reflog, чтобы найти имена объектов этих коммитов и создать ветка от одного из них. Если вы действительно хотите немедленно собрать мусор, чтобы освободить место, вы можете сделать:

git gc --prune=now

Однако, почти никогда не нужно этого делать ...

0 голосов
/ 25 августа 2011

Используйте http://git -scm.com / docs / git-filter-branch , но на свой страх и риск!

...