我通过标签结帐遇到了一个非常奇怪的问题。在将最新的更改从开发合并到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
任何提示?
答案 0 :(得分:6)
这是一种“正常”行为。 通过签出标记,可以将本地存储库的HEAD定位到标记。你不再是一个分支。如果您不打算进行任何更改,这无关紧要
如果您需要进行更改,我会看到两个选项:
您希望在应用标记时继续处理您所在的分支。然后你应该检查那个分支。
您需要根据您创建的标记执行修复,并且该修复不能位于您最初用于创建标记的分支上。然后,您需要从该标记开始创建一个新分支。 然后命令是:
git checkout -b new-branch tag
答案 1 :(得分:1)
接受的答案是正确的(我已经对它进行了投票)。要详细说明最后一点 - 一个Git,一个正面的古老的1.7,只是说你有一个超级的HEAD,但更现代的一个,2.13,说你有一个detached at v1.0.0
的头 - {{1多年来,在这两个版本之间,命令获得了许多非常有用和重要的功能增强。
目前还不清楚"何时离开"代码已进入,因为the release notes中未列出,但此处列出了有用的项目清单:
git status
了解了子模块git status
可以在git status
输出-s -b
学会了在路径名中引用不可打印的字符git status
修复(如果您在脚本中使用它很重要)git status -z
和git status --porcelain
修正(再次针对脚本)git status -z
(和git status
本身)已修复以处理名为git diff
的文件-
在这些行动中学会了说哪个分支正在被分割或重新分配git status
学会了报告处于git status
的中间位置git revert
了解了配置选项git status
和status.branch
status.short
改进了几个报告:子模块,挑选和当前分支的状态(如果有的话)相对于它的上游git status
了解git status
,其-v -v
/ detached at
已改进并与detached from
git branch
详细介绍了正在进行的互动式转型git status
不再说无用的git status
"分离在"或"与"分离通过扫描HEAD detached at HEAD
的reflog来计算状态,因此它不是100%可靠,具体取决于您在reflog中遇到的内容。它仍然非常有用。