gpt4 book ai didi

git - 如何避免在 git 中进入分离的头部状态?

转载 作者:太空狗 更新时间:2023-10-29 14:26:33 24 4
gpt4 key购买 nike

我一直处于超然状态。我不知道为什么,也不知道它是什么。

每次我试图从这种状态中恢复时,我都会丢失一些文件(来自上次我在分离头状态下所做的提交)。

是否可以完全避免这种状态,或者是设计使然?

最佳答案

Detached head state 存在于 git 中,通常无法关闭。只有当你在克隆你的存储库之后,做这样的事情时,你才能进入分离的头部状态

git checkout $specific_commit

例如,如果您位于指定分支的顶端 master

#1 -> #2 -> #3
^
master
^
HEAD

你也是

git checkout HEAD~

这是在 HEAD 当前指向的位置之前提交的。然后你将处于以下状态

#1 -> #2 -> #3
^ ^
| master
|
HEAD

从这一点开始,您处于分离的 head 状态,即 HEAD 指向特定的提交而不是分支标签。在此之前,HEAD 指向分支标签 master ,它又指向特定的提交(分支的尖端)。现在,无论您提交什么,它们都将位于没有分支标签(即引用)的单独分支上。正在运行 git branch会告诉你是否处于分离的头部状态。

$ git branch
* (detached from 60e425a)
master

注意星星* ,表示您当前的分支。如果您现在进行新提交,git repo 将如下所示。

#1 -> #2 -> #3
| ^
| master
|
\----> #5
^
HEAD

如果您现在通过执行 git checkout master 切换回 master然后HEAD将切换master和创建提交时创建的分支 #5将不再有任何标签,即导航到提交的符号引用 #5 .这意味着您的提交实际上丢失了。

因此您有两个选择。

  1. 如果你不想以分离的头状态结束,那就不要做 git checkout $specific_commit .始终停留在同名分支的顶端,例如 master .您可以通过运行 git branch 来验证这一点.
  2. 如果您确实发现自己处于分离的头脑状态,并且您可能已经做出不想“松散”的提交,那么,正如上面建议的 Flows,您需要创建新的像这样的分支标签/引用

    git checkout -b myNewBranch

这将使您的存储库看起来像这样

#1 -> #2 -> #3
| ^
| master
|
\----> #5
^
myNewBranch
^
HEAD

然后如果你回到master您始终可以导航回提交 #5以及通过执行 git checkout myNewBranch 在该分支上的所有后续提交.

关于git - 如何避免在 git 中进入分离的头部状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37512333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com