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

Git нажмите мастер фатальный: вы в настоящее время не находитесь на ветке

Мастер - это сказать, что совершить # 10. Тем не менее, я понял, что я что-то сломал по пути, который не был пойман испытаниями.

В итоге я решил совершить # 5, а затем медленно переделал dev из каждой фиксации и постоянно настраивал ее, чтобы убедиться, что она не вызвала ошибку. Теперь я по существу вернулся к фиксации # 10, но с рядом изменений, которые предотвращают появление ошибки.

Теперь я хочу создать commit # 11, используя мои изменения. Но когда я пытаюсь добиться мастерства, я получаю

fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use

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

Что и следовало ожидать. Но как мне получить это, чтобы подтолкнуть к моей удаленной ветке?

Я попробовал git push origin HEAD:master, но потом получил следующее:

! [rejected]        HEAD -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/tomhammond/sample.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Когда я делаю a git status, я вижу HEAD detached from 4a74ac3

4b9b3361

Ответ 1

Но когда я пытаюсь нажать на мастер, я получаю

fatal: You are not currently on a branch. To push the history leading to the current (detached HEAD)

Что следует ожидать

Работа в отдельном состоянии не ожидается, если вы не намерены делать это, и я сомневаюсь в этом. Вместо того, чтобы проверять фиксацию # 5, вы должны либо вернуть ветвь master к этой фиксации, либо сделать git rebase в интерактивном режиме, где вы можете перефразировать коммиты, как хотите.

Если вы уверены, что версия master в отключенном состоянии - это то, что вы действительно хотите сохранить, то вы можете обойти ошибку non-fast-forward, принудительно нажав ветвь на пульт:

git push origin HEAD:master --force

Однако, если вы принудительно нажмете, вы рискуете вызвать проблемы для всех других пользователей, у которых эта ветка проверена. Менее рискованным решением было бы создать временную ветвь от отсоединенной HEAD, а затем объединить эту ветвь в master:

git branch temp-branch
git checkout master
git merge temp-branch
git push origin master

Ответ 2

git push позволит вам только переслать пульт. Это означает, что фиксация, которую вы пытаетесь нажать, должна быть потомком удаленной ветки. Поскольку вы отредактировали предыдущие фиксации после 5, у вас нет потомства, но больше двоюродного брата. Вы можете дать git push --force, если вы хотите перезаписать ветвь, но если другие люди внесли свои собственные изменения поверх текущего мастера, они больше не смогут вытащить ветку. Кроме того, если кто-то еще нажимает на мастера, прежде чем вы это сделаете, их изменения будут потеряны. Как правило, вы не хотите принудительно нажимать, если вы не единственный, использующий ветку.