Force Push git не работает после команды сброса - PullRequest
0 голосов
/ 23 июня 2019

Я проверил, используя это

get checkout 586c90b5da800dbc322c097924bb6f80b6d9d5e5 

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

git reset --hard  586c90b5da800dbc322c097924bb6f80b6d9d5e5 

Теперь, если я сделаю

git push

, он скажет

fatal: Вы в данный момент не находитесь на ветке.Чтобы протолкнуть историю, ведущую к текущему состоянию (отсоединенного HEAD) сейчас, используйте

git push origin HEAD:<name-of-remote-branch>

, если я сделаю

git push origin header master 

, там написано

ошибка: заголовок src refspec не совпадает ни с одним.ошибка: не удалось подтолкнуть некоторые ссылки на 'https://github.com/something/somerepo/

, и если я сделаю

git push origin master -f

, он говорит, что все обновлено.

Как я могу протолкнуть мою текущую голову, из которой я сделал несколько изменений в моем git-репо (также я уже сделал git reset --hard 586c90b5da800dbc322c097924bb6f80b6d9d5e5)

1 Ответ

1 голос
/ 23 июня 2019

Ваша первая команда оформления заказа переводит вас в состояние «отдельная голова» - вы находитесь в коммите, но там нет ветки («головы»).Это означает, что любые сделанные вами коммиты находятся на неназванной ветке.Как правило, это не очень хороший способ работы, хотя он и возможен.

Затем вы сделали git reset --hard назад для этого коммита, но поскольку указатель ветки отсутствует, голова не была перемещена.Ваш рабочий режиссер вернулся, чтобы совершить 586c90, но это все.Ваши коммиты после этого все еще существуют, но ничто не указывает на них, так что в конечном итоге они будут собираться мусором.Обратите внимание, что вы все еще находитесь в состоянии «отсоединенная голова».

Теперь вы пытаетесь сделать толчок, но вы не находитесь на ветке.Вы не можете нажать без названия ветви;вы будете только отправлять безымянные коммиты на удаленный сервер, и в конечном итоге они тоже получат GCed, поскольку на них ничего не указывает.

Что вам следует сделать, это создать имя ветви - либо в 586c90, либона кончике ваших коммитов (используйте git log -n10 --all, чтобы увидеть все головы, и / или прокрутите окно вашей оболочки, чтобы увидеть идентификатор последнего коммита, или используйте git reflog, чтобы увидеть идентификатор коммита, где вы сбросили его обратно до 586c90).git checkout -b new-branch должен это сделать.Если у вас есть имя ветви, вы можете отправить эту ветку на свой пульт.

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