【问题标题】:What does the Git error "You are not currently on a branch" mean?Git错误“您当前不在分支上”是什么意思?
【发布时间】:2020-10-15 11:42:31
【问题描述】:

我是 Git 新手,我想我不知道自己在做什么。

我正在编辑一堆文件,包括新文件。由于有很多更改,我想在失去工作之前提交并推送它们。

所以我用了:

git add .
git commit -m "Blablabla"

答案如下:

[detached HEAD b5c9786] Blablabla
 29 files changed, 794 insertions(+), 265 deletions(-)

然后:

git push

有了答案

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

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

发现上次拉取时忘记回特性分支,所以切换到特性分支。

git branch feature

这显然加载了上次推送后的状态。

在我恐慌并做一些愚蠢的事情之前,我的最后一次提交应该在本地的 .git 文件夹中的某个地方,对吧?

我有以下文件:

COMMIT_EDITMSG
HEAD
config
hooks
info
objects
refs
FETCH_HEAD
ORIG_HEAD
description
index
logs
packed-refs

COMMIT_EDITMSGHEAD 在我最后一次提交前后有时间戳。

【问题讨论】:

  • 哈哈哈!!!我喜欢你的帖子。一切都在 Git 本地更改中可用。 git 最好的部分是你永远不会丢失任何东西。
  • 这能回答你的问题吗? What to do with commit made in a detached head 特别看this 回复。
  • 感谢您的回复。我已经离开了分离的分支,我不知道如何回到那个分离的分支。如果我做位分支,我只有 master 和 feature,而不是分离的。
  • 顺便说一句,“有很多更改,我想在失去工作之前提交并推送它们”并不是 Git 的真正用途(尽管它可能适用于某些用例) .您实际上是在使用 Git 作为备份解决方案,而擅长的是版本控制。您的提交应该以原子为目标,这意味着您每次进行单个“单元”更改时都要提交。所以例如如果你修改了两个不相关的函数,它们都应该出现在各自的提交中。通过这种方式,您可以判断哪个提交更改了哪些内容,并在需要时轻松恢复任何“单元”的任何版本。

标签: git


【解决方案1】:

我已经离开了分离的分支,我不知道如何回到那个分离的分支

这就是git reflog 的用武之地。

如果您在离开分离的 HEAD 之前已提交,您将在 reflog 中找到您的提交。
然后你可以git cherry-pick它,并将它应用到你当前的分支上。

【讨论】:

  • 非常感谢,正是我需要的!我不知道 reflog,这很方便!
猜你喜欢
  • 2010-10-18
  • 2010-10-25
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
相关资源
最近更新 更多