Как удалить удаленные файлы из git?

Я зафиксировал и отправил слишком большой файл в битбакет, и я удалил его локально, зафиксировал и снова запушил. Но на сайте bitbucket размер репозитория все равно великоват.


person woutvdd    schedule 09.07.2012    source источник


Ответы (1)


Похоже, вы создали новый коммит, в котором удалили файл. Это означает, что файл все еще существует в предыдущем коммите.

Что вам нужно сделать, так это переписать историю. Предполагая, что две новейшие фиксации удаляют и добавляют этот файл, вы можете сделать следующее:

git reset --hard HEAD~2
git push --force

Это удалит два новейших коммита, а затем принудительно отправит их в битбакет. В случае, если это не поможет уменьшить размер сайта, вам нужно обратиться в службу поддержки Bitbucket, чтобы они могли запустить git gc в вашем удаленном репозитории, чтобы фактически избавиться от удаленных коммитов/файлов.

Если вы хотите удалить только данный файл, не удаляя всю фиксацию, вы можете сделать это, используя git-filter-branch как объяснено в документации GitHub (это не относится к GH):

git filter-branch --index-filter 'git rm --cached --ignore-unmatch THE_FILE' \
--prune-empty --tag-name-filter cat -- --all

Очевидно, вам нужно заменить THE_FILE именем файла, который вы хотите стереть. После этого также нужно выполнить принудительный толчок.

person ThiefMaster    schedule 09.07.2012