Ответ 1
Вы можете просто использовать флаг -f
в git (это стандартный флаг git), чтобы принудительно нажать. См. Примечание в центре Dev Git doc. Это будет перезаписывать те изменения, которые вы сделали на Heroku, очевидно.
Ситуация такова:
У нас есть проект, который сохраняется на Github и развертывает его в Heroku, у которого есть свой мини- Git. Некоторые изменения были применены непосредственно к Heroku (клонированный репозиторий из Heroku, внесены изменения и нажали). Между тем мастер-ветвь на Github также получила некоторые изменения.
Теперь, когда я хочу нажать главный репозиторий на Heroku, нажатие не выполняется, потому что фиксация на Heroku не синхронизирована с локальными коммитами.
Я не хочу сливаться с изменениями на Heroku - я просто хочу, чтобы они исчезли.
Есть ли способ очистить репозиторий git от Heroku, чтобы с самого начала нажать локальное репо?
Я не хочу уничтожать приложение и воссоздавать его снова, потому что у него есть платные сервисы, и я просто соавтор.
Вы можете просто использовать флаг -f
в git (это стандартный флаг git), чтобы принудительно нажать. См. Примечание в центре Dev Git doc. Это будет перезаписывать те изменения, которые вы сделали на Heroku, очевидно.
Установите плагин Heroku Repo и используйте его для reset удаленного репозитория git:
> cd /my-project/
> heroku plugins:install heroku-repo
> heroku repo:reset
Это удаляет репо git на сервере. Чтобы повторно инициализировать локальный репозиторий git, удалите его и заново создайте.
> cd /my-project/
> rm -rf .git
> git init
> heroku git:remote -a <appname>
Где <appname>
- имя вашего приложения в heroku.
2 репозитория (локальный и удаленный) теперь должны быть пустым и синхронизироваться.
Попробуйте перейти https://github.com/heroku/heroku-repo и использовать этот плагин для удаленной очистки.
Если ваш импульс Heroku терпит неудачу, потому что он не является быстрым фиксатором, и вы не пытаетесь сделать что-то смешное в своей истории, это очень просто:
Объедините свой другой репозиторий в свой локальный клон Heroku, используя рекурсивную стратегию с опцией стратегии "их".
git merge -X theirs remotes/origin/master
Нажмите с параметром --force
, чтобы сделать фиксацию без быстрой пересылки в ваш восходящий репозиторий Heroku.
С другой стороны, если вы действительно пытаетесь очистить историю, у вас есть другие варианты.
Удалите все, кроме первого, из вашей истории (проще всего).
git reset --hard $(git log --pretty=oneline | tail -n1 | cut -d ' ' -f1)
git push --force
Лично я бы рекомендовал сохранить вашу историю и решить проблему с быстрым переходом в качестве передовой практики, но у вас наверняка есть варианты, если вы хотите агрессивно изменить свою историю. Git является очень гибким в этом отношении.
Вы также можете просто использовать систему управления версиями приложения heroku. Перейдя к "Деятельности", у вас есть полная история проекта: откат к первой активности и репо должны быть полностью очищены, возвращаясь к состоянию, когда приложение было первоначально создано на Heroku.