然而,我最终意识到我在这个过程中打破了一些测试没有发现的东西。
最后我决定提交#5,然后慢慢地重新做每次提交的dev,并不断地调整它以确保它不会再次引发bug。现在我基本上回到了提交#10,但做了一些改变以防止bug的发生。
现在我想用我的修改创建11号提交。但是当我试图推到master时,我得到
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.
当我执行git status
时,我看到HEAD detached from 4a74ac3
7条答案
按热度按时间ryoqjall1#
但是当我试着推到大师的时候我得到了
fatal: You are not currently on a branch. To push the history leading to the current (detached HEAD)
这是意料之中的事
在分离状态下工作是不应该的,除非你是故意的,我怀疑你是故意的。你应该把
master
分支恢复到那个提交,或者在交互模式下执行一个git rebase
,这样你就可以根据需要重新散列提交了。也就是说,如果您确定处于分离状态的
master
版本是您 * 真正 * 想要保留的版本,那么您可以通过强制将分支推送到远程来绕过non-fast-forward
错误:但是,如果强制推送,则可能会给 checkout 该分支的所有其他用户带来问题。一个风险较小的解决方案是从分离的HEAD创建一个临时分支,然后将该分支合并到
master
:eoxn13cs2#
你确定你真的在一个分支中吗?使用
git branch
并检查你是否在一个分支中。如果不是,只需要git checkout branch-name-you-want
,然后git push
就可以了!2sbarzqh3#
git push
只允许你快进远程分支。这意味着你要推送的提交必须是远程分支的后代。因为你编辑了5个之后的提交,所以你没有后代,而更多的是表亲。如果你想覆盖分支,你可以给予git push --force
,但是如果其他人在当前主分支上做了自己的修改,他们将无法再提取分支。此外,如果其他人在您之前推入master,他们所做的变更将会遗失。一般而言,如果您不是唯一使用分支的人,就不要胁迫推入。xu3bshqb4#
您可以创建一个新分支,也可以将这些更改合并到以前的分支中
flseospp5#
如果要推送到新存储库,可以使用
main
这里是一个新的分支,当你的目标仓库是空的时候会创建这个分支。p1tboqfb6#
如果你不想重定基数的话,这个应该可以
现在你好去;- )
dxpyg8gm7#
您可以创建一个新的分支来保留您创建的提交,然后将它们推送到远程。
使用此命令:
git开关-c< new-branch-name >