介绍和搜索
所以我认为我犯了一个严重的错误,我很担心。我已经解析了论坛上的超脱头脑,我已经接近找到答案了,但是场景太具体了,不适用于我所处的位置。如果您找到回答我问题的特定线程,请链接我。
例如:如何将分离的 HEAD 与 master/origin 协调?
那家伙已经做了git rebase -i,而我没有。我试过变基,但它没有解决我的问题。
小背景:
问题:
要使用工作代码访问旧提交,我做了(可能是错误的事情):
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 mastergit reset --hard HEAD~3根据此处的建议:检查旧提交并使其成为新提交问题:我如何将我的超然头与原点/大师调和?一旦和解,我是否需要git push --force或其他什么(特别是--force旗帜)?这个独立的头有工作,我读到我等待的时间越长,垃圾收集可能会来吃我丢失的分支。抱歉,我确实缺乏任何正式的 git 培训……我几乎准备好检查 origin master 然后重写代码。
先感谢您。
为什么 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仓库中工作时,我想在一个旧的提交( 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 的新手。
我所做的是:
我有:
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) 我在项目中添加了 2 个子模块,subA 和 subB,位于 externals/subA 和 externals/subB 中。
今天,另一位团队成员提交了他的代码,当它被拉取时,在git statusexternals/subA 和 externals/subB 中使用时,subA 和 subB 都显示分离头状态。
我先做了git submodule update,没有报告任何错误。我一次又一次地尝试,git submodule init但git submodule update它没有改变。
我们如何才能使子模块恢复同步?子模块出现这种情况的原因是什么?自我们开始以来,这是第一次出现问题。谢谢。
我想知道我是否在脚本中处于"HEAD detached"状态.
目前我解析输出,git status但我不喜欢这样做,因为我听说解析Git输出是一个不好的做法,这对人类意味着 - 我想要一个程序友好的界面来告诉我HEAD是否已经分离.我也不想手动查看.git/HEAD或解析git description或git branch.
有任何想法吗?
为什么git允许你承诺一个独立的头?有没有可以禁用它的预提交钩子?什么目的?许多新开发人员这样做,我想找到一种方法来禁用它.
我一直都处于独立状态。我不知道为什么,我也不知道它是什么。
每次尝试从该状态恢复时,我都会丢失一些文件(从我在分离头状态下进行的最后一次提交)。
是否可以完全避免这种状态,或者是设计使然?
我对 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)
在从部分被扔我。我看惯了at。这个提交指的是什么?这是 HEAD 在被移动到无分支提交之前的最后一个位置吗?就我而言,该提交位于子模块 reflog 中,但在HEAD@{7}. 这似乎不是 HEAD 的最后一个位置。但是因为这是父模块中中止合并的结果,因此可能无法追踪 HEAD 的运动。这是什么detached from提交通常指的是什么?
要添加到我的困惑,根据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 checkout mytag
Run Code Online (Sandbox Code Playgroud)
现在我处于分离的 HEAD 状态。
我做了一些有意义的修改。我想mybranch_deviated在本地和远程创建一个新分支,并将所有有意义的更改提交给它。怎么做?
我的 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 存储库时,我位于master 分支中。但我已经创建了一个远程开发分支。我跑git fetch origin develop。然后,我使用 git checkout develop它并切换到一个新的分支开发,如下所示:
它创建了当地新开发的分支机构。如何切换到我的原始开发分支远程分支。如果我使用git checkout origin/develop。它是这样的:
如何切换到远程开发分支?
我有一个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然后删除它