Мне нужно удалить файлы конфигурации из моего веб-приложения и из истории git. Я сделал это с помощью инструмента очистки репозитория bfg. Я прошел шаги, описанные в документации:
git clone --mirror url.git
java -jar bfg-1.13.0.jar --delete-files "{App.config,Web.config}" repo-name.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
Я отправил результат в новый репозиторий в gitlab. Файлы исчезли из истории. Я могу проверить старый коммит, и файлы не приходят.
НО, когда я смотрю на детали фиксации с использованием файла Web.config, в разделе изменений отображается разница файла Web.config. Так что еще можно увидеть текст конфигурационных файлов.
Я что-то упустил при использовании инструмента bfg? Или это то, что инструмент не изменит? Как я могу удалить файлы из сводки изменений фиксации?
Разве дело не только в том, что файлы *.config
есть только в последнем коммите?
Этот коммит остался нетронутым BFG, так что, возможно, это то, что вы видите....
Из документ BFG:
Your current files are sacred...
The BFG treats you like a reformed alcoholic: you've made some mistakes in the past, but now you've cleaned up your act. Thus the BFG assumes that your latest commit is a good one, with none of the dirty files you want removing from your history still in it. This assumption by the BFG protects your work, and gives you peace of mind knowing that the BFG is only changing your repo history, not meddling with the current files of your project.
BUT when I look at the details of commit involving Web.config file the changes section shows the diff of the Web.config file. So it is still possible to see the text of the configuration files.
К сожалению, есть несколько нюансов в интерпретации того, как проходило переписывание истории, и приведенное выше описание расплывчато — где вы это видите? Выполняете ли вы команду сравнения с вашим локальным репозиторием или просматриваете URL-адрес в GitLab? - предоставление снимка экрана, URL-адреса или примера команды Git, которую вы вызываете, было бы полезно для диагностики здесь.
Я собираюсь предположить, что вы смотрите на такой URL-адрес, где идентификатор фиксации (например, e081c0cba2dd5b1a19d22b44918022f72035434c
) является частью URL-адреса:
https://gitlab.com/gitlab-org/gitlab-ce/commit/e081c0cba2dd5b1a19d22b44918022f72035434c
Здесь важно понимать, что идентификаторы коммитов — это хэш содержимого файлового дерева этого коммита и всей истории коммитов, предшествующих этому коммиту. Поэтому, если вы измените историю фиксации, вы получите новый идентификатор фиксации. Если вы посмотрите на старый идентификатор фиксации, вы увидите старые данные фиксации и старое дерево файлов фиксации.
В конце концов GitLab запустится git gc
в вашем репозитории, и этот URL-адрес — с этим идентификатором коммита — больше не будет доступен. Вы также можете попросить поддержку GitLab запустить git gc
:
Это не последний коммит. Я вижу разницу в коммитах еще в истории.