2016-09-24 3 views
2

У меня есть файл в моем репозитории GitHub, который я хотел бы удалить из моих предыдущих коммитов. Я использовал команду BFG Repo-Cleaner delete-files, и она, похоже, сработала, но когда я перехожу на свой репозиторий GitHub, файл все еще находится во всех предыдущих коммитах. Если я попытаюсь снова выполнить команду, она даст мнеУдаление файлов из прошлых коммитов в репозитории GitHub с помощью BFG Repo-Cleaner

BFG прерывание: Нет ссылок для обновления - никаких грязных коммитов не найдено ??

Я не понимаю, как работает BFG? Если да, то как я могу удалить файл из моего прошлого на GitHub?

Вот шаги, которые я взял:

  1. клонированной копию моего GitHub репо в локальную папку, используя --mirror флаг.
  2. I then cd в мой проект местной визуальной студии.
  3. Затем я вошел в команду java -jar bfg-1.12.1.13.jar --delete-files <.json file I wanted to delete> <my local clone copy from step 1>.git
  4. Затем я вошел в git reflog expire --expire=now --all && git gc --prune=now --aggressive
  5. Ран git push
+0

Пожалуйста, укажите сведения о процедуре, которую вы использовали. Раздел «Использование» на веб-сайте BFG Repo-Cleaner описывает один из способов обновления удаленного репозитория после локальной очистки. Некоторые другие процедуры могут не заботиться об этой части. –

+0

Я добавил шаги, которые я принял в своем вопросе. – ecain

ответ

2

А git push само по себе не должно работать, так как BFG repo cleaner делает переписать историю репо.

Он должен работать, когда вы клонировали (как и вы) с --mirror, так как на git push локально обновленные ссылки будут обновлены на удаленном конце.

Обратите внимание, что:

По умолчанию ГОЛОВА ветвь защищена, и в то время как его история будет очищена, самой последней фиксации (в «кончик») является защищенной фиксации и его файловой иерархии выиграл» вообще не изменится.

Не забудьте удалить свой файл со своего ГОЛОВА (текущее рабочее дерево), а затем, прежде чем отступить.

После discussion, кажется, что команды не были выполнены в правой папке. Эта папка должна заканчиваться .git: xxx.git: a clone --mirror - это голое репо.

+0

Да, я действительно удостоверился, что файл не был в моей последней фиксации. Единственной веткой, с которой я работал, была мастерская. Если это считается ветвью HEAD, история должна быть очищена правильно? Так что если git push недостаточно, что мне делать? – ecain

+0

@ecain Каков был выход git push? – VonC

+0

Он думает, что только что сказал, что моя ветка была в курсе последних событий, но я не видел никакой разницы в моем репо GitHub. – ecain

0

Пропустите шаг 2 в ваших шагах, и он должен работать (не cd в ваш <repo-name>.git).

Вам необходимо запустить BFG из папки, содержащей папку <repo-name>.git. BFG ищет папку с именем <repo-name>.git в рабочем каталоге. Вот почему это ничего не изменило.