【发布时间】:2021-12-14 01:52:17
【问题描述】:
我对 git 比较陌生。
问题:只是想将我的远程主分支与合并分支合并。
我想将我的远程主分支与我正在处理的合并分支同步:合并分支在主分支后面有 80 个提交。由于某种原因,我遇到了一些冲突,自动合并失败。
然后我尝试切换到我的远程主分支(git checkout origin/main),它也失败了,建议我先解决冲突。我决定简单地回到之前的提交,为此我使用了:
git reset --hard *commit id*
然后我删除了我的合并分支,并继续从远程主分支 (origin/main) 创建一个新的合并分支。这就是问题的开始。我写
git checkout origin/main
我收到了这个
Note: switching to 'origin/main'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at *commit id* *Description*
我尽我所能,阅读文章,阅读 stackoverflow 问题,甚至删除并克隆了我的本地存储库,但不知何故无法重新附加 HEAD 到远程分支,如果你可以。
这里有什么我遗漏的吗?我想要的只是使用 git checkout origin/main 它应该指向分支而不是特定的提交 id。
我们不胜感激。自过去 5 小时以来一直在努力解决这个问题。
【问题讨论】:
-
不能签出远程分支,只能签出他们引用的提交。这就是为什么你最终处于分离的头部状态。您没有签出
origin/main,而是签出了它引用的提交。相反,请查看链接到远程分支的 localmain分支,然后根据您的需要移动它。然后稍后进行“强制推送”以强制更新远程分支以匹配。 注意!绝对确保您知道自己在这里做什么,否则您可能会从远程删除您不想删除的提交! -
所以根据我的理解,如果我必须推动改变,我应该如此有力地向前推进?还是我应该尝试常规的
git push并且它会起作用?这会让我的 HEAD 指向分支而不是提交吗? -
你说你读过文章,SO,等等。 git 的建议不起作用
git switch -c <new-branch-name>。如果是这样,错误是什么。 -
我现在明白你的评论了。分离 HEAD 的概念起初令人困惑,感谢您将其清除。 @RenéLink 没有错误。 git checkout origin/main 指向它引用的提交,而不是我认为是“错误”的分支,而它只是一个正常状态。谢谢大家的澄清!
标签: git github version-control git-branch