Git:如果我已经在分离的头状态下工作了多次提交,我会因为退出而失去什么吗?

t1rydlwq  于 2023-03-21  发布在  Git
关注(0)|答案(2)|浏览(166)

不久前,我 checkout 了上一次提交,然后又 checkout 了最近一次提交。当时我没有意识到这一点,但这让我处于分离的头状态。从那时起,我已经做了多次提交,仍然处于分离的头状态。我知道我可以通过执行git checkout <branch name>来摆脱这种状态,但如果我这样做,我会失去什么吗?

hivapdat

hivapdat1#

我可以通过执行git checkout <branch name>来摆脱这种状态,但是如果我这样做,我会失去什么吗?
是的,你会丢失所有在分离头模式下的提交,因为没有分支名称指向它们(你不会立即完全丢失它们,但它们会被销毁,访问它们会变得更加困难)。
因此,只需首先创建一个分支,以保留它们并为您提供引用它们的方法。

git switch -c temp

现在可以安全地检出branchname
实际上,在你的例子中,因为你的HEAD实际上是你希望你的分支所在的位置,你可以把你的分支名称移到你现在所在的位置。根本不需要temp

git switch -C branchname
cidc1ykv

cidc1ykv2#

我当时没有意识到这一点,但这让我处于一种超然的头脑状态
这就是为什么我提到最近的(Git 2.23, Q3 2019git switch命令。
你不能使用git switch <commit>并且 * 没有 * 意识到你最终处于分离的HEAD状态,因为这样的命令实际上会 * 失败 *,并显示错误消息:

fatal: a branch is expected, got <commitID>
If you want to detach HEAD at the commit, try again with the `--detach` option

更多信息请参见“Why did my Git repo enter a detached HEAD state?”。
使用--detach选项comes from Git 2.36 (Q2 2022)的提示。

相关问题