Git: Головная фиксация в удаленном репозитории - дерьмо - как именно я должен ее заменить?
Хорошо, поэтому у меня был парень (в школьном проекте - не паникуйте) зафиксируйте полное рабочее пространство затмения в комплекте с файлами .class и .settings/directories. Что я сделал, было клонирование репо и создание файла .gitignore и проблема:
$ git reset --soft HEAD^
$ ... unstaged all files and added .gitignore and all files that it filtered in ...
Затем я попытался:
$ git commit -c d1cf2d8173234b444c601d5e294a5cf6d790fa2c
Где SHA - это SHA онлайн-фиксации. Это не позволит мне нажать:
Нажатие на https://[email protected]/PROJECT.git https://[email protected]/PROJECT.git! [Отклонен]
master → ошибка мастера (без перемотки вперед): не удалось нажать несколько ссылок на 'https://USERNAME @git.assembla.com/PROJECT.git' Чтобы вас не проигрывание истории, отклонения от быстрой пересылки были отклонены. Объедините удаленные изменения (например, 'git pull') перед повторным нажатием. См. "Примечание о разделе fast-forwards 'git push -help' для деталей.
Мой вопрос , что я должен был сделать вместо этого?
Итак, как именно я должен идти об удалении фиксации в этом сценарии. Не предупреждайте меня, что это не должно быть сделано - в этом случае очень хорошо, рекомендуется и необходимо редактировать историю (я хочу вернуть пространство в онлайн-репо). Кроме того - я не очень беспокоюсь о том, как принудительно нажать - я хочу, чтобы более простой/чистый способ заменить удаленную фиксацию HEAD другим.
Все начинается с клонирования...
Ответы
Ответ 1
Кроме того, чтобы получить удаленные администраторы репо, чтобы вы могли перемотать ветвь "master", см. http://help.github.com/remove-sensitive-data/ и, в частности, раздел "очистка и восстановление пространства".
Чаще всего проще начинать с нового пульта, и удаленные админы удаляют старый полностью, в таких случаях, как ваш.: -)
Ответ 2
Вы можете использовать флаг -force в своем заявлении push, но это рискованно, если другие используют тот же репо. В противном случае вы можете обновить обратно на удаленную головку и использовать Git revert.