lmo*_*523 0 git branch github git-detached-head
我有一个bug-fix被另一个分支切掉的分支develop
在将我的更改合并bug-fix到之后develop,我通过github删除了分支,但是我相信当我删除它时我仍然被检入分支.
我在分支中也有一个未跟踪的文件 bug-fix
之后bug-fix假想删除我检查了出来develop,看见HEAD detached at develop
这是我试图修复分离头的一切:
1)首先,bug-fix当我运行时,被删除但不再出现在github上的分支仍然显示出来git branch
我尝试git fetch更新它.还是出现了
2)我签出bug-fix并删除了未跟踪的文件
3)我尝试创建一个新分支temp然后删除它
如果您看到文字文本字符串:
Run Code Online (Sandbox Code Playgroud)HEAD detached at develop
(例如,在git status输出),这意味着该名称develop是不是分支.(更确切地说,它不是分支名称 - 术语"分支"在Git中是模棱两可的.请参阅"分支"究竟是什么意思?)
例如,在Git的这个Git存储库中,如果我运行:
$ git checkout v2.10.0
Note: checking out 'v2.10.0'.
[snip]
HEAD is now at 6ebdac1... Git 2.10
$ git status
HEAD detached at v2.10.0
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)
这是因为名称v2.10.0是标签,而不是分支.
为了回到master(这是一个分支名称)我只是:
$ git checkout master
Previous HEAD position was 6ebdac1... Git 2.10
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
Run Code Online (Sandbox Code Playgroud)
从长远来看,Git中的分支名称确实不是很重要.在短期内(当你正在工作时)它们是重要且有用的,但最终是一个分支fix-bug-1234或者test-new-feature要么工作,并且被合并到一个长期的开发或发布分支中,因此被删除,或者结果是失败并且要么被完全删除,要么"忽略合并"以将其作为死角终止,然后删除其名称.
在Git中,唯一真正重要的是提交本身.
分支名称只是用作查找提交的方式.标签名称也是如此.每个名称都允许Git找到一个提交 - 名称存储像丑陋的大丑陋6ebdac1...- 并且提交本身让Git找到之前的提交.
分支名称和标记名称之间的主要区别在于分支名称应该移动,实际上,当您在分支上进行新的提交时,它将自动移动.为此,将您"放在"分支上,以便Git知道在运行时移动分支.git checkout branch-namegit commit
任何其他名称,Git主要将其视为原始哈希ID的名称.这些给你一个"独立的HEAD".出于git status目的,Git试图记住您用于进入这个"分离的HEAD"状态的名称.但这才是真正重要的ID.
删除分支名称时,提交本身会暂停一段时间 - 通常至少30天.你可以在Git的"reflogs"中找到他们的ID.这对屁股来说是一种痛苦,因为如果你跑步,git reflog你会得到很多难以搜索的东西.但提交仍在那里.你只需要找到你关心的那个(使用,例如,git show 08bb350看到提交08bb350)并"复活"它们:
$ git branch zombie 08bb350
Run Code Online (Sandbox Code Playgroud)
例如,如果您想要作为分支返回的提交是08bb350.
| 归档时间: |
|
| 查看次数: |
1191 次 |
| 最近记录: |