Задать вопрос
@mcrack

Как в Git удалить файл из коммита, если уже запушил?

Я сделал коммит, потом сделал push в новую ветку, но оказалось, что у меня в неё попал лишний файл — package-lock.json. Хотел бы от него избавиться, заново сделать коммит и пуш, как это сделать?

Нужно удалять старый коммит или как-то удалить другим способом?
  • Вопрос задан
  • 7485 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Удалить файл из репозитория, при этом не удаляя его из рабочего каталога, можно командой
git rm --cached package-lock.json
git commit


Но после подобной манипуляции файл удалится у всех коллег которые подгрузят к себе этот коммит )) вы должны это понимать.

А хранить или нет в репозитории файл package-lock.json это уже другая история. Вопрос не так однозначен.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Ответ написан
Комментировать
Tomio
@Tomio
backend developer (python, php)
Если хотите прям изменить ваш запушенный коммит, то:
1 - переключаетесь на вашу ветку.
2 - вносите правки (удаляете ваш файл)
3 - выполняете
git commit --amend -m "Новое сообщение, которое затрет старое сообщение предыдущего коммита."

4 - выполняете
git push --force

Но лучше сделайте дополнительный коммит, в котором удалите ненужный файл. Плохого в этом ничего нет.
Ответ написан
Комментировать
dlnsk
@dlnsk
ПК Партнер 01.01 -> ПК Поиск -> IBM PC
Если package-lock.json - это новый файл, то ваша команда делает что-то не так... SagePtr уже пояснил выше почему этот файл должен быть в репозитории.
Если у вас этот файл изменился, то значит ВЫ делаете что-то не так... Скорее всего вы использовали команду npm update вместо npm install. Последняя устанавливает не новые версии пакетов, а именно те, которые указаны в package-lock.json. Это необходимо, чтобы все члены команды использовали одинаковые версии пакетов, иначе - жди неожиданностей.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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