首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在分离头状态下的本地提交

在分离头状态下的本地提交
EN

Stack Overflow用户
提问于 2018-03-21 08:43:36
回答 2查看 250关注 0票数 1

我在一段时间前下载了一个git存储库,并继续在本地进行该工作。我正在做一些改变,偶尔也会在本地提交。我也没有推动任何改变。上一次尝试提交时,我发现了一条消息(在pyCharm中,但我想这是一条通用消息)。我不知道我做了什么来破坏我的存储库的混乱。

总之,这条信息是:

Git存储库...\PycharmProjects\tensorflow1\deeplab处于分离的HEAD状态。你可以环顾四周,做一些实验性的改变并提交给你,但是一定要检查一个分支,以免失去你的工作。否则,你可能会失去你的改变。

由于我不熟悉所有的行话,所以我对这个消息有点担心。据我所知,签出将为我提供一个可以使用的远程git存储库版本,对吗?我只是想有一个承诺的本地版本,所以结帐不是我想要的,对吗?

为了说明这一点,我不想获得任何新版本的原始git存储库。我只想用我的本地版本。所以,当地的承诺很适合我。

我的结论是:

  1. 我不应该签出任何版本
  2. 本地提交对于我的情况是安全的(即使在这种分离的头状态下)。

此外,如果以上是正确的,我如何避免这种分离的头部状态?我应该在本地git存储库中创建一个新的分支,并使用该分支吗?

编辑:

经过一些研究后,我发现我实际上已经对master (我应该从事的分支)和独立的头部状态进行了更改。因此,当我试图合并它们(下面的答案)时,发生了一些冲突。因为,我满足于我目前的状态(除了是一个独立的头),我恢复了合并:

代码语言:javascript
复制
git reset --hard HEAD

把我的代码保存在一个新的分支里。因为,没有丢失数据的风险,这个解决方案让我感到满意。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-21 08:54:55

分离的head状态仅仅意味着您签出了一个提交,而不是一个分支。

这是完全安全的,但大多数情况下,你没有理由处于这种状态。

摆脱这种状态的最好方法是运行git checkout -b <new-branch>,这允许您继续以一种正常的方式工作。

这将创建一个指向当前签出提交的分支指针,并将您的头移到此。

这会给你想要的情况。

似乎您来自一个基于客户机/服务器的版本控制系统,比如SVN,这使您的理解有点混乱。

我会尝试在https://try.github.io上运行这个教程,以便对Git有更好的感觉。

你正在运行的风险是,如果你检查历史上的一个新的点(即主人是什么?),那么你如何回到你现在工作的那个点(分离的头状态)?

通过git reflog是可能的(高级的,还不要研究这个命令)。但是,您也可能在提交被垃圾收集的情况下结束。(按标准计算,这需要60-90天左右,因此目前并不是一个问题)。

希望这能帮上忙。

TL;DR

在提交时创建一个分支,并对该分支进行工作。你是安全的。

票数 2
EN

Stack Overflow用户

发布于 2018-03-21 08:56:27

分离头状态意味着您不在任何分支中。这就是为什么你会收到这个错误信息。

如果要验证情况,请从终端/命令提示符中运行

代码语言:javascript
复制
git branch

你会发现你不在任何一个分支中。

  • 首先,确保你投入了你所有的工作,即使你是独立的。
  • 现在,您希望通过运行git branch temp_state来摆脱分离状态。这将创建一个新的分支,并保持您当前的更改。
  • 现在,运行git checkout master返回您应该使用的分支(如果它是主的,那么是主的)。
  • git merge temp_state将当前工作合并到正确的分支。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49401625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档