Вопрос по git, version-control – Удалить файл из исправленного коммита

10

Я отправил коммит в репо, где случайно добавил файл. Никто другой не слился с удаленным репо, чтобы я мог переписать историю. Но когда я удаляю файл (нестандартный, не удаляемый из исходного кода или диска) из локального коммита, я не могу нажать изменения Git Push Show Все современное

Ваш Ответ

4   ответа
4

git rm --cached <yourfile>
git commit --amend
git push -f
@ColinHebert Если исключить вопрос о принудительном толчке, который, как сообщается, не передает удаления, это работает для того, чтобы точно выполнить то, что запрашивала первоначальный плакат, самым простым способом: удалить файл и изменить коммит. Файл может быть добавлен в последующем коммите.
Я не хочу удалять файл из отслеживания, просто из коммита. sa1
@ sa1 нет концепции отслеживания в git, ваш файл либо есть, либо нет в вашем последнем коммите, вот и все. Другой вариант - просто оставить файл там, но без содержимого или удаленной части. Git - это просто "тупой трекер контента" сделанный "парнем из файловой системы". ;)
@KurzedMetal Существует концепция отслеживаемых файлов. Здесь вы удаляете файл из отслеживаемых файлов, он хочет удалить изменения, внесенные в файл в коммите.
5

git reset HEAD^
git add <files to be part of the commit>
# or git add -pu
git commit -C <previous commit number>

Перед этим вам нужно сохранить номер последнего коммита, чтобы можно было повторно использовать сообщение о коммите / дату / автора.

Я сделал что-то подобное. Проблема заключалась в том, что я не смог перенести эти изменения в удаленное хранилище. sa1
10

git checkout HEAD~ -- path/to/your/file
git add path/to/your/file
git commit --amend -C HEAD
git diff -p HEAD~ -- path/to/your/file | git apply -R
git commit --amend -C HEAD
git reset HEAD~ -- path/to/your/file
git commit --amend -C HEAD
Пуш - сила была одной из вещей, которые я пробовал. sa1
Я сделал это. Проблема заключалась в том, что изменения не были перенесены в удаленное хранилище. sa1
Ты долженpush -f их.
3

Ответ должен был использовать

git push +sa1:sa1

где sa1 - моя ветка Это заставляет выталкивать даже «ничего».

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