本文共 958 字,大约阅读时间需要 3 分钟。
有次工作中git切换分支时,不小心前面加了origin/,但是像往常一样没有注意,直接在新分支上修改代码,等到要提交时给出的提示是git detached HEAD,还说切换分支之前请确保代码不会丢失,所以此时是可能造成修改的代码丢失的。
首先说下 detached Head 的意义,就是处于游离状态,就是处于一个没有分支名字的分支,指向切换分支时的最新提交,也可以只想其他任意提交。处于detached 状态每次操作都会提示:
git detached HEAD 时给出的提示:
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 performing another checkout.If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:git checkout -b
大致翻译:
第一段:你当前在detached HEAD 状态。你能查看代码,修改并提交代码,能丢弃任何操作都不会影响其他分支。 但此时就会有个大问题,如果是不小心切换到这种状态,所有的改动在没有名字的分支上,如何把这些保存提交到真正需要的分支上。 第二段:你可以通过创建一个新分支来接受这些修改,步骤首先提交commit,然后新建一个分支指向commitid,此时就具有了本地分支,然后可以把这个分支提交到远端,或者切换分支之后其他分支可以merge提交。 (1)提交commit修改 , (2)git branch newBranch commitId, (3)git checkout 切换分支, (4)执行merge命令(git merge newBranch)。转载地址:http://rppei.baihongyu.com/