git 饭桶催主人致命:您当前不在分支上

qhhrdooz  于 2022-11-20  发布在  Git
关注(0)|答案(7)|浏览(644)

然而,我最终意识到我在这个过程中打破了一些测试没有发现的东西。
最后我决定提交#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

ryoqjall

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错误:

git push origin HEAD:master --force

但是,如果强制推送,则可能会给 checkout 该分支的所有其他用户带来问题。一个风险较小的解决方案是从分离的HEAD创建一个临时分支,然后将该分支合并到master

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

eoxn13cs2#

你确定你真的在一个分支中吗?使用git branch并检查你是否在一个分支中。如果不是,只需要git checkout branch-name-you-want,然后git push就可以了!

2sbarzqh

2sbarzqh3#

git push只允许你快进远程分支。这意味着你要推送的提交必须是远程分支的后代。因为你编辑了5个之后的提交,所以你没有后代,而更多的是表亲。如果你想覆盖分支,你可以给予git push --force,但是如果其他人在当前主分支上做了自己的修改,他们将无法再提取分支。此外,如果其他人在您之前推入master,他们所做的变更将会遗失。一般而言,如果您不是唯一使用分支的人,就不要胁迫推入。

xu3bshqb

xu3bshqb4#

您可以创建一个新分支,也可以将这些更改合并到以前的分支中

git checkout -b newBranch 
git checkout previousBranch
git merge newBranch
git push origin previousBranch
git branch -d previousBranch
flseospp

flseospp5#

如果要推送到新存储库,可以使用

git push origin HEAD:refs/heads/main --force

main这里是一个新的分支,当你的目标仓库是空的时候会创建这个分支。

p1tboqfb

p1tboqfb6#

如果你不想重定基数的话,这个应该可以

git config pull.rebase false 
git pull origin master
git add .
git commit -m "Your Commit message"
git push

现在你好去;- )

dxpyg8gm

dxpyg8gm7#

您可以创建一个新的分支来保留您创建的提交,然后将它们推送到远程。
使用此命令:
git开关-c< new-branch-name >

相关问题