Git结帐标记导致“当前不在任何分支上”

时间:2017-10-30 10:41:44

标签: git version-control git-tag

我通过标签结帐遇到了一个非常奇怪的问题。在将最新的更改从开发合并到master之后,我从master创建了一个标记并推送到远程。然后生产拉动成功,但当我签出标签并运行git状态我得到

  

目前不在任何分支上

在我的本地计算机上,git status正确显示头部在特定标记处已分离,例如1.0.0

git branch -v
* (no branch) ca992e2 Example commit message
develop     e945a50 Example commit message
master      ca992e2 Example commit message

任何提示?

2 个答案:

答案 0 :(得分:6)

这是一种“正常”行为。 通过签出标记,可以将本地存储库的HEAD定位到标记。你不再是一个分支。如果您不打算进行任何更改,这无关紧要

如果您需要进行更改,我会看到两个选项:

  1. 您希望在应用标记时继续处理您所在的分支。然后你应该检查那个分支。

  2. 您需要根据您创建的标记执行修复,并且该修复不能位于您最初用于创建标记的分支上。然后,您需要从该标记开始创建一个新分支。 然后命令是:

      

    git checkout -b new-branch tag

答案 1 :(得分:1)

接受的答案是正确的(我已经对它进行了投票)。要详细说明最后一点 - 一个Git,一个正面的古老的1.7,只是说你有一个超级的HEAD,但更现代的一个,2.13,说你有一个detached at v1.0.0的头 - {{1多年来,在这两个版本之间,命令获得了许多非常有用和重要的功能增强。

目前还不清楚"何时离开"代码已进入,因为the release notes中未列出,但此处列出了有用的项目清单:

  • 1.7.1:git status了解了子模块
  • 1.7.2:git status可以在git status输出
  • 中包含分支名称
  • 1.7.3.5:-s -b学会了在路径名中引用不可打印的字符
  • 1.7.6:git status修复(如果您在脚本中使用它很重要)
  • 1.7.10.13:更多git status -zgit status --porcelain修正(再次针对脚本)
  • 1.7.11.3:git status -z(和git status本身)已修复以处理名为git diff的文件
  • 1.8.2:-在这些行动中学会了说哪个分支正在被分割或重新分配
  • 1.8.3:git status学会了报告处于git status的中间位置
  • 1.8.4:git revert了解了配置选项git statusstatus.branch
  • 1.8.5:status.short改进了几个报告:子模块,挑选和当前分支的状态(如果有的话)相对于它的上游
  • 2.4.0:git status了解git status,其-v -v / detached at已改进并与detached from
  • 同步
  • 2.5.0:git branch详细介绍了正在进行的互动式转型
  • 2.6.2:git status不再说无用的git status

"分离在"或"与"分离通过扫描HEAD detached at HEAD的reflog来计算状态,因此它不是100%可靠,具体取决于您在reflog中遇到的内容。它仍然非常有用。