2017-01-05 4 views
0

Недавно я совершил hard reset в другой филиал, так как мне не удалось вернуть ветку master в рабочее состояние. Я сделал это с помощью команды:Git push origin master после выполнения жесткого сброса

git reset --hard masterBackupBeforeMerginDateDepositReceived04-01-2017 

(то есть в отрасли, где конкретная особенность, которую я сломала еще работал)

Затем я побежал:

git commit -m 'commit after getting adds/omits working again' 

проверив, что сломанный функция снова работала на моем локальном ветке master - это было, поэтому я захотел зафиксировать это снова, чтобы убедиться, что это рабочее состояние было сохранено.

Я побежал

git push origin master 

подтолкнуть master ветви к серверу снова, так что теперь установлена ​​функция должна снова начать работать на живую версию. Однако, после запуска этого push, Git отображается сообщение я не видел раньше:

To [email protected]:abc/xyz.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to '[email protected]:abc/xyz.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

кажется, что Git не устраивает меня проталкивания «старую» версию на сервер, когда есть «новый "версия в настоящее время на сервере ... Как я могу заставить сервер принять мою push из„старой“версии (которая в настоящее время master ветви на моей локальной машине?

ответ

0

просто добавить параметр силы -f

git push -f origin master

Git Push Documentation

+0

Я пробовал это, но Гит дал мне сообщение об ошибке: 'error: не удалось нажать некоторые ссылки на '[email protected]: moonhub/moon.git' Подсказка: обновления были отклонены, поскольку кончик вашего текущего ветка отстает Подсказка: ее удаленный аналог. Интегрируйте удаленные изменения (например, Подсказка: «git pull ...»), прежде чем снова нажать. Подсказка: см. «Замечание о быстрых форвардах» в «git push -help» для деталей. ', Поэтому кажется, что' push' не удалось ... какие-либо другие предложения? – someone2088

+0

Могу ли я просто заменить «master» другой локальной ветвью, а затем нажать это? Как мне это сделать? – someone2088

+0

параметр '-f' должен разрешить это сообщение. Я не знаю, почему вы это понимаете. – Rafael

0

Если вы используете сброс, а затем принудительно нажимаете, это может испортить других людей, которые вытащили версию, которая вам не нравится.

После того, как сломанная версия была перенесена на дистанционное репо, лучше всего восстановить с помощью вернуть вместо сброса.

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

Например

git revert HEAD 

добавят новые изменения, которые отменят действие самого последней фиксации. См. Документацию о возврате для получения более подробной информации об отмене нескольких коммитов.

+0

Спасибо за ваш ответ. Я попытался сделать 'git revert 36ceff5f071b4c45f56a6c4bca523d0e9b5c1bc8', т. Е. К предыдущему фиксации, но он дал мне ошибку, заявив, что он не может вернуться:' error: не удалось вернуть 36ceff5 ... dateDepositReceived sticks после изменения значения депозита Подсказка: после разрешения конфликты, отметьте исправленные пути Подсказка: с помощью «git add » или «git rm » Подсказка: и зафиксировать результат с помощью «git commit» – someone2088

+0

У меня есть еще одна ветка, в которой функция все еще работает. Могу ли я просто замените ветку 'master' этой другой ветвью? Как мне это сделать? – someone2088

+0

Вы можете сбросить локальную ветвь мастера в рабочую версию с помощью команды сброса. например мастер проверки, а затем выполнить git reset --hard good-branch-name. Затем вы должны использовать опцию -f, упомянутую выше Рафаэлем. Однако, если другие пользователи вытащили плохую версию, тогда их репозиции будут синхронизированы, и они не смогут делать изменения, которые они делают. Существуют ли другие пользователи, использующие эту ветку? –

0

Если вы хотите надавить локальную ветку на удаленную главную ветвь, вы можете попробовать git push -f origin branchx:master.

Если вы уже переименовали локальный ветвь в master, вы можете использовать git push -f origin master.

Смежные вопросы