Очистить репозиторий git на Heroku - программирование
Подтвердить что ты не робот

Очистить репозиторий git на Heroku

Ситуация такова:

У нас есть проект, который сохраняется на Github и развертывает его в Heroku, у которого есть свой мини- Git. Некоторые изменения были применены непосредственно к Heroku (клонированный репозиторий из Heroku, внесены изменения и нажали). Между тем мастер-ветвь на Github также получила некоторые изменения.

Теперь, когда я хочу нажать главный репозиторий на Heroku, нажатие не выполняется, потому что фиксация на Heroku не синхронизирована с локальными коммитами.

Я не хочу сливаться с изменениями на Heroku - я просто хочу, чтобы они исчезли.

Есть ли способ очистить репозиторий git от Heroku, чтобы с самого начала нажать локальное репо?

Я не хочу уничтожать приложение и воссоздавать его снова, потому что у него есть платные сервисы, и я просто соавтор.

4b9b3361

Ответ 1

Вы можете просто использовать флаг -f в git (это стандартный флаг git), чтобы принудительно нажать. См. Примечание в центре Dev Git doc. Это будет перезаписывать те изменения, которые вы сделали на Heroku, очевидно.

Ответ 2

Установите плагин 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 репозитория (локальный и удаленный) теперь должны быть пустым и синхронизироваться.

Ответ 4

Если ваш импульс Heroku терпит неудачу, потому что он не является быстрым фиксатором, и вы не пытаетесь сделать что-то смешное в своей истории, это очень просто:

  • Убедитесь, что ваш репозиторий не-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 -filter-branch.

Лично я бы рекомендовал сохранить вашу историю и решить проблему с быстрым переходом в качестве передовой практики, но у вас наверняка есть варианты, если вы хотите агрессивно изменить свою историю. Git является очень гибким в этом отношении.

Ответ 5

Вы также можете просто использовать систему управления версиями приложения heroku. Перейдя к "Деятельности", у вас есть полная история проекта: откат к первой активности и репо должны быть полностью очищены, возвращаясь к состоянию, когда приложение было первоначально создано на Heroku.