Inkognitoss
@Inkognitoss
Full-stack разработчик.

Как удалить файл из отслеживания в GIT?

Про git rm и .gitignor знаем и про git rebase, но с помощью него пока не удалось решить данный кейс.

И так. В чём вопрос?

Необходимо удалить файл или папку из отслеживания (например в ветке мастер), подобно тому, как это произошло бы командой
git rm --cache filename
за одним лишь исключением, чтобы у других участников когда они сделают
git pull origin master
файл filename не удалился.
При этом очень желательно, чтобы GIT вообще забыл про то, что этот файл когда либо отслеживался, другими словам чтобы дельта этого файла не занимала место в репозитории и не имела на него никаких ссылок.

Я полагаю, что тут необходим git rebase с изменением коммита когда этот файл был добавлен в репозиторий, но пока что-то явного результата не получил.
  • Вопрос задан
  • 4264 просмотра
Решения вопроса 1
v_decadence
@v_decadence
1. Невозможно. Только если каждый перед слиянием сам сделает git rm --cached file и коммит.
2. https://help.github.com/articles/removing-sensitiv...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Git
software engineer
Никак. Удалить файл из репозитория со всей его историей, невозможно без клонирования проекта с нуля всеми разработчиками.

То есть на одном конкретном репозитории вы можете локально удалить, но если другой разработчик будет пользоваться просто git fetch/pull, у него ничего не удалится, а при первом git push история с его репозитория к вам вернется.

Единственный способ - на центральном репо удаляете файл (можно воспользоваться библиотекой BFG), затем ВСЕ разработчики, все джобы в тимсити/дженкинсе удаляют у себя репозиторий и делают git clone. Либо тоже запускают у себя BFG.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы