Ответ 1
Если вы скорректировали локальную фиксацию, вам может понадобиться git push
с опцией -f
, чтобы принудительно включить фиксацию.
Кроме того, вы можете захотеть взглянуть на релизы Heroku, которые тоже могут помочь.
Я сделал acommit и подтолкнул его к происхождению и герою
Тогда я понял, что это неправильно, поэтому я сделал
git reset --soft HEAD^
Но когда я нажимаю на Heroku Im, получая
To [email protected]:app.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:app.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
Я понимаю проблему. Как мне продолжить? Как я могу отменить и последнее совершение герою? (Я предполагаю, что это лучшее решение)
Если вы скорректировали локальную фиксацию, вам может понадобиться git push
с опцией -f
, чтобы принудительно включить фиксацию.
Кроме того, вы можете захотеть взглянуть на релизы Heroku, которые тоже могут помочь.
От http://devcenter.heroku.com/articles/releases#rollback
Используйте команду отката для возврата к последней версии:
$ heroku rollback
Rolled back to v51
Вы можете указать другой релиз для таргетинга:
$ heroku rollback v40
Rolled back to v40
Учитывая, что вы уже нажали на другие (публичные?) репозитории, лучший способ исправить это, вероятно, для того, чтобы отменить git reset
локально, затем выполните git revert
для создания нового коммита, который отменяет эффекты плохой фиксации. Затем снова нажмите все. Итак, шаг за шагом:
Итак, сначала git reset --hard origin/master
или git reset --hard heroku/master
(или независимо от того, какая ветка отслеживания вашего героя вызывается), чтобы вернуть локальную master
обратно плохую фиксацию. Это сдует любые выдающиеся изменения в вашей рабочей копии, поэтому будьте осторожны.
Затем git revert HEAD
создать новый коммит (он предложит вам сообщение о фиксации).
Затем нажмите, как обычно.
Вот что я сделал. Во-первых, я создал новую ветку со старой фиксацией:
git checkout -b old-rev <commit-id>
Затем я запустил push -f
старую ветку на локальном репо для мастера heroku:
git push -f heroku old-rev:master
Когда я закончил со старой версией и готов перейти к новой версии:
git checkout master
git push heroku master
git branch -d old-rev # deletes the old branch; warns if there will be data loss