标签: git-detached-head

如何调和分离的头部和起源/大师?已经签出旧哈希

介绍和搜索

所以我认为我犯了一个严重的错误,我很担心。我已经解析了论坛上的超脱头脑,我已经接近找到答案了,但是场景太具体了,不适用于我所处的位置。如果您找到回答我问题的特定线程,请链接我。

例如:如何将分离的 HEAD 与 master/origin 协调?

那家伙已经做了git rebase -i,而我没有。我试过变基,但它没有解决我的问题。

小背景

  • 我是 git 新手;我只自己使用 git
  • 我拥有远程存储库
  • 需要旧代码集,这是时间敏感的问题
  • 我学习了一些编程,并在没有其他人编码的工作场所使用它(所以我不能完全寻求帮助)

问题:

要使用工作代码访问旧提交,我做了(可能是错误的事情):

git log
git checkout <hash-of-desired-old-commit>
Run Code Online (Sandbox Code Playgroud)

我继续完成代码。感谢上帝的版本控制!但是射击,为什么 git 这么复杂?我如何保存这项工作?我现在处于一个超脱的头脑中。Origin/Master 在未来的一些提交中最好全部删除。

我尝试过的

  • 将整个文件夹复制并粘贴到其他地方只是为了备份
  • git add -A跟着git commit -m "oh shit, detached head commit"git rebase master
  • git reset --hard HEAD~3根据此处的建议:检查旧提交并使其成为新提交

问题:我如何将我的超然头与原点/大师调和?一旦和解,我是否需要git push --force或其他什么(特别是--force旗帜)?这个独立的头有工作,我读到我等待的时间越长,垃圾收集可能会来吃我丢失的分支。抱歉,我确实缺乏任何正式的 git 培训……我几乎准备好检查 origin master 然后重写代码。

先感谢您。

git github git-detached-head

5
推荐指数
1
解决办法
2674
查看次数

为什么最近 git rebase -i squash 导致头部分离

为什么 git rebase -i 最近会导致头部分离?它曾经用交互式变基的结果来更新我当前的分支。如何获得交互式变基以停止进入分离的 HEAD?

在从远程存储库拉取之前,我总是使用 git rebase -i 来压缩我的提交,以简化处理 git pull 中的任何合并冲突。我不必解决可能多个提交的冲突,而只需解决一个提交。

我使用的示例命令

# git rebase -i <tip of public branch> <my latest commit>
git rebase -i 380647533da 82f5ee67bed
Run Code Online (Sandbox Code Playgroud)

在 vim 中编辑 rebase 交互后:

pick 3ec7c211c49 version1
s 82f5ee67bed some significant refactoring
Run Code Online (Sandbox Code Playgroud)

编辑并保存提交后的输出:

[detached HEAD ea50304796c] version1
 Date: Thu Jun 6 17:04:36 2019 -0400
 14 files changed, 213 insertions(+), 52 deletions(-)
 create mode 100644     some file
 create mode 100644     some file
 create mode 100644     some file
Successfully rebased …
Run Code Online (Sandbox Code Playgroud)

git git-interactive-rebase git-detached-head

5
推荐指数
1
解决办法
2522
查看次数

为什么在检查最近的提交后我有一个分离的 HEAD?

最近在一个git仓库中工作时,我想在一个旧的提交( 68cce45)处查看代码,所以我做了

git checkout 68cce45
Run Code Online (Sandbox Code Playgroud)

查看更改后,我想返回到存储库的当前版本并继续工作。由于2bcfd11是最近的提交,我做了

git checkout 2bcfd11
Run Code Online (Sandbox Code Playgroud)

然后我做了一些改变并做了

git add *
Run Code Online (Sandbox Code Playgroud)

进而

git status
Run Code Online (Sandbox Code Playgroud)

这给了我警告:HEAD detached at 2bcfd11

我糊涂了。如果我检出的最后一次提交是在几个版本之前,我可以理解为什么我会处于“分离的 HEAD 状态”。但是由于我检出的最后一次提交是存储库的最新版本,那么为什么我会处于分离的 HEAD 状态?HEAD 现在不是指向存储库的“顶部”吗?

git git-checkout git-detached-head

5
推荐指数
1
解决办法
2232
查看次数

如何从特定提交继续项目并修复 HEAD 分离问题?

我从我的项目中检出特定提交并从那里继续,希望该提交之后的更改将被删除,并且我检出的那个提交将是新的头。我提交了新的更改,但我无法推动它们。我还是 git 的新手。

我所做的是:

  1. git checkout commit_hash
  2. 编辑项目
  3. git commit -m "新变化"
  4. git push -u origin master

我有:

To https://github.com/myusername/project.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/miloradsimic/ISA16.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing …
Run Code Online (Sandbox Code Playgroud)

git version-control head git-detached-head

4
推荐指数
1
解决办法
4894
查看次数

Git 子模块分离头状态

我在项目中添加了 2 个子模块,subA 和 subB,位于 externals/subA 和 externals/subB 中。

今天,另一位团队成员提交了他的代码,当它被拉取时,在git statusexternals/subA 和 externals/subB 中使用时,subA 和 subB 都显示分离头状态。

