Как заставить Heroku не настаивать на том, что мой локальный репозиторий Git находится «позади» и требовать слияния? - PullRequest
0 голосов
/ 06 мая 2018

Я все еще пытаюсь понять, как это произошло, но вот проблема.

У меня есть приложение. На GitHub есть главный репозиторий, и некоторые люди, работающие со мной, клонировали это. Я сделал то же самое на двух моих компьютерах. Я использую Heroku, чтобы иметь «разделяемый» прототип, на который все могут смотреть (я занимаюсь глубоким программированием и функциональностью; другие работают над большим количеством пользовательского интерфейса и т. Д.).

Я только что внес некоторые изменения и попытался сделать стандартный толчок для Heroku. Он отклонил его, сказав, что мой локальный репозиторий уже позади и нуждается в обновлении. | Но когда я смотрю на то, что он считает «впереди», это устаревший код.

Я еще не выяснил, как это произошло, но я подозреваю, что я использовал свой компьютер, которым пользуюсь редко, когда в последний раз делал толчок Героку. Я подозреваю, что я также не сделал толчок к основному репозиторию 'origin', а затем переключил компьютеры. Попутно мы все добавили много кода, и, вероятно, произошло то, что Heroku знает несколько коммитов, о которых нигде не говорится в ветке master, так как они решаются с помощью нового кода на компьютерах, отличных от того, который я делал для тех немногих меняется на. Другими словами, я думаю, что ничего из этого не произошло бы, если бы я несколько месяцев назад на компьютере, которым я редко пользуюсь, сначала сделал «git push origin master», «git push heroku master», но я этого не сделал, и это вся вода под мостом: моя текущая главная ветка, локально и в общем хранилище, имеет ядро, в котором мы нуждаемся / хотим.

Я попытался принять требование Heroku, чтобы я сделал «git pull», чтобы слить все это красиво, но по причинам, которые вы можете себе представить, это приводит к множеству конфликтов (очевидно, среди нас мы написали новый код, который исправил пробелы в несколько потерянных коммитов и перестановка структур каталогов, поэтому это огромный конфликт слияния, который он хочет, чтобы я разрешил.)

Вопрос заключается в следующем: как я могу настаивать на том, чтобы Heroku «забыла» о репозитории git, который у него есть, и просто принимала новый толчок ветки master к нему, не создавая заново все приложение Heroku с нуля?

1 Ответ

0 голосов
/ 06 мая 2018

Вы можете сделать git push --force heroku master, чтобы сбросить версию репозитория Heroku для репозитория «master» на ту же, что и локальная.

Эта команда деструктивна для сервера, поэтому лучше сначала выяснить, в чем отличие (т. Е. Почему нельзя выполнить ускоренную перемотку вперед). Например, вы предлагаете создать новый файл herokulaunch.sh, который находится только в репозитории Heroku, а не в вашем.

Чтобы выяснить, в чем отличие, вы можете сделать git log heroku/master и наблюдать за ним, чтобы увидеть, есть ли какие-нибудь полезные коммиты, которых у вас нет локально. Если есть что-то, что вы хотите сохранить (например, коммит с SHA abc123 ), вы можете использовать git cherry-pick abc123, чтобы принять этот коммит локально. Когда все хорошо, вы можете принудительно нажать.

В качестве хорошей меры вы также должны сделать резервную копию этой ветки Heroku для будущих расследований, прежде чем приступать к форсированию. Это так же просто, как git branch heroku-conflict heroku/master.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...