Подтвердить что ты не робот

Git вернуть последнюю фиксацию в герою

Я сделал 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.

Я понимаю проблему. Как мне продолжить? Как я могу отменить и последнее совершение герою? (Я предполагаю, что это лучшее решение)

4b9b3361

Ответ 1

Если вы скорректировали локальную фиксацию, вам может понадобиться git push с опцией -f, чтобы принудительно включить фиксацию.

Кроме того, вы можете захотеть взглянуть на релизы Heroku, которые тоже могут помочь.

Ответ 2

От http://devcenter.heroku.com/articles/releases#rollback

Используйте команду отката для возврата к последней версии:

$ heroku rollback
Rolled back to v51

Вы можете указать другой релиз для таргетинга:

$ heroku rollback v40
Rolled back to v40

Ответ 3

Учитывая, что вы уже нажали на другие (публичные?) репозитории, лучший способ исправить это, вероятно, для того, чтобы отменить git reset локально, затем выполните git revert для создания нового коммита, который отменяет эффекты плохой фиксации. Затем снова нажмите все. Итак, шаг за шагом:

  • Итак, сначала git reset --hard origin/master или git reset --hard heroku/master (или независимо от того, какая ветка отслеживания вашего героя вызывается), чтобы вернуть локальную master обратно плохую фиксацию. Это сдует любые выдающиеся изменения в вашей рабочей копии, поэтому будьте осторожны.

  • Затем git revert HEAD создать новый коммит (он предложит вам сообщение о фиксации).

  • Затем нажмите, как обычно.

Ответ 4

Вот что я сделал. Во-первых, я создал новую ветку со старой фиксацией:

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