我先做了git submodule update,没有报告任何错误。我一次又一次地尝试,git submodule initgit submodule update它没有改变。

我们如何才能使子模块恢复同步?子模块出现这种情况的原因是什么?自我们开始以来,这是第一次出现问题。谢谢。

git git-submodules git-detached-head

4
推荐指数
1
解决办法
6955
查看次数

以编程方式检查HEAD是否已分离?

我想知道我是否在脚本中处于"HEAD detached"状态.

目前我解析输出,git status但我不喜欢这样做,因为我听说解析Git输出是一个不好的做法,这对人类意味着 - 我想要一个程序友好的界面来告诉我HEAD是否已经分离.我也不想手动查看.git/HEAD或解析git descriptiongit branch.

有任何想法吗?

git git-detached-head

4
推荐指数
2
解决办法
283
查看次数

如何防止在分离的HEAD中提交

为什么git允许你承诺一个独立的头?有没有可以禁用它的预提交钩子?什么目的?许多新开发人员这样做,我想找到一种方法来禁用它.

git pre-commit-hook git-detached-head

3
推荐指数
1
解决办法
843
查看次数

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

我一直都处于独立状态。我不知道为什么,我也不知道它是什么。

每次尝试从该状态恢复时,我都会丢失一些文件(从我在分离头状态下进行的最后一次提交)。

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

git git-detached-head

2
推荐指数
2
解决办法
1048
查看次数

git HEAD 分离 *from* vs 分离 *at*

我对 git并不陌生。我知道分离的 HEAD 是什么,我可以签出一个新的分支来继续前进。但是今天我看到的是一条detached from消息而不是一条detached at消息。在尝试中止包含 2 个子模块的 repo 中的合并时,我的一个子模块陷入了这种状态:

so_is_my_nacho_cheese$ git status

HEAD detached from 9733eeb0
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)

问题 1:

部分被扔我。我看惯了at。这个提交指的是什么?这是 HEAD 在被移动到无分支提交之前的最后一个位置吗?就我而言,该提交位于子模块 reflog 中,但在HEAD@{7}. 这似乎不是 HEAD 的最后一个位置。但是因为这是父模块中中止合并的结果,因此可能无法追踪 HEAD 的运动。这是什么detached from提交通常指的是什么?

问题2:

要添加到我的困惑,根据git的日志,我的头在子模块的一个分支指向:

so_is_my_nacho_cheese$ git log --graph --oneline -n 5

* ba737d3b (HEAD, xdhmoore_pascal) Just to record pascal run
* 5b69ce96 Fix fine_tune_checkpoint_loading
* 21dc78b2 Just docker changes applied …
Run Code Online (Sandbox Code Playgroud)

git git-detached-head

2
推荐指数
1
解决办法
712
查看次数

如何将分离的 HEAD 中的更改提交到 git 中的新分支

我有一个标签,位于存储库的一个非常旧的修订版中。我已经检查过了

   git checkout mytag
Run Code Online (Sandbox Code Playgroud)

现在我处于分离的 HEAD 状态。

我做了一些有意义的修改。我想mybranch_deviated在本地和远程创建一个新分支,并将所有有意义的更改提交给它。怎么做?

git branch git-detached-head

1
推荐指数
1
解决办法
3449
查看次数

从分离的头创建分支后出现奇怪的分支名称

我的 Git 中出现了一个分离头的问题。我对之前的提交进行了检查。之后,我们做出了承诺。所以在我为此提交创建分支之后。

git checkout -b detached-head-after-gitlab-crush

所以在那之后,我做出了改变并承诺了改变。

但现在,当我写下git branch

* (detached from a71c5ea)
  detached-head-after-gitlab-crush
  master
Run Code Online (Sandbox Code Playgroud)

所以我想了解当前分支是什么以及它是如何创建的。

我如何对最后一个分支进行更改,而且我无法将当前分支推送到原点。

git log --all --decorate --oneline --graph

显示以下结果:

* 548af67 (HEAD) Images were changed, and issue with Printing Gate entry records
* be89a73 (origin/detached-head-after-gitlab-crush, detached-head-after-gitlab-c
* 6979cba Files before solving HEAD detached problem
* fb89a62 Rules added, made some changes which I don't remember
| *   d4183f3 (origin/master, origin/HEAD, master) Merged files
| |\
|/ /
| *   3c3cadc Merge branch …
Run Code Online (Sandbox Code Playgroud)

git git-branch git-detached-head

1
推荐指数
1
解决办法
648
查看次数

如何切换(或签出)到 Git 中现有的远程分支,而不面临分离的 HEAD

首先,当我克隆 Git 存储库时,我位于master 分支中。但我已经创建了一个远程开发分支。我跑git fetch origin develop。然后,我使用 git checkout develop它并切换到一个新的分支开发,如下所示:

在此输入图像描述

它创建了当地新开发的分支机构。如何切换到我的原始开发分支远程分支。如果我使用git checkout origin/develop。它是这样的:

在此输入图像描述

如何切换到远程开发分支?

git git-fetch git-checkout git-detached-head git-switch

1
推荐指数
1
解决办法
3万
查看次数

不能'重新附加'分离的HEAD git

我有一个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然后删除它

git branch github git-detached-head

0
推荐指数
1
解决办法
1191
查看次数